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
23extern "C" {
24#endif
25
26typedef 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
33XMLPUBFUN void XMLCALL
34    		xmlSchemaInitTypes		(void);
35XMLPUBFUN void XMLCALL
36		xmlSchemaCleanupTypes		(void);
37XMLPUBFUN xmlSchemaTypePtr XMLCALL
38		xmlSchemaGetPredefinedType	(const xmlChar *name,
39						 const xmlChar *ns);
40XMLPUBFUN int XMLCALL
41		xmlSchemaValidatePredefinedType	(xmlSchemaTypePtr type,
42						 const xmlChar *value,
43						 xmlSchemaValPtr *val);
44XMLPUBFUN int XMLCALL
45		xmlSchemaValPredefTypeNode	(xmlSchemaTypePtr type,
46						 const xmlChar *value,
47						 xmlSchemaValPtr *val,
48						 xmlNodePtr node);
49XMLPUBFUN int XMLCALL
50		xmlSchemaValidateFacet		(xmlSchemaTypePtr base,
51						 xmlSchemaFacetPtr facet,
52						 const xmlChar *value,
53						 xmlSchemaValPtr val);
54XMLPUBFUN int XMLCALL
55		xmlSchemaValidateFacetWhtsp	(xmlSchemaFacetPtr facet,
56						 xmlSchemaWhitespaceValueType fws,
57						 xmlSchemaValType valType,
58						 const xmlChar *value,
59						 xmlSchemaValPtr val,
60						 xmlSchemaWhitespaceValueType ws);
61XMLPUBFUN void XMLCALL
62		xmlSchemaFreeValue		(xmlSchemaValPtr val);
63XMLPUBFUN xmlSchemaFacetPtr XMLCALL
64		xmlSchemaNewFacet		(void);
65XMLPUBFUN int XMLCALL
66		xmlSchemaCheckFacet		(xmlSchemaFacetPtr facet,
67						 xmlSchemaTypePtr typeDecl,
68						 xmlSchemaParserCtxtPtr ctxt,
69						 const xmlChar *name);
70XMLPUBFUN void XMLCALL
71		xmlSchemaFreeFacet		(xmlSchemaFacetPtr facet);
72XMLPUBFUN int XMLCALL
73		xmlSchemaCompareValues		(xmlSchemaValPtr x,
74						 xmlSchemaValPtr y);
75XMLPUBFUN xmlSchemaTypePtr XMLCALL
76    xmlSchemaGetBuiltInListSimpleTypeItemType	(xmlSchemaTypePtr type);
77XMLPUBFUN int XMLCALL
78    xmlSchemaValidateListSimpleTypeFacet	(xmlSchemaFacetPtr facet,
79						 const xmlChar *value,
80						 unsigned long actualLen,
81						 unsigned long *expectedLen);
82XMLPUBFUN xmlSchemaTypePtr XMLCALL
83		xmlSchemaGetBuiltInType		(xmlSchemaValType type);
84XMLPUBFUN int XMLCALL
85		xmlSchemaIsBuiltInTypeFacet	(xmlSchemaTypePtr type,
86						 int facetType);
87XMLPUBFUN xmlChar * XMLCALL
88		xmlSchemaCollapseString		(const xmlChar *value);
89XMLPUBFUN xmlChar * XMLCALL
90		xmlSchemaWhiteSpaceReplace	(const xmlChar *value);
91XMLPUBFUN unsigned long  XMLCALL
92		xmlSchemaGetFacetValueAsULong	(xmlSchemaFacetPtr facet);
93XMLPUBFUN int XMLCALL
94		xmlSchemaValidateLengthFacet	(xmlSchemaTypePtr type,
95						 xmlSchemaFacetPtr facet,
96						 const xmlChar *value,
97						 xmlSchemaValPtr val,
98						 unsigned long *length);
99XMLPUBFUN int XMLCALL
100		xmlSchemaValidateLengthFacetWhtsp(xmlSchemaFacetPtr facet,
101						  xmlSchemaValType valType,
102						  const xmlChar *value,
103						  xmlSchemaValPtr val,
104						  unsigned long *length,
105						  xmlSchemaWhitespaceValueType ws);
106XMLPUBFUN int XMLCALL
107		xmlSchemaValPredefTypeNodeNoNorm(xmlSchemaTypePtr type,
108						 const xmlChar *value,
109						 xmlSchemaValPtr *val,
110						 xmlNodePtr node);
111XMLPUBFUN int XMLCALL
112		xmlSchemaGetCanonValue		(xmlSchemaValPtr val,
113						 const xmlChar **retValue);
114XMLPUBFUN int XMLCALL
115		xmlSchemaGetCanonValueWhtsp	(xmlSchemaValPtr val,
116						 const xmlChar **retValue,
117						 xmlSchemaWhitespaceValueType ws);
118XMLPUBFUN int XMLCALL
119		xmlSchemaValueAppend		(xmlSchemaValPtr prev,
120						 xmlSchemaValPtr cur);
121XMLPUBFUN xmlSchemaValPtr XMLCALL
122		xmlSchemaValueGetNext		(xmlSchemaValPtr cur);
123XMLPUBFUN const xmlChar * XMLCALL
124		xmlSchemaValueGetAsString	(xmlSchemaValPtr val);
125XMLPUBFUN int XMLCALL
126		xmlSchemaValueGetAsBoolean	(xmlSchemaValPtr val);
127XMLPUBFUN xmlSchemaValPtr XMLCALL
128		xmlSchemaNewStringValue		(xmlSchemaValType type,
129						 const xmlChar *value);
130XMLPUBFUN xmlSchemaValPtr XMLCALL
131		xmlSchemaNewNOTATIONValue	(const xmlChar *name,
132						 const xmlChar *ns);
133XMLPUBFUN xmlSchemaValPtr XMLCALL
134		xmlSchemaNewQNameValue		(const xmlChar *namespaceName,
135						 const xmlChar *localName);
136XMLPUBFUN int XMLCALL
137		xmlSchemaCompareValuesWhtsp	(xmlSchemaValPtr x,
138						 xmlSchemaWhitespaceValueType xws,
139						 xmlSchemaValPtr y,
140						 xmlSchemaWhitespaceValueType yws);
141XMLPUBFUN xmlSchemaValPtr XMLCALL
142		xmlSchemaCopyValue		(xmlSchemaValPtr val);
143XMLPUBFUN 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