ReactOS  0.4.14-dev-49-gfb4591c
xpathInternals.h
Go to the documentation of this file.
1 /*
2  * Summary: internal interfaces for XML Path Language implementation
3  * Description: internal interfaces for XML Path Language implementation
4  * used to build new modules on top of XPath like XPointer and
5  * XSLT
6  *
7  * Copy: See Copyright for the status of this software.
8  *
9  * Author: Daniel Veillard
10  */
11 
12 #ifndef __XML_XPATH_INTERNALS_H__
13 #define __XML_XPATH_INTERNALS_H__
14 
15 #include <libxml/xmlversion.h>
16 #include <libxml/xpath.h>
17 
18 #ifdef LIBXML_XPATH_ENABLED
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
24 /************************************************************************
25  * *
26  * Helpers *
27  * *
28  ************************************************************************/
29 
30 /*
31  * Many of these macros may later turn into functions. They
32  * shouldn't be used in #ifdef's preprocessor instructions.
33  */
41 #define xmlXPathSetError(ctxt, err) \
42  { xmlXPatherror((ctxt), __FILE__, __LINE__, (err)); \
43  if ((ctxt) != NULL) (ctxt)->error = (err); }
44 
51 #define xmlXPathSetArityError(ctxt) \
52  xmlXPathSetError((ctxt), XPATH_INVALID_ARITY)
53 
60 #define xmlXPathSetTypeError(ctxt) \
61  xmlXPathSetError((ctxt), XPATH_INVALID_TYPE)
62 
71 #define xmlXPathGetError(ctxt) ((ctxt)->error)
72 
81 #define xmlXPathCheckError(ctxt) ((ctxt)->error != XPATH_EXPRESSION_OK)
82 
91 #define xmlXPathGetDocument(ctxt) ((ctxt)->context->doc)
92 
101 #define xmlXPathGetContextNode(ctxt) ((ctxt)->context->node)
102 
103 XMLPUBFUN int XMLCALL
104  xmlXPathPopBoolean (xmlXPathParserContextPtr ctxt);
105 XMLPUBFUN double XMLCALL
106  xmlXPathPopNumber (xmlXPathParserContextPtr ctxt);
108  xmlXPathPopString (xmlXPathParserContextPtr ctxt);
109 XMLPUBFUN xmlNodeSetPtr XMLCALL
110  xmlXPathPopNodeSet (xmlXPathParserContextPtr ctxt);
111 XMLPUBFUN void * XMLCALL
112  xmlXPathPopExternal (xmlXPathParserContextPtr ctxt);
113 
121 #define xmlXPathReturnBoolean(ctxt, val) \
122  valuePush((ctxt), xmlXPathNewBoolean(val))
123 
130 #define xmlXPathReturnTrue(ctxt) xmlXPathReturnBoolean((ctxt), 1)
131 
138 #define xmlXPathReturnFalse(ctxt) xmlXPathReturnBoolean((ctxt), 0)
139 
147 #define xmlXPathReturnNumber(ctxt, val) \
148  valuePush((ctxt), xmlXPathNewFloat(val))
149 
157 #define xmlXPathReturnString(ctxt, str) \
158  valuePush((ctxt), xmlXPathWrapString(str))
159 
166 #define xmlXPathReturnEmptyString(ctxt) \
167  valuePush((ctxt), xmlXPathNewCString(""))
168 
176 #define xmlXPathReturnNodeSet(ctxt, ns) \
177  valuePush((ctxt), xmlXPathWrapNodeSet(ns))
178 
185 #define xmlXPathReturnEmptyNodeSet(ctxt) \
186  valuePush((ctxt), xmlXPathNewNodeSet(NULL))
187 
195 #define xmlXPathReturnExternal(ctxt, val) \
196  valuePush((ctxt), xmlXPathWrapExternal(val))
197 
207 #define xmlXPathStackIsNodeSet(ctxt) \
208  (((ctxt)->value != NULL) \
209  && (((ctxt)->value->type == XPATH_NODESET) \
210  || ((ctxt)->value->type == XPATH_XSLT_TREE)))
211 
222 #define xmlXPathStackIsExternal(ctxt) \
223  ((ctxt->value != NULL) && (ctxt->value->type == XPATH_USERS))
224 
231 #define xmlXPathEmptyNodeSet(ns) \
232  { while ((ns)->nodeNr > 0) (ns)->nodeTab[--(ns)->nodeNr] = NULL; }
233 
239 #define CHECK_ERROR \
240  if (ctxt->error != XPATH_EXPRESSION_OK) return
241 
247 #define CHECK_ERROR0 \
248  if (ctxt->error != XPATH_EXPRESSION_OK) return(0)
249 
256 #define XP_ERROR(X) \
257  { xmlXPathErr(ctxt, X); return; }
258 
265 #define XP_ERROR0(X) \
266  { xmlXPathErr(ctxt, X); return(0); }
267 
275 #define CHECK_TYPE(typeval) \
276  if ((ctxt->value == NULL) || (ctxt->value->type != typeval)) \
277  XP_ERROR(XPATH_INVALID_TYPE)
278 
286 #define CHECK_TYPE0(typeval) \
287  if ((ctxt->value == NULL) || (ctxt->value->type != typeval)) \
288  XP_ERROR0(XPATH_INVALID_TYPE)
289 
296 #define CHECK_ARITY(x) \
297  if (ctxt == NULL) return; \
298  if (nargs != (x)) \
299  XP_ERROR(XPATH_INVALID_ARITY); \
300  if (ctxt->valueNr < ctxt->valueFrame + (x)) \
301  XP_ERROR(XPATH_STACK_ERROR);
302 
308 #define CAST_TO_STRING \
309  if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_STRING)) \
310  xmlXPathStringFunction(ctxt, 1);
311 
317 #define CAST_TO_NUMBER \
318  if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_NUMBER)) \
319  xmlXPathNumberFunction(ctxt, 1);
320 
326 #define CAST_TO_BOOLEAN \
327  if ((ctxt->value != NULL) && (ctxt->value->type != XPATH_BOOLEAN)) \
328  xmlXPathBooleanFunction(ctxt, 1);
329 
330 /*
331  * Variable Lookup forwarding.
332  */
333 
334 XMLPUBFUN void XMLCALL
335  xmlXPathRegisterVariableLookup (xmlXPathContextPtr ctxt,
336  xmlXPathVariableLookupFunc f,
337  void *data);
338 
339 /*
340  * Function Lookup forwarding.
341  */
342 
343 XMLPUBFUN void XMLCALL
344  xmlXPathRegisterFuncLookup (xmlXPathContextPtr ctxt,
345  xmlXPathFuncLookupFunc f,
346  void *funcCtxt);
347 
348 /*
349  * Error reporting.
350  */
351 XMLPUBFUN void XMLCALL
352  xmlXPatherror (xmlXPathParserContextPtr ctxt,
353  const char *file,
354  int line,
355  int no);
356 
357 XMLPUBFUN void XMLCALL
358  xmlXPathErr (xmlXPathParserContextPtr ctxt,
359  int error);
360 
361 #ifdef LIBXML_DEBUG_ENABLED
362 XMLPUBFUN void XMLCALL
363  xmlXPathDebugDumpObject (FILE *output,
364  xmlXPathObjectPtr cur,
365  int depth);
366 XMLPUBFUN void XMLCALL
367  xmlXPathDebugDumpCompExpr(FILE *output,
368  xmlXPathCompExprPtr comp,
369  int depth);
370 #endif
371 
374 XMLPUBFUN int XMLCALL
375  xmlXPathNodeSetContains (xmlNodeSetPtr cur,
376  xmlNodePtr val);
377 XMLPUBFUN xmlNodeSetPtr XMLCALL
378  xmlXPathDifference (xmlNodeSetPtr nodes1,
379  xmlNodeSetPtr nodes2);
380 XMLPUBFUN xmlNodeSetPtr XMLCALL
381  xmlXPathIntersection (xmlNodeSetPtr nodes1,
382  xmlNodeSetPtr nodes2);
383 
384 XMLPUBFUN xmlNodeSetPtr XMLCALL
385  xmlXPathDistinctSorted (xmlNodeSetPtr nodes);
386 XMLPUBFUN xmlNodeSetPtr XMLCALL
387  xmlXPathDistinct (xmlNodeSetPtr nodes);
388 
389 XMLPUBFUN int XMLCALL
390  xmlXPathHasSameNodes (xmlNodeSetPtr nodes1,
391  xmlNodeSetPtr nodes2);
392 
393 XMLPUBFUN xmlNodeSetPtr XMLCALL
394  xmlXPathNodeLeadingSorted (xmlNodeSetPtr nodes,
395  xmlNodePtr node);
396 XMLPUBFUN xmlNodeSetPtr XMLCALL
397  xmlXPathLeadingSorted (xmlNodeSetPtr nodes1,
398  xmlNodeSetPtr nodes2);
399 XMLPUBFUN xmlNodeSetPtr XMLCALL
400  xmlXPathNodeLeading (xmlNodeSetPtr nodes,
401  xmlNodePtr node);
402 XMLPUBFUN xmlNodeSetPtr XMLCALL
403  xmlXPathLeading (xmlNodeSetPtr nodes1,
404  xmlNodeSetPtr nodes2);
405 
406 XMLPUBFUN xmlNodeSetPtr XMLCALL
407  xmlXPathNodeTrailingSorted (xmlNodeSetPtr nodes,
408  xmlNodePtr node);
409 XMLPUBFUN xmlNodeSetPtr XMLCALL
410  xmlXPathTrailingSorted (xmlNodeSetPtr nodes1,
411  xmlNodeSetPtr nodes2);
412 XMLPUBFUN xmlNodeSetPtr XMLCALL
413  xmlXPathNodeTrailing (xmlNodeSetPtr nodes,
414  xmlNodePtr node);
415 XMLPUBFUN xmlNodeSetPtr XMLCALL
416  xmlXPathTrailing (xmlNodeSetPtr nodes1,
417  xmlNodeSetPtr nodes2);
418 
419 
424 XMLPUBFUN int XMLCALL
425  xmlXPathRegisterNs (xmlXPathContextPtr ctxt,
426  const xmlChar *prefix,
427  const xmlChar *ns_uri);
428 XMLPUBFUN const xmlChar * XMLCALL
429  xmlXPathNsLookup (xmlXPathContextPtr ctxt,
430  const xmlChar *prefix);
431 XMLPUBFUN void XMLCALL
432  xmlXPathRegisteredNsCleanup (xmlXPathContextPtr ctxt);
433 
434 XMLPUBFUN int XMLCALL
435  xmlXPathRegisterFunc (xmlXPathContextPtr ctxt,
436  const xmlChar *name,
437  xmlXPathFunction f);
438 XMLPUBFUN int XMLCALL
439  xmlXPathRegisterFuncNS (xmlXPathContextPtr ctxt,
440  const xmlChar *name,
441  const xmlChar *ns_uri,
442  xmlXPathFunction f);
443 XMLPUBFUN int XMLCALL
444  xmlXPathRegisterVariable (xmlXPathContextPtr ctxt,
445  const xmlChar *name,
446  xmlXPathObjectPtr value);
447 XMLPUBFUN int XMLCALL
448  xmlXPathRegisterVariableNS (xmlXPathContextPtr ctxt,
449  const xmlChar *name,
450  const xmlChar *ns_uri,
451  xmlXPathObjectPtr value);
452 XMLPUBFUN xmlXPathFunction XMLCALL
453  xmlXPathFunctionLookup (xmlXPathContextPtr ctxt,
454  const xmlChar *name);
455 XMLPUBFUN xmlXPathFunction XMLCALL
456  xmlXPathFunctionLookupNS (xmlXPathContextPtr ctxt,
457  const xmlChar *name,
458  const xmlChar *ns_uri);
459 XMLPUBFUN void XMLCALL
460  xmlXPathRegisteredFuncsCleanup (xmlXPathContextPtr ctxt);
461 XMLPUBFUN xmlXPathObjectPtr XMLCALL
462  xmlXPathVariableLookup (xmlXPathContextPtr ctxt,
463  const xmlChar *name);
464 XMLPUBFUN xmlXPathObjectPtr XMLCALL
465  xmlXPathVariableLookupNS (xmlXPathContextPtr ctxt,
466  const xmlChar *name,
467  const xmlChar *ns_uri);
468 XMLPUBFUN void XMLCALL
469  xmlXPathRegisteredVariablesCleanup(xmlXPathContextPtr ctxt);
470 
474 XMLPUBFUN xmlXPathParserContextPtr XMLCALL
475  xmlXPathNewParserContext (const xmlChar *str,
476  xmlXPathContextPtr ctxt);
477 XMLPUBFUN void XMLCALL
478  xmlXPathFreeParserContext (xmlXPathParserContextPtr ctxt);
479 
480 /* TODO: remap to xmlXPathValuePop and Push. */
481 XMLPUBFUN xmlXPathObjectPtr XMLCALL
482  valuePop (xmlXPathParserContextPtr ctxt);
483 XMLPUBFUN int XMLCALL
484  valuePush (xmlXPathParserContextPtr ctxt,
485  xmlXPathObjectPtr value);
486 
487 XMLPUBFUN xmlXPathObjectPtr XMLCALL
488  xmlXPathNewString (const xmlChar *val);
489 XMLPUBFUN xmlXPathObjectPtr XMLCALL
490  xmlXPathNewCString (const char *val);
491 XMLPUBFUN xmlXPathObjectPtr XMLCALL
492  xmlXPathWrapString (xmlChar *val);
493 XMLPUBFUN xmlXPathObjectPtr XMLCALL
494  xmlXPathWrapCString (char * val);
495 XMLPUBFUN xmlXPathObjectPtr XMLCALL
496  xmlXPathNewFloat (double val);
497 XMLPUBFUN xmlXPathObjectPtr XMLCALL
498  xmlXPathNewBoolean (int val);
499 XMLPUBFUN xmlXPathObjectPtr XMLCALL
500  xmlXPathNewNodeSet (xmlNodePtr val);
501 XMLPUBFUN xmlXPathObjectPtr XMLCALL
502  xmlXPathNewValueTree (xmlNodePtr val);
503 XMLPUBFUN int XMLCALL
504  xmlXPathNodeSetAdd (xmlNodeSetPtr cur,
505  xmlNodePtr val);
506 XMLPUBFUN int XMLCALL
507  xmlXPathNodeSetAddUnique (xmlNodeSetPtr cur,
508  xmlNodePtr val);
509 XMLPUBFUN int XMLCALL
510  xmlXPathNodeSetAddNs (xmlNodeSetPtr cur,
512  xmlNsPtr ns);
513 XMLPUBFUN void XMLCALL
514  xmlXPathNodeSetSort (xmlNodeSetPtr set);
515 
516 XMLPUBFUN void XMLCALL
517  xmlXPathRoot (xmlXPathParserContextPtr ctxt);
518 XMLPUBFUN void XMLCALL
519  xmlXPathEvalExpr (xmlXPathParserContextPtr ctxt);
521  xmlXPathParseName (xmlXPathParserContextPtr ctxt);
523  xmlXPathParseNCName (xmlXPathParserContextPtr ctxt);
524 
525 /*
526  * Existing functions.
527  */
528 XMLPUBFUN double XMLCALL
530 XMLPUBFUN int XMLCALL
531  xmlXPathEvaluatePredicateResult (xmlXPathParserContextPtr ctxt,
532  xmlXPathObjectPtr res);
533 XMLPUBFUN void XMLCALL
534  xmlXPathRegisterAllFunctions (xmlXPathContextPtr ctxt);
535 XMLPUBFUN xmlNodeSetPtr XMLCALL
536  xmlXPathNodeSetMerge (xmlNodeSetPtr val1,
537  xmlNodeSetPtr val2);
538 XMLPUBFUN void XMLCALL
539  xmlXPathNodeSetDel (xmlNodeSetPtr cur,
540  xmlNodePtr val);
541 XMLPUBFUN void XMLCALL
542  xmlXPathNodeSetRemove (xmlNodeSetPtr cur,
543  int val);
544 XMLPUBFUN xmlXPathObjectPtr XMLCALL
545  xmlXPathNewNodeSetList (xmlNodeSetPtr val);
546 XMLPUBFUN xmlXPathObjectPtr XMLCALL
547  xmlXPathWrapNodeSet (xmlNodeSetPtr val);
548 XMLPUBFUN xmlXPathObjectPtr XMLCALL
549  xmlXPathWrapExternal (void *val);
550 
551 XMLPUBFUN int XMLCALL xmlXPathEqualValues(xmlXPathParserContextPtr ctxt);
552 XMLPUBFUN int XMLCALL xmlXPathNotEqualValues(xmlXPathParserContextPtr ctxt);
553 XMLPUBFUN int XMLCALL xmlXPathCompareValues(xmlXPathParserContextPtr ctxt, int inf, int strict);
554 XMLPUBFUN void XMLCALL xmlXPathValueFlipSign(xmlXPathParserContextPtr ctxt);
555 XMLPUBFUN void XMLCALL xmlXPathAddValues(xmlXPathParserContextPtr ctxt);
556 XMLPUBFUN void XMLCALL xmlXPathSubValues(xmlXPathParserContextPtr ctxt);
557 XMLPUBFUN void XMLCALL xmlXPathMultValues(xmlXPathParserContextPtr ctxt);
558 XMLPUBFUN void XMLCALL xmlXPathDivValues(xmlXPathParserContextPtr ctxt);
559 XMLPUBFUN void XMLCALL xmlXPathModValues(xmlXPathParserContextPtr ctxt);
560 
561 XMLPUBFUN int XMLCALL xmlXPathIsNodeType(const xmlChar *name);
562 
563 /*
564  * Some of the axis navigation routines.
565  */
566 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextSelf(xmlXPathParserContextPtr ctxt,
567  xmlNodePtr cur);
568 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextChild(xmlXPathParserContextPtr ctxt,
569  xmlNodePtr cur);
570 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendant(xmlXPathParserContextPtr ctxt,
571  xmlNodePtr cur);
572 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextDescendantOrSelf(xmlXPathParserContextPtr ctxt,
573  xmlNodePtr cur);
574 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextParent(xmlXPathParserContextPtr ctxt,
575  xmlNodePtr cur);
576 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestorOrSelf(xmlXPathParserContextPtr ctxt,
577  xmlNodePtr cur);
578 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowingSibling(xmlXPathParserContextPtr ctxt,
579  xmlNodePtr cur);
580 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextFollowing(xmlXPathParserContextPtr ctxt,
581  xmlNodePtr cur);
582 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextNamespace(xmlXPathParserContextPtr ctxt,
583  xmlNodePtr cur);
584 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAttribute(xmlXPathParserContextPtr ctxt,
585  xmlNodePtr cur);
586 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPreceding(xmlXPathParserContextPtr ctxt,
587  xmlNodePtr cur);
588 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextAncestor(xmlXPathParserContextPtr ctxt,
589  xmlNodePtr cur);
590 XMLPUBFUN xmlNodePtr XMLCALL xmlXPathNextPrecedingSibling(xmlXPathParserContextPtr ctxt,
591  xmlNodePtr cur);
592 /*
593  * The official core of XPath functions.
594  */
595 XMLPUBFUN void XMLCALL xmlXPathLastFunction(xmlXPathParserContextPtr ctxt, int nargs);
596 XMLPUBFUN void XMLCALL xmlXPathPositionFunction(xmlXPathParserContextPtr ctxt, int nargs);
597 XMLPUBFUN void XMLCALL xmlXPathCountFunction(xmlXPathParserContextPtr ctxt, int nargs);
598 XMLPUBFUN void XMLCALL xmlXPathIdFunction(xmlXPathParserContextPtr ctxt, int nargs);
599 XMLPUBFUN void XMLCALL xmlXPathLocalNameFunction(xmlXPathParserContextPtr ctxt, int nargs);
600 XMLPUBFUN void XMLCALL xmlXPathNamespaceURIFunction(xmlXPathParserContextPtr ctxt, int nargs);
601 XMLPUBFUN void XMLCALL xmlXPathStringFunction(xmlXPathParserContextPtr ctxt, int nargs);
602 XMLPUBFUN void XMLCALL xmlXPathStringLengthFunction(xmlXPathParserContextPtr ctxt, int nargs);
603 XMLPUBFUN void XMLCALL xmlXPathConcatFunction(xmlXPathParserContextPtr ctxt, int nargs);
604 XMLPUBFUN void XMLCALL xmlXPathContainsFunction(xmlXPathParserContextPtr ctxt, int nargs);
605 XMLPUBFUN void XMLCALL xmlXPathStartsWithFunction(xmlXPathParserContextPtr ctxt, int nargs);
606 XMLPUBFUN void XMLCALL xmlXPathSubstringFunction(xmlXPathParserContextPtr ctxt, int nargs);
607 XMLPUBFUN void XMLCALL xmlXPathSubstringBeforeFunction(xmlXPathParserContextPtr ctxt, int nargs);
608 XMLPUBFUN void XMLCALL xmlXPathSubstringAfterFunction(xmlXPathParserContextPtr ctxt, int nargs);
609 XMLPUBFUN void XMLCALL xmlXPathNormalizeFunction(xmlXPathParserContextPtr ctxt, int nargs);
610 XMLPUBFUN void XMLCALL xmlXPathTranslateFunction(xmlXPathParserContextPtr ctxt, int nargs);
611 XMLPUBFUN void XMLCALL xmlXPathNotFunction(xmlXPathParserContextPtr ctxt, int nargs);
612 XMLPUBFUN void XMLCALL xmlXPathTrueFunction(xmlXPathParserContextPtr ctxt, int nargs);
613 XMLPUBFUN void XMLCALL xmlXPathFalseFunction(xmlXPathParserContextPtr ctxt, int nargs);
614 XMLPUBFUN void XMLCALL xmlXPathLangFunction(xmlXPathParserContextPtr ctxt, int nargs);
615 XMLPUBFUN void XMLCALL xmlXPathNumberFunction(xmlXPathParserContextPtr ctxt, int nargs);
616 XMLPUBFUN void XMLCALL xmlXPathSumFunction(xmlXPathParserContextPtr ctxt, int nargs);
617 XMLPUBFUN void XMLCALL xmlXPathFloorFunction(xmlXPathParserContextPtr ctxt, int nargs);
618 XMLPUBFUN void XMLCALL xmlXPathCeilingFunction(xmlXPathParserContextPtr ctxt, int nargs);
619 XMLPUBFUN void XMLCALL xmlXPathRoundFunction(xmlXPathParserContextPtr ctxt, int nargs);
620 XMLPUBFUN void XMLCALL xmlXPathBooleanFunction(xmlXPathParserContextPtr ctxt, int nargs);
621 
625 XMLPUBFUN void XMLCALL xmlXPathNodeSetFreeNs(xmlNsPtr ns);
626 
627 #ifdef __cplusplus
628 }
629 #endif
630 
631 #endif /* LIBXML_XPATH_ENABLED */
632 #endif /* ! __XML_XPATH_INTERNALS_H__ */
static UCHAR ULONG UCHAR ULONG UCHAR * output
Definition: bcrypt.c:29
#define error(str)
Definition: mkdosfs.c:1605
Definition: tree.h:389
#define XMLPUBFUN
Definition: xmlexports.h:30
const WCHAR * str
Definition: parser.c:48
GLuint GLfloat * val
Definition: glext.h:7180
GLfloat f
Definition: glext.h:7540
static WCHAR no[MAX_STRING_RESOURCE_LEN]
Definition: object.c:2340
static int strict
Definition: error.c:51
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
Definition: tree.h:489
GLint GLint GLsizei GLsizei GLsizei depth
Definition: gl.h:1546
Definition: mxnamespace.c:44
unsigned char xmlChar
Definition: xmlstring.h:28
#define XMLCALL
Definition: name.c:36
GLuint res
Definition: glext.h:9613
double xmlXPathStringEvalNumber(const xmlChar *str)
Definition: _set.h:46
Definition: dlist.c:348
Definition: fci.c:126