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
  17 extern "C" {
  18 #endif
  19 
  20 struct _xsltCompMatch;
  21 
  22 /**
  23  * xsltNumberData:
  24  *
  25  * This data structure is just a wrapper to pass xsl:number data in.
  26  */
  27 typedef struct _xsltNumberData xsltNumberData;
  28 typedef xsltNumberData *xsltNumberDataPtr;
  29 
  30 struct _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  */
  55 typedef struct _xsltFormatNumberInfo xsltFormatNumberInfo;
  56 typedef xsltFormatNumberInfo *xsltFormatNumberInfoPtr;
  57 
  58 struct _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__ */