1 /*
2  * Summary: implementation of XML Schema Datatypes
3  * Description: module providing the XML Schema Datatypes implementation
4  *              both definition and validity checking
5  *
6  * Copy: See Copyright for the status of this software.
7  *
8  * Author: Daniel Veillard
9  */
10 
11 
12 #ifndef __XML_SCHEMA_TYPES_H__
13 #define __XML_SCHEMA_TYPES_H__
14 
15 #include <libxml/xmlversion.h>
16 
17 #ifdef LIBXML_SCHEMAS_ENABLED
18 
19 #include <libxml/schemasInternals.h>
20 #include <libxml/xmlschemas.h>
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
26 typedef enum {
27     XML_SCHEMA_WHITESPACE_UNKNOWN = 0,
28     XML_SCHEMA_WHITESPACE_PRESERVE = 1,
29     XML_SCHEMA_WHITESPACE_REPLACE = 2,
30     XML_SCHEMA_WHITESPACE_COLLAPSE = 3
31 } xmlSchemaWhitespaceValueType;
32 
33 XMLPUBFUN void XMLCALL
34     		xmlSchemaInitTypes		(void);
35 XMLPUBFUN void XMLCALL
36 		xmlSchemaCleanupTypes		(void);
37 XMLPUBFUN xmlSchemaTypePtr XMLCALL
38 		xmlSchemaGetPredefinedType	(const xmlChar *name,
39 						 const xmlChar *ns);
40 XMLPUBFUN int XMLCALL
41 		xmlSchemaValidatePredefinedType	(xmlSchemaTypePtr type,
42 						 const xmlChar *value,
43 						 xmlSchemaValPtr *val);
44 XMLPUBFUN int XMLCALL
45 		xmlSchemaValPredefTypeNode	(xmlSchemaTypePtr type,
46 						 const xmlChar *value,
47 						 xmlSchemaValPtr *val,
48 						 xmlNodePtr node);
49 XMLPUBFUN int XMLCALL
50 		xmlSchemaValidateFacet		(xmlSchemaTypePtr base,
51 						 xmlSchemaFacetPtr facet,
52 						 const xmlChar *value,
53 						 xmlSchemaValPtr val);
54 XMLPUBFUN int XMLCALL
55 		xmlSchemaValidateFacetWhtsp	(xmlSchemaFacetPtr facet,
56 						 xmlSchemaWhitespaceValueType fws,
57 						 xmlSchemaValType valType,
58 						 const xmlChar *value,
59 						 xmlSchemaValPtr val,
60 						 xmlSchemaWhitespaceValueType ws);
61 XMLPUBFUN void XMLCALL
62 		xmlSchemaFreeValue		(xmlSchemaValPtr val);
63 XMLPUBFUN xmlSchemaFacetPtr XMLCALL
64 		xmlSchemaNewFacet		(void);
65 XMLPUBFUN int XMLCALL
66 		xmlSchemaCheckFacet		(xmlSchemaFacetPtr facet,
67 						 xmlSchemaTypePtr typeDecl,
68 						 xmlSchemaParserCtxtPtr ctxt,
69 						 const xmlChar *name);
70 XMLPUBFUN void XMLCALL
71 		xmlSchemaFreeFacet		(xmlSchemaFacetPtr facet);
72 XMLPUBFUN int XMLCALL
73 		xmlSchemaCompareValues		(xmlSchemaValPtr x,
74 						 xmlSchemaValPtr y);
75 XMLPUBFUN xmlSchemaTypePtr XMLCALL
76     xmlSchemaGetBuiltInListSimpleTypeItemType	(xmlSchemaTypePtr type);
77 XMLPUBFUN int XMLCALL
78     xmlSchemaValidateListSimpleTypeFacet	(xmlSchemaFacetPtr facet,
79 						 const xmlChar *value,
80 						 unsigned long actualLen,
81 						 unsigned long *expectedLen);
82 XMLPUBFUN xmlSchemaTypePtr XMLCALL
83 		xmlSchemaGetBuiltInType		(xmlSchemaValType type);
84 XMLPUBFUN int XMLCALL
85 		xmlSchemaIsBuiltInTypeFacet	(xmlSchemaTypePtr type,
86 						 int facetType);
87 XMLPUBFUN xmlChar * XMLCALL
88 		xmlSchemaCollapseString		(const xmlChar *value);
89 XMLPUBFUN xmlChar * XMLCALL
90 		xmlSchemaWhiteSpaceReplace	(const xmlChar *value);
91 XMLPUBFUN unsigned long  XMLCALL
92 		xmlSchemaGetFacetValueAsULong	(xmlSchemaFacetPtr facet);
93 XMLPUBFUN int XMLCALL
94 		xmlSchemaValidateLengthFacet	(xmlSchemaTypePtr type,
95 						 xmlSchemaFacetPtr facet,
96 						 const xmlChar *value,
97 						 xmlSchemaValPtr val,
98 						 unsigned long *length);
99 XMLPUBFUN int XMLCALL
100 		xmlSchemaValidateLengthFacetWhtsp(xmlSchemaFacetPtr facet,
101 						  xmlSchemaValType valType,
102 						  const xmlChar *value,
103 						  xmlSchemaValPtr val,
104 						  unsigned long *length,
105 						  xmlSchemaWhitespaceValueType ws);
106 XMLPUBFUN int XMLCALL
107 		xmlSchemaValPredefTypeNodeNoNorm(xmlSchemaTypePtr type,
108 						 const xmlChar *value,
109 						 xmlSchemaValPtr *val,
110 						 xmlNodePtr node);
111 XMLPUBFUN int XMLCALL
112 		xmlSchemaGetCanonValue		(xmlSchemaValPtr val,
113 						 const xmlChar **retValue);
114 XMLPUBFUN int XMLCALL
115 		xmlSchemaGetCanonValueWhtsp	(xmlSchemaValPtr val,
116 						 const xmlChar **retValue,
117 						 xmlSchemaWhitespaceValueType ws);
118 XMLPUBFUN int XMLCALL
119 		xmlSchemaValueAppend		(xmlSchemaValPtr prev,
120 						 xmlSchemaValPtr cur);
121 XMLPUBFUN xmlSchemaValPtr XMLCALL
122 		xmlSchemaValueGetNext		(xmlSchemaValPtr cur);
123 XMLPUBFUN const xmlChar * XMLCALL
124 		xmlSchemaValueGetAsString	(xmlSchemaValPtr val);
125 XMLPUBFUN int XMLCALL
126 		xmlSchemaValueGetAsBoolean	(xmlSchemaValPtr val);
127 XMLPUBFUN xmlSchemaValPtr XMLCALL
128 		xmlSchemaNewStringValue		(xmlSchemaValType type,
129 						 const xmlChar *value);
130 XMLPUBFUN xmlSchemaValPtr XMLCALL
131 		xmlSchemaNewNOTATIONValue	(const xmlChar *name,
132 						 const xmlChar *ns);
133 XMLPUBFUN xmlSchemaValPtr XMLCALL
134 		xmlSchemaNewQNameValue		(const xmlChar *namespaceName,
135 						 const xmlChar *localName);
136 XMLPUBFUN int XMLCALL
137 		xmlSchemaCompareValuesWhtsp	(xmlSchemaValPtr x,
138 						 xmlSchemaWhitespaceValueType xws,
139 						 xmlSchemaValPtr y,
140 						 xmlSchemaWhitespaceValueType yws);
141 XMLPUBFUN xmlSchemaValPtr XMLCALL
142 		xmlSchemaCopyValue		(xmlSchemaValPtr val);
143 XMLPUBFUN xmlSchemaValType XMLCALL
144 		xmlSchemaGetValType		(xmlSchemaValPtr val);
145 
146 #ifdef __cplusplus
147 }
148 #endif
149 
150 #endif /* LIBXML_SCHEMAS_ENABLED */
151 #endif /* __XML_SCHEMA_TYPES_H__ */
152