1 /*
2  * Summary: interface for the variable matching and lookup.
3  * Description: interface for the variable matching and lookup.
4  *
5  * Copy: See Copyright for the status of this software.
6  *
7  * Author: Daniel Veillard
8  */
9 
10 #ifndef __XML_XSLT_VARIABLES_H__
11 #define __XML_XSLT_VARIABLES_H__
12 
13 #include <libxml/xpath.h>
14 #include <libxml/xpathInternals.h>
15 #include "xsltexports.h"
16 #include "xsltInternals.h"
17 #include "functions.h"
18 
19 #ifdef __cplusplus
20 extern "C" {
21 #endif
22 
23 
24 /**
25  * XSLT_REGISTER_VARIABLE_LOOKUP:
26  *
27  * Registering macro, not general purpose at all but used in different modules.
28  */
29 
30 #define XSLT_REGISTER_VARIABLE_LOOKUP(ctxt)			\
31     xmlXPathRegisterVariableLookup((ctxt)->xpathCtxt,		\
32 	       xsltXPathVariableLookup,	(void *)(ctxt));	\
33     xsltRegisterAllFunctions((ctxt)->xpathCtxt);		\
34     xsltRegisterAllElement(ctxt);				\
35     (ctxt)->xpathCtxt->extra = ctxt
36 
37 /*
38  * Flags for memory management of RVTs
39  */
40 
41 /**
42  * XSLT_RVT_LOCAL:
43  *
44  * RVT is destroyed after the current instructions ends.
45  */
46 #define XSLT_RVT_LOCAL       ((void *)1)
47 
48 /**
49  * XSLT_RVT_FUNC_RESULT:
50  *
51  * RVT is part of results returned with func:result. The RVT won't be
52  * destroyed after exiting a template and will be reset to XSLT_RVT_LOCAL or
53  * XSLT_RVT_VARIABLE in the template that receives the return value.
54  */
55 #define XSLT_RVT_FUNC_RESULT ((void *)2)
56 
57 /**
58  * XSLT_RVT_GLOBAL:
59  *
60  * RVT is part of a global variable.
61  */
62 #define XSLT_RVT_GLOBAL      ((void *)3)
63 
64 /*
65  * Interfaces for the variable module.
66  */
67 
68 XSLTPUBFUN int XSLTCALL
69 		xsltEvalGlobalVariables		(xsltTransformContextPtr ctxt);
70 XSLTPUBFUN int XSLTCALL
71 		xsltEvalUserParams		(xsltTransformContextPtr ctxt,
72 						 const char **params);
73 XSLTPUBFUN int XSLTCALL
74 		xsltQuoteUserParams		(xsltTransformContextPtr ctxt,
75 						 const char **params);
76 XSLTPUBFUN int XSLTCALL
77 		xsltEvalOneUserParam		(xsltTransformContextPtr ctxt,
78 						 const xmlChar * name,
79 						 const xmlChar * value);
80 XSLTPUBFUN int XSLTCALL
81 		xsltQuoteOneUserParam		(xsltTransformContextPtr ctxt,
82 						 const xmlChar * name,
83 						 const xmlChar * value);
84 
85 XSLTPUBFUN void XSLTCALL
86 		xsltParseGlobalVariable		(xsltStylesheetPtr style,
87 						 xmlNodePtr cur);
88 XSLTPUBFUN void XSLTCALL
89 		xsltParseGlobalParam		(xsltStylesheetPtr style,
90 						 xmlNodePtr cur);
91 XSLTPUBFUN void XSLTCALL
92 		xsltParseStylesheetVariable	(xsltTransformContextPtr ctxt,
93 						 xmlNodePtr cur);
94 XSLTPUBFUN void XSLTCALL
95 		xsltParseStylesheetParam	(xsltTransformContextPtr ctxt,
96 						 xmlNodePtr cur);
97 XSLTPUBFUN xsltStackElemPtr XSLTCALL
98 		xsltParseStylesheetCallerParam	(xsltTransformContextPtr ctxt,
99 						 xmlNodePtr cur);
100 XSLTPUBFUN int XSLTCALL
101 		xsltAddStackElemList		(xsltTransformContextPtr ctxt,
102 						 xsltStackElemPtr elems);
103 XSLTPUBFUN void XSLTCALL
104 		xsltFreeGlobalVariables		(xsltTransformContextPtr ctxt);
105 XSLTPUBFUN xmlXPathObjectPtr XSLTCALL
106 		xsltVariableLookup		(xsltTransformContextPtr ctxt,
107 						 const xmlChar *name,
108 						 const xmlChar *ns_uri);
109 XSLTPUBFUN xmlXPathObjectPtr XSLTCALL
110 		xsltXPathVariableLookup		(void *ctxt,
111 						 const xmlChar *name,
112 						 const xmlChar *ns_uri);
113 #ifdef __cplusplus
114 }
115 #endif
116 
117 #endif /* __XML_XSLT_VARIABLES_H__ */
118 
119