15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Summary: Implementation of the XSLT number functions
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Description: Implementation of the XSLT number functions
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copy: See Copyright for the status of this software.
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Author: Bjorn Reese <breese@users.sourceforge.net> and Daniel Veillard
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef __XML_XSLT_NUMBERSINTERNALS_H__
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define __XML_XSLT_NUMBERSINTERNALS_H__
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/tree.h>
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "xsltexports.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" {
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltNumberData:
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This data structure is just a wrapper to pass xsl:number data in.
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltNumberData xsltNumberData;
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltNumberData *xsltNumberDataPtr;
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltNumberData {
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *level;
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *count;
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *from;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *value;
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *format;
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int has_format;
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int digitsPerGroup;
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int groupingCharacter;
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int groupingCharacterLen;
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlDocPtr doc;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNodePtr node;
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * accelerators
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltFormatNumberInfo,:
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This data structure lists the various parameters needed to format numbers.
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltFormatNumberInfo xsltFormatNumberInfo;
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltFormatNumberInfo *xsltFormatNumberInfoPtr;
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltFormatNumberInfo {
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int	    integer_hash;	/* Number of '#' in integer part */
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int	    integer_digits;	/* Number of '0' in integer part */
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int	    frac_digits;	/* Number of '0' in fractional part */
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int	    frac_hash;		/* Number of '#' in fractional part */
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int	    group;		/* Number of chars per display 'group' */
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int     multiplier;		/* Scaling for percent or permille */
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    char    add_decimal;	/* Flag for whether decimal point appears in pattern */
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    char    is_multiplier_set;	/* Flag to catch multiple occurences of percent/permille */
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    char    is_negative_pattern;/* Flag for processing -ve prefix/suffix */
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* __XML_XSLT_NUMBERSINTERNALS_H__ */
70