1/*
2 * Summary: Implementation of the XSLT number functions
3 * Description: Implementation of the XSLT number functions
4 *
5 * Copy: See Copyright for the status of this software.
6 *
7 * Author: Bjorn Reese <breese@users.sourceforge.net> and Daniel Veillard
8 */
9
10#ifndef __XML_XSLT_NUMBERSINTERNALS_H__
11#define __XML_XSLT_NUMBERSINTERNALS_H__
12
13#include <libxml/tree.h>
14#include "xsltexports.h"
15
16#ifdef __cplusplus
17extern "C" {
18#endif
19
20struct _xsltCompMatch;
21
22/**
23 * xsltNumberData:
24 *
25 * This data structure is just a wrapper to pass xsl:number data in.
26 */
27typedef struct _xsltNumberData xsltNumberData;
28typedef xsltNumberData *xsltNumberDataPtr;
29
30struct _xsltNumberData {
31 const xmlChar *level;
32 const xmlChar *count;
33 const xmlChar *from;
34 const xmlChar *value;
35 const xmlChar *format;
36 int has_format;
37 int digitsPerGroup;
38 int groupingCharacter;
39 int groupingCharacterLen;
40 xmlDocPtr doc;
41 xmlNodePtr node;
42 struct _xsltCompMatch *countPat;
43 struct _xsltCompMatch *fromPat;
44
45 /*
46 * accelerators
47 */
48};
49
50/**
51 * xsltFormatNumberInfo,:
52 *
53 * This data structure lists the various parameters needed to format numbers.
54 */
55typedef struct _xsltFormatNumberInfo xsltFormatNumberInfo;
56typedef xsltFormatNumberInfo *xsltFormatNumberInfoPtr;
57
58struct _xsltFormatNumberInfo {
59 int integer_hash; /* Number of '#' in integer part */
60 int integer_digits; /* Number of '0' in integer part */
61 int frac_digits; /* Number of '0' in fractional part */
62 int frac_hash; /* Number of '#' in fractional part */
63 int group; /* Number of chars per display 'group' */
64 int multiplier; /* Scaling for percent or permille */
65 char add_decimal; /* Flag for whether decimal point appears in pattern */
66 char is_multiplier_set; /* Flag to catch multiple occurences of percent/permille */
67 char is_negative_pattern;/* Flag for processing -ve prefix/suffix */
68};
69
70#ifdef __cplusplus
71}
72#endif
73#endif /* __XML_XSLT_NUMBERSINTERNALS_H__ */
74