added new function replace from Joel Reed. added new test case for above.
[platform/upstream/libxslt.git] / doc / libxslt-decl.txt
1 <MACRO>
2 <NAME>LIBXSLT_DOTTED_VERSION</NAME>
3 #define LIBXSLT_DOTTED_VERSION "1.1.0"
4 </MACRO>
5 <MACRO>
6 <NAME>LIBXSLT_VERSION</NAME>
7 #define LIBXSLT_VERSION 10100
8 </MACRO>
9 <MACRO>
10 <NAME>LIBXSLT_VERSION_STRING</NAME>
11 #define LIBXSLT_VERSION_STRING "10100"
12 </MACRO>
13 <MACRO>
14 <NAME>WITH_XSLT_DEBUG</NAME>
15 #define WITH_XSLT_DEBUG
16 </MACRO>
17 <MACRO>
18 <NAME>DEBUG_MEMORY</NAME>
19 #define DEBUG_MEMORY
20 </MACRO>
21 <MACRO>
22 <NAME>DEBUG_MEMORY_LOCATION</NAME>
23 #define DEBUG_MEMORY_LOCATION
24 </MACRO>
25 <MACRO>
26 <NAME>XSLT_NEED_TRIO</NAME>
27 #define XSLT_NEED_TRIO
28 </MACRO>
29 <MACRO>
30 <NAME>XSLT_NEED_TRIO</NAME>
31 #define XSLT_NEED_TRIO
32 </MACRO>
33 <MACRO>
34 <NAME>WITH_DEBUGGER</NAME>
35 #define WITH_DEBUGGER
36 </MACRO>
37 <MACRO>
38 <NAME>ATTRIBUTE_UNUSED</NAME>
39 #define ATTRIBUTE_UNUSED __attribute__((unused))
40 </MACRO>
41 <MACRO>
42 <NAME>ATTRIBUTE_UNUSED</NAME>
43 #define ATTRIBUTE_UNUSED
44 </MACRO>
45 <MACRO>
46 <NAME>LIBXSLT_PUBLIC</NAME>
47 #define LIBXSLT_PUBLIC __declspec(dllimport)
48 </MACRO>
49 <MACRO>
50 <NAME>LIBXSLT_PUBLIC</NAME>
51 #define LIBXSLT_PUBLIC
52 </MACRO>
53 <MACRO>
54 <NAME>XSLT_LIBXSLT_NAMESPACE</NAME>
55 #define XSLT_LIBXSLT_NAMESPACE ((xmlChar *) "http://xmlsoft.org/XSLT/namespace")
56 </MACRO>
57 <MACRO>
58 <NAME>XSLT_SAXON_NAMESPACE</NAME>
59 #define XSLT_SAXON_NAMESPACE ((xmlChar *) "http://icl.com/saxon")
60 </MACRO>
61 <MACRO>
62 <NAME>XSLT_XT_NAMESPACE</NAME>
63 #define XSLT_XT_NAMESPACE ((xmlChar *) "http://www.jclark.com/xt")
64 </MACRO>
65 <MACRO>
66 <NAME>XSLT_XALAN_NAMESPACE</NAME>
67 #define XSLT_XALAN_NAMESPACE ((xmlChar *)       \
68                                 "org.apache.xalan.xslt.extensions.Redirect")
69 </MACRO>
70 <MACRO>
71 <NAME>XSLT_NORM_SAXON_NAMESPACE</NAME>
72 #define XSLT_NORM_SAXON_NAMESPACE ((xmlChar *)  \
73         "http://nwalsh.com/xslt/ext/com.nwalsh.saxon.CVS")
74 </MACRO>
75 <USER_FUNCTION>
76 <NAME>xsltStyleExtInitFunction</NAME>
77 <RETURNS>void *</RETURNS>
78 xsltStylesheetPtr style,
79                                                  const xmlChar *URI
80 </USER_FUNCTION>
81 <USER_FUNCTION>
82 <NAME>xsltStyleExtShutdownFunction</NAME>
83 <RETURNS>void </RETURNS>
84 xsltStylesheetPtr style,
85                                                  const xmlChar *URI,
86                                                  void *data
87 </USER_FUNCTION>
88 <USER_FUNCTION>
89 <NAME>xsltExtInitFunction</NAME>
90 <RETURNS>void *</RETURNS>
91 xsltTransformContextPtr ctxt,
92                                          const xmlChar *URI
93 </USER_FUNCTION>
94 <USER_FUNCTION>
95 <NAME>xsltExtShutdownFunction</NAME>
96 <RETURNS>void </RETURNS>
97 xsltTransformContextPtr ctxt,
98                                          const xmlChar *URI,
99                                          void *data
100 </USER_FUNCTION>
101 <USER_FUNCTION>
102 <NAME>xsltTopLevelFunction</NAME>
103 <RETURNS>void </RETURNS>
104 xsltStylesheetPtr style,
105                                          xmlNodePtr inst
106 </USER_FUNCTION>
107 <MACRO>
108 <NAME>XSLT_REGISTER_FUNCTION_LOOKUP</NAME>
109 #define XSLT_REGISTER_FUNCTION_LOOKUP(ctxt)                     \
110     xmlXPathRegisterFuncLookup((ctxt)->xpathCtxt,               \
111         (xmlXPathFuncLookupFunc) xsltXPathFunctionLookup,       \
112         (void *)(ctxt->xpathCtxt));
113 </MACRO>
114 <MACRO>
115 <NAME>XSLT_GET_IMPORT_PTR</NAME>
116 #define XSLT_GET_IMPORT_PTR(res, style, name) {                 \
117     xsltStylesheetPtr st = style;                               \
118     res = NULL;                                                 \
119     while (st != NULL) {                                        \
120         if (st->name != NULL) { res = st->name; break; }        \
121         st = xsltNextImport(st);                                \
122     }}
123 </MACRO>
124 <MACRO>
125 <NAME>XSLT_GET_IMPORT_INT</NAME>
126 #define XSLT_GET_IMPORT_INT(res, style, name) {                 \
127     xsltStylesheetPtr st = style;                               \
128     res = -1;                                                   \
129     while (st != NULL) {                                        \
130         if (st->name != -1) { res = st->name; break; }  \
131         st = xsltNextImport(st);                                \
132     }}
133 </MACRO>
134 <MACRO>
135 <NAME>LIBXSLT_PUBLIC</NAME>
136 #define LIBXSLT_PUBLIC __declspec(dllimport)
137 </MACRO>
138 <MACRO>
139 <NAME>LIBXSLT_PUBLIC</NAME>
140 #define LIBXSLT_PUBLIC 
141 </MACRO>
142 <STRUCT>
143 <NAME>xsltNumberData</NAME>
144 </STRUCT>
145 <TYPEDEF>
146 <NAME>xsltNumberDataPtr</NAME>
147 typedef xsltNumberData *xsltNumberDataPtr;
148 </TYPEDEF>
149 <STRUCT>
150 <NAME>xsltNumberData</NAME>
151 struct xsltNumberData {
152     xmlChar *level;
153     xmlChar *count;
154     xmlChar *from;
155     xmlChar *value;
156     xmlChar *format;
157     int has_format;
158     int digitsPerGroup;
159     int groupingCharacter;
160     int groupingCharacterLen;
161     xmlDocPtr doc;
162     xmlNodePtr node;
163
164     /*
165      * accelerators
166      */
167 };
168 </STRUCT>
169 <STRUCT>
170 <NAME>xsltFormatNumberInfo</NAME>
171 </STRUCT>
172 <TYPEDEF>
173 <NAME>xsltFormatNumberInfoPtr</NAME>
174 typedef xsltFormatNumberInfo *xsltFormatNumberInfoPtr;
175 </TYPEDEF>
176 <STRUCT>
177 <NAME>xsltFormatNumberInfo</NAME>
178 struct xsltFormatNumberInfo {
179     int     integer_hash;       /* Number of '#' in integer part */
180     int     integer_digits;     /* Number of '0' in integer part */
181     int     frac_digits;        /* Number of '0' in fractional part */
182     int     frac_hash;          /* Number of '#' in fractional part */
183     int     group;              /* Number of chars per display 'group' */
184     int     multiplier;         /* Scaling for percent or permille */
185     char    add_decimal;        /* Flag for whether decimal point appears in pattern */
186     char    is_multiplier_set;  /* Flag to catch multiple occurences of percent/permille */
187     char    is_negative_pattern;/* Flag for processing -ve prefix/suffix */
188 };
189 </STRUCT>
190 <STRUCT>
191 <NAME>xsltCompMatch</NAME>
192 </STRUCT>
193 <TYPEDEF>
194 <NAME>xsltCompMatchPtr</NAME>
195 typedef xsltCompMatch *xsltCompMatchPtr;
196 </TYPEDEF>
197 <FUNCTION>
198 <NAME>xsltMatchPattern</NAME>
199 <RETURNS>int    </RETURNS>
200 xsltTransformContextPtr ctxt,xmlNodePtr node,const xmlChar *pattern,xmlDocPtr ctxtdoc,xmlNodePtr ctxtnode
201 </FUNCTION>
202 <VARIABLE>
203 <NAME>xsltExtMarker</NAME>
204 extern const xmlChar *xsltExtMarker;
205 </VARIABLE>
206 <MACRO>
207 <NAME>XSLT_REGISTER_VARIABLE_LOOKUP</NAME>
208 #define XSLT_REGISTER_VARIABLE_LOOKUP(ctxt)                     \
209     xmlXPathRegisterVariableLookup((ctxt)->xpathCtxt,           \
210                xsltXPathVariableLookup, (void *)(ctxt));        \
211     xsltRegisterAllFunctions((ctxt)->xpathCtxt);                \
212     xsltRegisterAllElement(ctxt);                               \
213     (ctxt)->xpathCtxt->extra = ctxt
214 </MACRO>
215 <MACRO>
216 <NAME>XSLT_DEFAULT_VERSION</NAME>
217 #define XSLT_DEFAULT_VERSION     "1.0"
218 </MACRO>
219 <MACRO>
220 <NAME>XSLT_DEFAULT_VENDOR</NAME>
221 #define XSLT_DEFAULT_VENDOR      "libxslt"
222 </MACRO>
223 <MACRO>
224 <NAME>XSLT_DEFAULT_URL</NAME>
225 #define XSLT_DEFAULT_URL         "http://xmlsoft.org/XSLT/"
226 </MACRO>
227 <MACRO>
228 <NAME>XSLT_NAMESPACE</NAME>
229 #define XSLT_NAMESPACE ((xmlChar *) "http://www.w3.org/1999/XSL/Transform")
230 </MACRO>
231 <MACRO>
232 <NAME>XSLT_PARSE_OPTIONS</NAME>
233 #define XSLT_PARSE_OPTIONS \
234  XML_PARSE_NOENT | XML_PARSE_DTDLOAD | XML_PARSE_DTDATTR | XML_PARSE_NOCDATA
235 </MACRO>
236 <VARIABLE>
237 <NAME>xsltMaxDepth</NAME>
238 extern int xsltMaxDepth;
239 </VARIABLE>
240 <VARIABLE>
241 <NAME>xsltEngineVersion</NAME>
242 extern const char *xsltEngineVersion;
243 </VARIABLE>
244 <VARIABLE>
245 <NAME>xsltLibxsltVersion</NAME>
246 extern const int xsltLibxsltVersion;
247 </VARIABLE>
248 <VARIABLE>
249 <NAME>xsltLibxmlVersion</NAME>
250 extern const int xsltLibxmlVersion;
251 </VARIABLE>
252 <MACRO>
253 <NAME>XSLT_TODO</NAME>
254 #define XSLT_TODO                                                       \
255     xsltGenericError(xsltGenericErrorContext,                           \
256             "Unimplemented block at %s:%d\n",                           \
257             __FILE__, __LINE__);
258 </MACRO>
259 <MACRO>
260 <NAME>XSLT_STRANGE</NAME>
261 #define XSLT_STRANGE                                                    \
262     xsltGenericError(xsltGenericErrorContext,                           \
263             "Internal error at %s:%d\n",                                \
264             __FILE__, __LINE__);
265 </MACRO>
266 <MACRO>
267 <NAME>IS_XSLT_ELEM</NAME>
268 #define IS_XSLT_ELEM(n)                                                 \
269     (((n) != NULL) && ((n)->ns != NULL) &&                              \
270      (xmlStrEqual((n)->ns->href, XSLT_NAMESPACE)))
271 </MACRO>
272 <MACRO>
273 <NAME>IS_XSLT_NAME</NAME>
274 #define IS_XSLT_NAME(n, val)                                            \
275     (xmlStrEqual((n)->name, (const xmlChar *) (val)))
276 </MACRO>
277 <MACRO>
278 <NAME>IS_XSLT_REAL_NODE</NAME>
279 #define IS_XSLT_REAL_NODE(n)                                            \
280     (((n) != NULL) &&                                                   \
281      (((n)->type == XML_ELEMENT_NODE) ||                                \
282       ((n)->type == XML_TEXT_NODE) ||                                   \
283       ((n)->type == XML_ATTRIBUTE_NODE) ||                              \
284       ((n)->type == XML_DOCUMENT_NODE) ||                               \
285       ((n)->type == XML_HTML_DOCUMENT_NODE) ||                          \
286       ((n)->type == XML_PI_NODE)))
287 </MACRO>
288 <ENUM>
289 <NAME>xsltDebugTraceCodes</NAME>
290 typedef enum {
291         XSLT_TRACE_ALL =                -1,
292         XSLT_TRACE_NONE =               0,
293         XSLT_TRACE_COPY_TEXT =          1<<0,
294         XSLT_TRACE_PROCESS_NODE =       1<<1,
295         XSLT_TRACE_APPLY_TEMPLATE =     1<<2,
296         XSLT_TRACE_COPY =               1<<3,
297         XSLT_TRACE_COMMENT =            1<<4,
298         XSLT_TRACE_PI =                 1<<5,
299         XSLT_TRACE_COPY_OF =            1<<6,
300         XSLT_TRACE_VALUE_OF =           1<<7,
301         XSLT_TRACE_CALL_TEMPLATE =      1<<8,
302         XSLT_TRACE_APPLY_TEMPLATES =    1<<9,
303         XSLT_TRACE_CHOOSE =             1<<10,
304         XSLT_TRACE_IF =                 1<<11,
305         XSLT_TRACE_FOR_EACH =           1<<12,
306         XSLT_TRACE_STRIP_SPACES =       1<<13,
307         XSLT_TRACE_TEMPLATES =          1<<14,
308         XSLT_TRACE_KEYS =               1<<15,
309         XSLT_TRACE_VARIABLES =          1<<16
310 } xsltDebugTraceCodes;
311 </ENUM>
312 <MACRO>
313 <NAME>XSLT_TRACE</NAME>
314 #define XSLT_TRACE(ctxt,code,call)      \
315         if (ctxt->traceCode && (*(ctxt->traceCode) & code)) \
316             call
317 </MACRO>
318 <VARIABLE>
319 <NAME>xsltGenericError</NAME>
320 extern xmlGenericErrorFunc xsltGenericError;
321 </VARIABLE>
322 <VARIABLE>
323 <NAME>xsltGenericErrorContext</NAME>
324 extern void *xsltGenericErrorContext;
325 </VARIABLE>
326 <VARIABLE>
327 <NAME>xsltGenericDebug</NAME>
328 extern xmlGenericErrorFunc xsltGenericDebug;
329 </VARIABLE>
330 <VARIABLE>
331 <NAME>xsltGenericDebugContext</NAME>
332 extern void *xsltGenericDebugContext;
333 </VARIABLE>
334 <MACRO>
335 <NAME>XSLT_TIMESTAMP_TICS_PER_SEC</NAME>
336 #define XSLT_TIMESTAMP_TICS_PER_SEC 100000l
337 </MACRO>
338 <ENUM>
339 <NAME>xsltDebugStatusCodes</NAME>
340 typedef enum {
341     XSLT_DEBUG_NONE = 0, /* no debugging allowed */
342     XSLT_DEBUG_INIT,
343     XSLT_DEBUG_STEP,
344     XSLT_DEBUG_STEPOUT,
345     XSLT_DEBUG_NEXT,
346     XSLT_DEBUG_STOP,
347     XSLT_DEBUG_CONT,
348     XSLT_DEBUG_RUN,
349     XSLT_DEBUG_RUN_RESTART,
350     XSLT_DEBUG_QUIT
351 } xsltDebugStatusCodes;
352 </ENUM>
353 <VARIABLE>
354 <NAME>xslDebugStatus</NAME>
355 extern int xslDebugStatus;
356 </VARIABLE>
357 <USER_FUNCTION>
358 <NAME>xsltHandleDebuggerCallback</NAME>
359 <RETURNS>void </RETURNS>
360 xmlNodePtr cur, xmlNodePtr node,
361                         xsltTemplatePtr templ, xsltTransformContextPtr ctxt
362 </USER_FUNCTION>
363 <USER_FUNCTION>
364 <NAME>xsltAddCallCallback</NAME>
365 <RETURNS>int </RETURNS>
366 xsltTemplatePtr templ, xmlNodePtr source
367 </USER_FUNCTION>
368 <USER_FUNCTION>
369 <NAME>xsltDropCallCallback</NAME>
370 <RETURNS>void </RETURNS>
371 void
372 </USER_FUNCTION>
373 <MACRO>
374 <NAME>LIBXSLT_DOTTED_VERSION</NAME>
375 #define LIBXSLT_DOTTED_VERSION "1.1.0"
376 </MACRO>
377 <MACRO>
378 <NAME>LIBXSLT_VERSION</NAME>
379 #define LIBXSLT_VERSION 10100
380 </MACRO>
381 <MACRO>
382 <NAME>LIBXSLT_VERSION_STRING</NAME>
383 #define LIBXSLT_VERSION_STRING "10100"
384 </MACRO>
385 <MACRO>
386 <NAME>WITH_XSLT_DEBUG</NAME>
387 #define WITH_XSLT_DEBUG
388 </MACRO>
389 <MACRO>
390 <NAME>DEBUG_MEMORY</NAME>
391 #define DEBUG_MEMORY
392 </MACRO>
393 <MACRO>
394 <NAME>DEBUG_MEMORY_LOCATION</NAME>
395 #define DEBUG_MEMORY_LOCATION
396 </MACRO>
397 <MACRO>
398 <NAME>ATTRIBUTE_UNUSED</NAME>
399 #define ATTRIBUTE_UNUSED
400 </MACRO>
401 <MACRO>
402 <NAME>TRIO_ERROR_CODE</NAME>
403 #define TRIO_ERROR_CODE(x) ((-(x)) & 0x00FF)
404 </MACRO>
405 <MACRO>
406 <NAME>TRIO_ERROR_POSITION</NAME>
407 #define TRIO_ERROR_POSITION(x) ((-(x)) >> 8)
408 </MACRO>
409 <MACRO>
410 <NAME>TRIO_ERROR_NAME</NAME>
411 #define TRIO_ERROR_NAME(x) trio_strerror(x)
412 </MACRO>
413 <TYPEDEF>
414 <NAME>int))</NAME>
415 typedef int (*trio_outstream_t) TRIO_PROTO((trio_pointer_t, int));
416 </TYPEDEF>
417 <TYPEDEF>
418 <NAME>TRIO_PROTO((trio_pointer_t))</NAME>
419 typedef int (*trio_instream_t) TRIO_PROTO((trio_pointer_t));
420 </TYPEDEF>
421 <MACRO>
422 <NAME>printf</NAME>
423 # define printf trio_printf
424 </MACRO>
425 <MACRO>
426 <NAME>vprintf</NAME>
427 # define vprintf trio_vprintf
428 </MACRO>
429 <MACRO>
430 <NAME>fprintf</NAME>
431 # define fprintf trio_fprintf
432 </MACRO>
433 <MACRO>
434 <NAME>vfprintf</NAME>
435 # define vfprintf trio_vfprintf
436 </MACRO>
437 <MACRO>
438 <NAME>sprintf</NAME>
439 # define sprintf trio_sprintf
440 </MACRO>
441 <MACRO>
442 <NAME>vsprintf</NAME>
443 # define vsprintf trio_vsprintf
444 </MACRO>
445 <MACRO>
446 <NAME>snprintf</NAME>
447 # define snprintf trio_snprintf
448 </MACRO>
449 <MACRO>
450 <NAME>vsnprintf</NAME>
451 # define vsnprintf trio_vsnprintf
452 </MACRO>
453 <MACRO>
454 <NAME>scanf</NAME>
455 # define scanf trio_scanf
456 </MACRO>
457 <MACRO>
458 <NAME>vscanf</NAME>
459 # define vscanf trio_vscanf
460 </MACRO>
461 <MACRO>
462 <NAME>fscanf</NAME>
463 # define fscanf trio_fscanf
464 </MACRO>
465 <MACRO>
466 <NAME>vfscanf</NAME>
467 # define vfscanf trio_vfscanf
468 </MACRO>
469 <MACRO>
470 <NAME>sscanf</NAME>
471 # define sscanf trio_sscanf
472 </MACRO>
473 <MACRO>
474 <NAME>vsscanf</NAME>
475 # define vsscanf trio_vsscanf
476 </MACRO>
477 <MACRO>
478 <NAME>dprintf</NAME>
479 #define dprintf trio_dprintf
480 </MACRO>
481 <MACRO>
482 <NAME>vdprintf</NAME>
483 #define vdprintf trio_vdprintf
484 </MACRO>
485 <MACRO>
486 <NAME>aprintf</NAME>
487 #define aprintf trio_aprintf
488 </MACRO>
489 <MACRO>
490 <NAME>vaprintf</NAME>
491 #define vaprintf trio_vaprintf
492 </MACRO>
493 <MACRO>
494 <NAME>asprintf</NAME>
495 #define asprintf trio_asprintf
496 </MACRO>
497 <MACRO>
498 <NAME>vasprintf</NAME>
499 #define vasprintf trio_vasprintf
500 </MACRO>
501 <MACRO>
502 <NAME>dscanf</NAME>
503 #define dscanf trio_dscanf
504 </MACRO>
505 <MACRO>
506 <NAME>vdscanf</NAME>
507 #define vdscanf trio_vdscanf
508 </MACRO>
509 <MACRO>
510 <NAME>XSLT_MAX_SORT</NAME>
511 #define XSLT_MAX_SORT 15
512 </MACRO>
513 <MACRO>
514 <NAME>XSLT_PAT_NO_PRIORITY</NAME>
515 #define XSLT_PAT_NO_PRIORITY -12345789
516 </MACRO>
517 <STRUCT>
518 <NAME>xsltRuntimeExtra</NAME>
519 </STRUCT>
520 <TYPEDEF>
521 <NAME>xsltRuntimeExtraPtr</NAME>
522 typedef xsltRuntimeExtra *xsltRuntimeExtraPtr;
523 </TYPEDEF>
524 <STRUCT>
525 <NAME>xsltRuntimeExtra</NAME>
526 struct xsltRuntimeExtra {
527     void       *info;           /* pointer to the extra data */
528     xmlFreeFunc deallocate;     /* pointer to the deallocation routine */
529     void       *val;            /* data not needing deallocation */
530 };
531 </STRUCT>
532 <MACRO>
533 <NAME>XSLT_RUNTIME_EXTRA_LST</NAME>
534 #define XSLT_RUNTIME_EXTRA_LST(ctxt, nr) (ctxt)->extras[(nr)].info
535 </MACRO>
536 <MACRO>
537 <NAME>XSLT_RUNTIME_EXTRA_FREE</NAME>
538 #define XSLT_RUNTIME_EXTRA_FREE(ctxt, nr) (ctxt)->extras[(nr)].deallocate
539 </MACRO>
540 <MACRO>
541 <NAME>XSLT_RUNTIME_EXTRA</NAME>
542 #define XSLT_RUNTIME_EXTRA(ctxt, nr) (ctxt)->extras[(nr)].val
543 </MACRO>
544 <STRUCT>
545 <NAME>xsltTemplate</NAME>
546 </STRUCT>
547 <TYPEDEF>
548 <NAME>xsltTemplatePtr</NAME>
549 typedef xsltTemplate *xsltTemplatePtr;
550 </TYPEDEF>
551 <STRUCT>
552 <NAME>xsltTemplate</NAME>
553 struct xsltTemplate {
554     struct _xsltTemplate *next;/* chained list sorted by priority */
555     struct _xsltStylesheet *style;/* the containing stylesheet */
556     xmlChar *match;     /* the matching string */
557     float priority;     /* as given from the stylesheet, not computed */
558     xmlChar *name;      /* the local part of the name QName */
559     xmlChar *nameURI;   /* the URI part of the name QName */
560     xmlChar *mode;      /* the local part of the mode QName */
561     xmlChar *modeURI;   /* the URI part of the mode QName */
562     xmlNodePtr content; /* the template replacement value */
563     xmlNodePtr elem;    /* the source element */
564
565     int inheritedNsNr;  /* number of inherited namespaces */
566     xmlNsPtr *inheritedNs;/* inherited non-excluded namespaces */
567
568     /* Profiling informations */
569     int nbCalls;        /* the number of time the template was called */
570     unsigned long time; /* the time spent in this template */
571 };
572 </STRUCT>
573 <STRUCT>
574 <NAME>xsltDecimalFormat</NAME>
575 </STRUCT>
576 <TYPEDEF>
577 <NAME>xsltDecimalFormatPtr</NAME>
578 typedef xsltDecimalFormat *xsltDecimalFormatPtr;
579 </TYPEDEF>
580 <STRUCT>
581 <NAME>xsltDecimalFormat</NAME>
582 struct xsltDecimalFormat {
583     struct _xsltDecimalFormat *next; /* chained list */
584     xmlChar *name;
585     /* Used for interpretation of pattern */
586     xmlChar *digit;
587     xmlChar *patternSeparator;
588     /* May appear in result */
589     xmlChar *minusSign;
590     xmlChar *infinity;
591     xmlChar *noNumber; /* Not-a-number */
592     /* Used for interpretation of pattern and may appear in result */
593     xmlChar *decimalPoint;
594     xmlChar *grouping;
595     xmlChar *percent;
596     xmlChar *permille;
597     xmlChar *zeroDigit;
598 };
599 </STRUCT>
600 <STRUCT>
601 <NAME>xsltDocument</NAME>
602 </STRUCT>
603 <TYPEDEF>
604 <NAME>xsltDocumentPtr</NAME>
605 typedef xsltDocument *xsltDocumentPtr;
606 </TYPEDEF>
607 <STRUCT>
608 <NAME>xsltDocument</NAME>
609 struct xsltDocument {
610     struct _xsltDocument *next; /* documents are kept in a chained list */
611     int main;                   /* is this the main document */
612     xmlDocPtr doc;              /* the parsed document */
613     void *keys;                 /* key tables storage */
614     struct _xsltDocument *includes; /* subsidiary includes */
615 };
616 </STRUCT>
617 <STRUCT>
618 <NAME>xsltTransformContext</NAME>
619 </STRUCT>
620 <TYPEDEF>
621 <NAME>xsltTransformContextPtr</NAME>
622 typedef xsltTransformContext *xsltTransformContextPtr;
623 </TYPEDEF>
624 <STRUCT>
625 <NAME>xsltElemPreComp</NAME>
626 </STRUCT>
627 <TYPEDEF>
628 <NAME>xsltElemPreCompPtr</NAME>
629 typedef xsltElemPreComp *xsltElemPreCompPtr;
630 </TYPEDEF>
631 <USER_FUNCTION>
632 <NAME>xsltTransformFunction</NAME>
633 <RETURNS>void </RETURNS>
634 xsltTransformContextPtr ctxt,
635                                        xmlNodePtr node,
636                                        xmlNodePtr inst,
637                                        xsltElemPreCompPtr comp
638 </USER_FUNCTION>
639 <USER_FUNCTION>
640 <NAME>xsltSortFunc</NAME>
641 <RETURNS>void </RETURNS>
642 xsltTransformContextPtr ctxt, xmlNodePtr *sorts,
643                               int nbsorts
644 </USER_FUNCTION>
645 <ENUM>
646 <NAME>xsltStyleType</NAME>
647 typedef enum {
648     XSLT_FUNC_COPY=1,
649     XSLT_FUNC_SORT,
650     XSLT_FUNC_TEXT,
651     XSLT_FUNC_ELEMENT,
652     XSLT_FUNC_ATTRIBUTE,
653     XSLT_FUNC_COMMENT,
654     XSLT_FUNC_PI,
655     XSLT_FUNC_COPYOF,
656     XSLT_FUNC_VALUEOF,
657     XSLT_FUNC_NUMBER,
658     XSLT_FUNC_APPLYIMPORTS,
659     XSLT_FUNC_CALLTEMPLATE,
660     XSLT_FUNC_APPLYTEMPLATES,
661     XSLT_FUNC_CHOOSE,
662     XSLT_FUNC_IF,
663     XSLT_FUNC_FOREACH,
664     XSLT_FUNC_DOCUMENT,
665     XSLT_FUNC_WITHPARAM,
666     XSLT_FUNC_PARAM,
667     XSLT_FUNC_VARIABLE,
668     XSLT_FUNC_WHEN,
669     XSLT_FUNC_EXTENSION
670 } xsltStyleType;
671 </ENUM>
672 <USER_FUNCTION>
673 <NAME>xsltElemPreCompDeallocator</NAME>
674 <RETURNS>void </RETURNS>
675 xsltElemPreCompPtr comp
676 </USER_FUNCTION>
677 <STRUCT>
678 <NAME>xsltElemPreComp</NAME>
679 struct xsltElemPreComp {
680     xsltElemPreCompPtr next;            /* chained list */
681     xsltStyleType type;                 /* type of the element */
682     xsltTransformFunction func;         /* handling function */
683     xmlNodePtr inst;                    /* the instruction */
684
685     /* end of common part */
686     xsltElemPreCompDeallocator free;    /* the deallocator */
687 };
688 </STRUCT>
689 <STRUCT>
690 <NAME>xsltStylePreComp</NAME>
691 </STRUCT>
692 <TYPEDEF>
693 <NAME>xsltStylePreCompPtr</NAME>
694 typedef xsltStylePreComp *xsltStylePreCompPtr;
695 </TYPEDEF>
696 <STRUCT>
697 <NAME>xsltStylePreComp</NAME>
698 struct xsltStylePreComp {
699     xsltElemPreCompPtr next;    /* chained list */
700     xsltStyleType type;         /* type of the element */
701     xsltTransformFunction func; /* handling function */
702     xmlNodePtr inst;            /* the instruction */
703
704     /*
705      * Pre computed values.
706      */
707
708     xmlChar *stype;             /* sort */
709     int      has_stype;         /* sort */
710     int      number;            /* sort */
711     xmlChar *order;             /* sort */
712     int      has_order;         /* sort */
713     int      descending;        /* sort */
714     xmlChar *lang;              /* sort */
715     int      has_lang;          /* sort */
716     xmlChar *case_order;        /* sort */
717     int      lower_first;       /* sort */
718
719     xmlChar *use;               /* copy, element */
720     int      has_use;           /* copy, element */
721
722     int      noescape;          /* text */
723
724     xmlChar *name;              /* element, attribute, pi */
725     int      has_name;          /* element, attribute, pi */
726     xmlChar *ns;                /* element */
727     int      has_ns;            /* element */
728
729     xmlChar *mode;              /* apply-templates */
730     xmlChar *modeURI;           /* apply-templates */
731
732     xmlChar *test;              /* if */
733
734     xsltTemplatePtr templ;      /* call-template */
735
736     xmlChar *select;            /* sort, copy-of, value-of, apply-templates */
737
738     int      ver11;             /* document */
739     xmlChar *filename;          /* document URL */
740     int      has_filename;      /* document */
741
742     xsltNumberData numdata;     /* number */
743
744     xmlXPathCompExprPtr comp;   /* a precompiled XPath expression */
745     xmlNsPtr *nsList;           /* the namespaces in scope */
746     int nsNr;                   /* the number of namespaces in scope */
747 };
748 </STRUCT>
749 <STRUCT>
750 <NAME>xsltStackElem</NAME>
751 </STRUCT>
752 <TYPEDEF>
753 <NAME>xsltStackElemPtr</NAME>
754 typedef xsltStackElem *xsltStackElemPtr;
755 </TYPEDEF>
756 <STRUCT>
757 <NAME>xsltStackElem</NAME>
758 struct xsltStackElem {
759     struct _xsltStackElem *next;/* chained list */
760     xsltStylePreCompPtr comp;   /* the compiled form */
761     int computed;       /* was the evaluation done */
762     xmlChar *name;      /* the local part of the name QName */
763     xmlChar *nameURI;   /* the URI part of the name QName */
764     xmlChar *select;    /* the eval string */
765     xmlNodePtr tree;    /* the tree if no eval string or the location */
766     xmlXPathObjectPtr value; /* The value if computed */
767 };
768 </STRUCT>
769 <STRUCT>
770 <NAME>xsltStylesheet</NAME>
771 </STRUCT>
772 <TYPEDEF>
773 <NAME>xsltStylesheetPtr</NAME>
774 typedef xsltStylesheet *xsltStylesheetPtr;
775 </TYPEDEF>
776 <STRUCT>
777 <NAME>xsltStylesheet</NAME>
778 struct xsltStylesheet {
779     /*
780      * The stylesheet import relation is kept as a tree.
781      */
782     struct _xsltStylesheet *parent;
783     struct _xsltStylesheet *next;
784     struct _xsltStylesheet *imports;
785
786     xsltDocumentPtr docList;            /* the include document list */
787
788     /*
789      * General data on the style sheet document.
790      */
791     xmlDocPtr doc;              /* the parsed XML stylesheet */
792     xmlHashTablePtr stripSpaces;/* the hash table of the strip-space and
793                                    preserve space elements */
794     int             stripAll;   /* strip-space * (1) preserve-space * (-1) */
795     xmlHashTablePtr cdataSection;/* the hash table of the cdata-section */
796
797     /*
798      * Global variable or parameters.
799      */
800     xsltStackElemPtr variables; /* linked list of param and variables */
801
802     /*
803      * Template descriptions.
804      */
805     xsltTemplatePtr templates;  /* the ordered list of templates */
806     void *templatesHash;        /* hash table or wherever compiled templates
807                                    informations are stored */
808     void *rootMatch;            /* template based on / */
809     void *keyMatch;             /* template based on key() */
810     void *elemMatch;            /* template based on * */
811     void *attrMatch;            /* template based on @* */
812     void *parentMatch;          /* template based on .. */
813     void *textMatch;            /* template based on text() */
814     void *piMatch;              /* template based on processing-instruction() */
815     void *commentMatch;         /* template based on comment() */
816     
817     /*
818      * Namespace aliases.
819      */
820     xmlHashTablePtr nsAliases;  /* the namespace alias hash tables */
821
822     /*
823      * Attribute sets.
824      */
825     xmlHashTablePtr attributeSets;/* the attribute sets hash tables */
826
827     /*
828      * Namespaces.
829      */
830     xmlHashTablePtr nsHash;     /* the set of namespaces in use */
831     void           *nsDefs;     /* the namespaces defined */
832
833     /*
834      * Key definitions.
835      */
836     void *keys;                         /* key definitions */
837
838     /*
839      * Output related stuff.
840      */
841     xmlChar *method;            /* the output method */
842     xmlChar *methodURI;         /* associated namespace if any */
843     xmlChar *version;           /* version string */
844     xmlChar *encoding;          /* encoding string */
845     int omitXmlDeclaration;     /* omit-xml-declaration = "yes" | "no" */
846
847     /* 
848      * Number formatting.
849      */
850     xsltDecimalFormatPtr decimalFormat;
851     int standalone;             /* standalone = "yes" | "no" */
852     xmlChar *doctypePublic;     /* doctype-public string */
853     xmlChar *doctypeSystem;     /* doctype-system string */
854     int indent;                 /* should output being indented */
855     xmlChar *mediaType;         /* media-type string */
856
857     /*
858      * Precomputed blocks.
859      */
860     xsltElemPreCompPtr preComps;/* list of precomputed blocks */
861     int warnings;               /* number of warnings found at compilation */
862     int errors;                 /* number of errors found at compilation */
863
864     xmlChar  *exclPrefix;       /* last excluded prefixes */
865     xmlChar **exclPrefixTab;    /* array of excluded prefixes */
866     int       exclPrefixNr;     /* number of excluded prefixes in scope */
867     int       exclPrefixMax;    /* size of the array */
868
869     void     *_private;         /* user defined data */
870
871     /*
872      * Extensions.
873      */
874     xmlHashTablePtr extInfos;   /* the extension data */
875     int             extrasNr;   /* the number of extras required */
876
877     /*
878      * For keeping track of nested includes
879      */
880     xsltDocumentPtr includes;   /* points to last nested include */
881 };
882 </STRUCT>
883 <ENUM>
884 <NAME>xsltOutputType</NAME>
885 typedef enum {
886     XSLT_OUTPUT_XML = 0,
887     XSLT_OUTPUT_HTML,
888     XSLT_OUTPUT_TEXT
889 } xsltOutputType;
890 </ENUM>
891 <ENUM>
892 <NAME>xsltTransformState</NAME>
893 typedef enum {
894     XSLT_STATE_OK = 0,
895     XSLT_STATE_ERROR,
896     XSLT_STATE_STOPPED
897 } xsltTransformState;
898 </ENUM>
899 <STRUCT>
900 <NAME>xsltTransformContext</NAME>
901 struct xsltTransformContext {
902     xsltStylesheetPtr style;            /* the stylesheet used */
903     xsltOutputType type;                /* the type of output */
904
905     xsltTemplatePtr  templ;             /* the current template */
906     int              templNr;           /* Nb of templates in the stack */
907     int              templMax;          /* Size of the templtes stack */
908     xsltTemplatePtr *templTab;          /* the template stack */
909
910     xsltStackElemPtr  vars;             /* the current variable list */
911     int               varsNr;           /* Nb of variable list in the stack */
912     int               varsMax;          /* Size of the variable list stack */
913     xsltStackElemPtr *varsTab;          /* the variable list stack */
914     int               varsBase;         /* the var base for current templ */
915
916     /*
917      * Extensions
918      */
919     xmlHashTablePtr   extFunctions;     /* the extension functions */
920     xmlHashTablePtr   extElements;      /* the extension elements */
921     xmlHashTablePtr   extInfos;         /* the extension data */
922
923     const xmlChar *mode;                /* the current mode */
924     const xmlChar *modeURI;             /* the current mode URI */
925
926     xsltDocumentPtr docList;            /* the document list */
927
928     xsltDocumentPtr document;           /* the current document */
929     xmlNodePtr node;                    /* the current node being processed */
930     xmlNodeSetPtr nodeList;             /* the current node list */
931     /* xmlNodePtr current;                      the node */
932
933     xmlDocPtr output;                   /* the resulting document */
934     xmlNodePtr insert;                  /* the insertion node */
935
936     xmlXPathContextPtr xpathCtxt;       /* the XPath context */
937     xsltTransformState state;           /* the current state */
938
939     /*
940      * Global variables
941      */
942     xmlHashTablePtr   globalVars;       /* the global variables and params */
943
944     xmlNodePtr inst;                    /* the instruction in the stylesheet */
945
946     int xinclude;                       /* should XInclude be processed */
947
948     const char *      outputFile;       /* the output URI if known */
949
950     int profile;                        /* is this run profiled */
951     long             prof;              /* the current profiled value */
952     int              profNr;            /* Nb of templates in the stack */
953     int              profMax;           /* Size of the templtaes stack */
954     long            *profTab;           /* the profile template stack */
955
956     void            *_private;          /* user defined data */
957
958     int              extrasNr;          /* the number of extras used */
959     int              extrasMax;         /* the number of extras allocated */
960     xsltRuntimeExtraPtr extras;         /* extra per runtime informations */
961
962     xsltDocumentPtr  styleList;         /* the stylesheet docs list */
963     void                 * sec;         /* the security preferences if any */
964
965     xmlGenericErrorFunc  error;         /* a specific error handler */
966     void              * errctx;         /* context for the error handler */
967
968     xsltSortFunc      sortfunc;         /* a ctxt specific sort routine */
969
970     /*
971      * handling of temporary Result Value Tree
972      */
973     xmlDocPtr       tmpRVT;             /* list of RVT without persistance */
974     xmlDocPtr       persistRVT;         /* list of persistant RVTs */
975     int             ctxtflags;          /* context processing flags */
976
977     /*
978      * Speed optimization when coalescing text nodes
979      */
980     const xmlChar  *lasttext;           /* last text node content */
981     unsigned int    lasttsize;          /* last text node size */
982     unsigned int    lasttuse;           /* last text node use */
983     /*
984      * Per Context Debugging
985      */
986     int debugStatus;                            /* the context level debug status */
987     unsigned long* traceCode;           /* pointer to the variable holding the mask */
988 };
989 </STRUCT>
990 <MACRO>
991 <NAME>CHECK_STOPPED</NAME>
992 #define CHECK_STOPPED if (ctxt->state == XSLT_STATE_STOPPED) return;
993 </MACRO>
994 <MACRO>
995 <NAME>CHECK_STOPPEDE</NAME>
996 #define CHECK_STOPPEDE if (ctxt->state == XSLT_STATE_STOPPED) goto error;
997 </MACRO>
998 <MACRO>
999 <NAME>CHECK_STOPPED0</NAME>
1000 #define CHECK_STOPPED0 if (ctxt->state == XSLT_STATE_STOPPED) return(0);
1001 </MACRO>
1002 <MACRO>
1003 <NAME>TRIO_COMPILER_GCC</NAME>
1004 # define TRIO_COMPILER_GCC
1005 </MACRO>
1006 <MACRO>
1007 <NAME>TRIO_COMPILER_SUNPRO</NAME>
1008 # define TRIO_COMPILER_SUNPRO
1009 </MACRO>
1010 <MACRO>
1011 <NAME>TRIO_COMPILER_SUNPRO</NAME>
1012 # define TRIO_COMPILER_SUNPRO
1013 </MACRO>
1014 <MACRO>
1015 <NAME>TRIO_COMPILER_XLC</NAME>
1016 # define TRIO_COMPILER_XLC
1017 </MACRO>
1018 <MACRO>
1019 <NAME>TRIO_COMPILER_XLC</NAME>
1020 # define TRIO_COMPILER_XLC /* Workaround for old xlc */
1021 </MACRO>
1022 <MACRO>
1023 <NAME>TRIO_COMPILER_DECC</NAME>
1024 # define TRIO_COMPILER_DECC
1025 </MACRO>
1026 <MACRO>
1027 <NAME>TRIO_COMPILER_DECC</NAME>
1028 # define TRIO_COMPILER_DECC /* Workaround for old DEC C compilers */
1029 </MACRO>
1030 <MACRO>
1031 <NAME>TRIO_COMPILER_MSVC</NAME>
1032 # define TRIO_COMPILER_MSVC
1033 </MACRO>
1034 <MACRO>
1035 <NAME>TRIO_COMPILER_BCB</NAME>
1036 # define TRIO_COMPILER_BCB
1037 </MACRO>
1038 <MACRO>
1039 <NAME>TRIO_PLATFORM_VMS</NAME>
1040 # define TRIO_PLATFORM_VMS
1041 </MACRO>
1042 <MACRO>
1043 <NAME>TRIO_PLATFORM_UNIX</NAME>
1044 # define TRIO_PLATFORM_UNIX
1045 </MACRO>
1046 <MACRO>
1047 <NAME>TRIO_PLATFORM_UNIX</NAME>
1048 # define TRIO_PLATFORM_UNIX
1049 </MACRO>
1050 <MACRO>
1051 <NAME>TRIO_PLATFORM_UNIX</NAME>
1052 # define TRIO_PLATFORM_UNIX
1053 </MACRO>
1054 <MACRO>
1055 <NAME>TRIO_PLATFORM_UNIX</NAME>
1056 # define TRIO_PLATFORM_UNIX
1057 </MACRO>
1058 <MACRO>
1059 <NAME>TRIO_PLATFORM_UNIX</NAME>
1060 # define TRIO_PLATFORM_UNIX
1061 </MACRO>
1062 <MACRO>
1063 <NAME>TRIO_PLATFORM_QNX</NAME>
1064 # define TRIO_PLATFORM_QNX
1065 </MACRO>
1066 <MACRO>
1067 <NAME>TRIO_PLATFORM_UNIX</NAME>
1068 # define TRIO_PLATFORM_UNIX
1069 </MACRO>
1070 <MACRO>
1071 <NAME>TRIO_PLATFORM_UNIX</NAME>
1072 # define TRIO_PLATFORM_UNIX
1073 </MACRO>
1074 <MACRO>
1075 <NAME>TRIO_PLATFORM_WIN32</NAME>
1076 # define TRIO_PLATFORM_WIN32
1077 </MACRO>
1078 <MACRO>
1079 <NAME>TRIO_PLATFORM_MPEIX</NAME>
1080 # define TRIO_PLATFORM_MPEIX
1081 </MACRO>
1082 <MACRO>
1083 <NAME>TRIO_PLATFORM_AIX</NAME>
1084 # define TRIO_PLATFORM_AIX
1085 </MACRO>
1086 <MACRO>
1087 <NAME>TRIO_PLATFORM_HPUX</NAME>
1088 # define TRIO_PLATFORM_HPUX
1089 </MACRO>
1090 <MACRO>
1091 <NAME>TRIO_PLATFORM_SOLARIS</NAME>
1092 #  define TRIO_PLATFORM_SOLARIS
1093 </MACRO>
1094 <MACRO>
1095 <NAME>TRIO_PLATFORM_SUNOS</NAME>
1096 #  define TRIO_PLATFORM_SUNOS
1097 </MACRO>
1098 <MACRO>
1099 <NAME>TRIO_COMPILER_SUPPORTS_C89</NAME>
1100 # define TRIO_COMPILER_SUPPORTS_C89
1101 </MACRO>
1102 <MACRO>
1103 <NAME>TRIO_COMPILER_SUPPORTS_C90</NAME>
1104 #  define TRIO_COMPILER_SUPPORTS_C90
1105 </MACRO>
1106 <MACRO>
1107 <NAME>TRIO_COMPILER_SUPPORTS_C94</NAME>
1108 #   define TRIO_COMPILER_SUPPORTS_C94
1109 </MACRO>
1110 <MACRO>
1111 <NAME>TRIO_COMPILER_SUPPORTS_C99</NAME>
1112 #   define TRIO_COMPILER_SUPPORTS_C99
1113 </MACRO>
1114 <MACRO>
1115 <NAME>TRIO_COMPILER_SUPPORTS_C94</NAME>
1116 #   define TRIO_COMPILER_SUPPORTS_C94
1117 </MACRO>
1118 <MACRO>
1119 <NAME>TRIO_COMPILER_SUPPORTS_UNIX95</NAME>
1120 #  define TRIO_COMPILER_SUPPORTS_UNIX95
1121 </MACRO>
1122 <MACRO>
1123 <NAME>TRIO_COMPILER_SUPPORTS_UNIX98</NAME>
1124 #  define TRIO_COMPILER_SUPPORTS_UNIX98
1125 </MACRO>
1126 <MACRO>
1127 <NAME>TRIO_COMPILER_SUPPORTS_UNIX01</NAME>
1128 #  define TRIO_COMPILER_SUPPORTS_UNIX01
1129 </MACRO>
1130 <MACRO>
1131 <NAME>TRIO_PUBLIC</NAME>
1132 # define TRIO_PUBLIC
1133 </MACRO>
1134 <MACRO>
1135 <NAME>TRIO_PRIVATE</NAME>
1136 # define TRIO_PRIVATE static
1137 </MACRO>
1138 <MACRO>
1139 <NAME>TRIO_COMPILER_ANCIENT</NAME>
1140 # define TRIO_COMPILER_ANCIENT
1141 </MACRO>
1142 <MACRO>
1143 <NAME>TRIO_CONST</NAME>
1144 # define TRIO_CONST
1145 </MACRO>
1146 <MACRO>
1147 <NAME>TRIO_VOLATILE</NAME>
1148 # define TRIO_VOLATILE
1149 </MACRO>
1150 <MACRO>
1151 <NAME>TRIO_SIGNED</NAME>
1152 # define TRIO_SIGNED
1153 </MACRO>
1154 <TYPEDEF>
1155 <NAME>trio_long_double_t</NAME>
1156 typedef double trio_long_double_t;
1157 </TYPEDEF>
1158 <TYPEDEF>
1159 <NAME>trio_pointer_t</NAME>
1160 typedef char * trio_pointer_t;
1161 </TYPEDEF>
1162 <MACRO>
1163 <NAME>TRIO_SUFFIX_LONG</NAME>
1164 # define TRIO_SUFFIX_LONG(x) x
1165 </MACRO>
1166 <MACRO>
1167 <NAME>TRIO_PROTO</NAME>
1168 # define TRIO_PROTO(x) ()
1169 </MACRO>
1170 <MACRO>
1171 <NAME>TRIO_NOARGS</NAME>
1172 # define TRIO_NOARGS
1173 </MACRO>
1174 <MACRO>
1175 <NAME>TRIO_ARGS1</NAME>
1176 # define TRIO_ARGS1(list,a1) list a1;
1177 </MACRO>
1178 <MACRO>
1179 <NAME>TRIO_ARGS2</NAME>
1180 # define TRIO_ARGS2(list,a1,a2) list a1; a2;
1181 </MACRO>
1182 <MACRO>
1183 <NAME>TRIO_ARGS3</NAME>
1184 # define TRIO_ARGS3(list,a1,a2,a3) list a1; a2; a3;
1185 </MACRO>
1186 <MACRO>
1187 <NAME>TRIO_ARGS4</NAME>
1188 # define TRIO_ARGS4(list,a1,a2,a3,a4) list a1; a2; a3; a4;
1189 </MACRO>
1190 <MACRO>
1191 <NAME>TRIO_ARGS5</NAME>
1192 # define TRIO_ARGS5(list,a1,a2,a3,a4,a5) list a1; a2; a3; a4; a5;
1193 </MACRO>
1194 <MACRO>
1195 <NAME>TRIO_ARGS6</NAME>
1196 # define TRIO_ARGS6(list,a1,a2,a3,a4,a5,a6) list a1; a2; a3; a4; a5; a6;
1197 </MACRO>
1198 <MACRO>
1199 <NAME>TRIO_VARGS2</NAME>
1200 # define TRIO_VARGS2(list,a1,a2) list a1; a2
1201 </MACRO>
1202 <MACRO>
1203 <NAME>TRIO_VARGS3</NAME>
1204 # define TRIO_VARGS3(list,a1,a2,a3) list a1; a2; a3
1205 </MACRO>
1206 <MACRO>
1207 <NAME>TRIO_VARGS4</NAME>
1208 # define TRIO_VARGS4(list,a1,a2,a3,a4) list a1; a2; a3; a4
1209 </MACRO>
1210 <MACRO>
1211 <NAME>TRIO_VARGS5</NAME>
1212 # define TRIO_VARGS5(list,a1,a2,a3,a4,a5) list a1; a2; a3; a4; a5
1213 </MACRO>
1214 <MACRO>
1215 <NAME>TRIO_VA_DECL</NAME>
1216 # define TRIO_VA_DECL va_dcl
1217 </MACRO>
1218 <MACRO>
1219 <NAME>TRIO_VA_START</NAME>
1220 # define TRIO_VA_START(x,y) va_start(x)
1221 </MACRO>
1222 <MACRO>
1223 <NAME>TRIO_VA_END</NAME>
1224 # define TRIO_VA_END(x) va_end(x)
1225 </MACRO>
1226 <MACRO>
1227 <NAME>TRIO_CONST</NAME>
1228 # define TRIO_CONST const
1229 </MACRO>
1230 <MACRO>
1231 <NAME>TRIO_VOLATILE</NAME>
1232 # define TRIO_VOLATILE volatile
1233 </MACRO>
1234 <MACRO>
1235 <NAME>TRIO_SIGNED</NAME>
1236 # define TRIO_SIGNED signed
1237 </MACRO>
1238 <TYPEDEF>
1239 <NAME>trio_long_double_t</NAME>
1240 typedef long double trio_long_double_t;
1241 </TYPEDEF>
1242 <TYPEDEF>
1243 <NAME>trio_pointer_t</NAME>
1244 typedef void * trio_pointer_t;
1245 </TYPEDEF>
1246 <MACRO>
1247 <NAME>TRIO_SUFFIX_LONG</NAME>
1248 # define TRIO_SUFFIX_LONG(x) x ## L
1249 </MACRO>
1250 <MACRO>
1251 <NAME>TRIO_PROTO</NAME>
1252 # define TRIO_PROTO(x) x
1253 </MACRO>
1254 <MACRO>
1255 <NAME>TRIO_NOARGS</NAME>
1256 # define TRIO_NOARGS void
1257 </MACRO>
1258 <MACRO>
1259 <NAME>TRIO_ARGS1</NAME>
1260 # define TRIO_ARGS1(list,a1) (a1)
1261 </MACRO>
1262 <MACRO>
1263 <NAME>TRIO_ARGS2</NAME>
1264 # define TRIO_ARGS2(list,a1,a2) (a1,a2)
1265 </MACRO>
1266 <MACRO>
1267 <NAME>TRIO_ARGS3</NAME>
1268 # define TRIO_ARGS3(list,a1,a2,a3) (a1,a2,a3)
1269 </MACRO>
1270 <MACRO>
1271 <NAME>TRIO_ARGS4</NAME>
1272 # define TRIO_ARGS4(list,a1,a2,a3,a4) (a1,a2,a3,a4)
1273 </MACRO>
1274 <MACRO>
1275 <NAME>TRIO_ARGS5</NAME>
1276 # define TRIO_ARGS5(list,a1,a2,a3,a4,a5) (a1,a2,a3,a4,a5)
1277 </MACRO>
1278 <MACRO>
1279 <NAME>TRIO_ARGS6</NAME>
1280 # define TRIO_ARGS6(list,a1,a2,a3,a4,a5,a6) (a1,a2,a3,a4,a5,a6)
1281 </MACRO>
1282 <MACRO>
1283 <NAME>TRIO_VARGS2</NAME>
1284 # define TRIO_VARGS2 TRIO_ARGS2
1285 </MACRO>
1286 <MACRO>
1287 <NAME>TRIO_VARGS3</NAME>
1288 # define TRIO_VARGS3 TRIO_ARGS3
1289 </MACRO>
1290 <MACRO>
1291 <NAME>TRIO_VARGS4</NAME>
1292 # define TRIO_VARGS4 TRIO_ARGS4
1293 </MACRO>
1294 <MACRO>
1295 <NAME>TRIO_VARGS5</NAME>
1296 # define TRIO_VARGS5 TRIO_ARGS5
1297 </MACRO>
1298 <MACRO>
1299 <NAME>TRIO_VA_DECL</NAME>
1300 # define TRIO_VA_DECL ...
1301 </MACRO>
1302 <MACRO>
1303 <NAME>TRIO_VA_START</NAME>
1304 # define TRIO_VA_START(x,y) va_start(x,y)
1305 </MACRO>
1306 <MACRO>
1307 <NAME>TRIO_VA_END</NAME>
1308 # define TRIO_VA_END(x) va_end(x)
1309 </MACRO>
1310 <MACRO>
1311 <NAME>TRIO_INLINE</NAME>
1312 # define TRIO_INLINE inline
1313 </MACRO>
1314 <MACRO>
1315 <NAME>TRIO_INLINE</NAME>
1316 # define TRIO_INLINE __inline__
1317 </MACRO>
1318 <MACRO>
1319 <NAME>TRIO_INLINE</NAME>
1320 # define TRIO_INLINE _inline
1321 </MACRO>
1322 <MACRO>
1323 <NAME>TRIO_INLINE</NAME>
1324 # define TRIO_INLINE __inline
1325 </MACRO>
1326 <MACRO>
1327 <NAME>TRIO_INLINE</NAME>
1328 # define TRIO_INLINE
1329 </MACRO>
1330 <MACRO>
1331 <NAME>TRIO_COMPILER_SUPPORTS_LL</NAME>
1332 # define TRIO_COMPILER_SUPPORTS_LL
1333 </MACRO>
1334 <STRUCT>
1335 <NAME>xsltSecurityPrefs</NAME>
1336 </STRUCT>
1337 <TYPEDEF>
1338 <NAME>xsltSecurityPrefsPtr</NAME>
1339 typedef xsltSecurityPrefs *xsltSecurityPrefsPtr;
1340 </TYPEDEF>
1341 <ENUM>
1342 <NAME>xsltSecurityOption</NAME>
1343 typedef enum {
1344     XSLT_SECPREF_READ_FILE = 1,
1345     XSLT_SECPREF_WRITE_FILE,
1346     XSLT_SECPREF_CREATE_DIRECTORY,
1347     XSLT_SECPREF_READ_NETWORK,
1348     XSLT_SECPREF_WRITE_NETWORK
1349 } xsltSecurityOption;
1350 </ENUM>
1351 <USER_FUNCTION>
1352 <NAME>xsltSecurityCheck</NAME>
1353 <RETURNS>int </RETURNS>
1354 xsltSecurityPrefsPtr sec,
1355                                          xsltTransformContextPtr ctxt,
1356                                          const char *value
1357 </USER_FUNCTION>
1358 <MACRO>
1359 <NAME>XSLTPUBFUN</NAME>
1360 #define XSLTPUBFUN
1361 </MACRO>
1362 <MACRO>
1363 <NAME>XSLTPUBVAR</NAME>
1364 #define XSLTPUBVAR extern
1365 </MACRO>
1366 <MACRO>
1367 <NAME>XSLTCALL</NAME>
1368 #define XSLTCALL
1369 </MACRO>
1370 <MACRO>
1371 <NAME>XSLTPUBFUN</NAME>
1372     #define XSLTPUBFUN __declspec(dllexport)
1373 </MACRO>
1374 <MACRO>
1375 <NAME>XSLTPUBVAR</NAME>
1376     #define XSLTPUBVAR __declspec(dllexport)
1377 </MACRO>
1378 <MACRO>
1379 <NAME>XSLTPUBFUN</NAME>
1380     #define XSLTPUBFUN
1381 </MACRO>
1382 <MACRO>
1383 <NAME>XSLTPUBVAR</NAME>
1384       #define XSLTPUBVAR __declspec(dllimport) extern
1385 </MACRO>
1386 <MACRO>
1387 <NAME>XSLTPUBVAR</NAME>
1388       #define XSLTPUBVAR extern
1389 </MACRO>
1390 <MACRO>
1391 <NAME>XSLTCALL</NAME>
1392   #define XSLTCALL __cdecl
1393 </MACRO>
1394 <MACRO>
1395 <NAME>XSLTPUBFUN</NAME>
1396     #define XSLTPUBFUN __declspec(dllexport)
1397 </MACRO>
1398 <MACRO>
1399 <NAME>XSLTPUBVAR</NAME>
1400     #define XSLTPUBVAR __declspec(dllexport) extern
1401 </MACRO>
1402 <MACRO>
1403 <NAME>XSLTPUBFUN</NAME>
1404     #define XSLTPUBFUN
1405 </MACRO>
1406 <MACRO>
1407 <NAME>XSLTPUBVAR</NAME>
1408       #define XSLTPUBVAR __declspec(dllimport) extern
1409 </MACRO>
1410 <MACRO>
1411 <NAME>XSLTPUBVAR</NAME>
1412       #define XSLTPUBVAR extern
1413 </MACRO>
1414 <MACRO>
1415 <NAME>XSLTCALL</NAME>
1416   #define XSLTCALL __cdecl
1417 </MACRO>
1418 <MACRO>
1419 <NAME>XSLTPUBFUN</NAME>
1420     #define XSLTPUBFUN __declspec(dllexport)
1421 </MACRO>
1422 <MACRO>
1423 <NAME>XSLTPUBVAR</NAME>
1424     #define XSLTPUBVAR __declspec(dllexport)
1425 </MACRO>
1426 <MACRO>
1427 <NAME>XSLTPUBFUN</NAME>
1428     #define XSLTPUBFUN
1429 </MACRO>
1430 <MACRO>
1431 <NAME>XSLTPUBVAR</NAME>
1432       #define XSLTPUBVAR __declspec(dllimport) extern
1433 </MACRO>
1434 <MACRO>
1435 <NAME>XSLTPUBVAR</NAME>
1436       #define XSLTPUBVAR
1437 </MACRO>
1438 <MACRO>
1439 <NAME>XSLTCALL</NAME>
1440   #define XSLTCALL __cdecl
1441 </MACRO>
1442 <MACRO>
1443 <NAME>LIBXSLT_PUBLIC</NAME>
1444 #define LIBXSLT_PUBLIC XSLTPUBVAR
1445 </MACRO>