text: /*
   * Summary: implementation of XML Schema Datatypes
   * Description: module providing the XML Schema Datatypes implementation
   *              both definition and validity checking
   *
   * Copy: See Copyright for the status of this software.
   *
   * Author: Daniel Veillard
   */
  
  
  #ifndef __XML_SCHEMA_TYPES_H__
  #define __XML_SCHEMA_TYPES_H__
  
  #include <libxml/xmlversion.h>
  
  #ifdef LIBXML_SCHEMAS_ENABLED
  
  #include <libxml/schemasInternals.h>
  #include <libxml/xmlschemas.h>
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  typedef enum {
      XML_SCHEMA_WHITESPACE_UNKNOWN = 0,
      XML_SCHEMA_WHITESPACE_PRESERVE = 1,
      XML_SCHEMA_WHITESPACE_REPLACE = 2,
      XML_SCHEMA_WHITESPACE_COLLAPSE = 3
  } xmlSchemaWhitespaceValueType;
  
  XMLPUBFUN void XMLCALL
  		xmlSchemaInitTypes		(void);
  XMLPUBFUN void XMLCALL
  		xmlSchemaCleanupTypes		(void);
  XMLPUBFUN xmlSchemaTypePtr XMLCALL
  		xmlSchemaGetPredefinedType	(const xmlChar *name,
  						 const xmlChar *ns);
  XMLPUBFUN int XMLCALL
  		xmlSchemaValidatePredefinedType	(xmlSchemaTypePtr type,
  						 const xmlChar *value,
  						 xmlSchemaValPtr *val);
  XMLPUBFUN int XMLCALL
  		xmlSchemaValPredefTypeNode	(xmlSchemaTypePtr type,
  						 const xmlChar *value,
  						 xmlSchemaValPtr *val,
  						 xmlNodePtr node);
  XMLPUBFUN int XMLCALL
  		xmlSchemaValidateFacet		(xmlSchemaTypePtr base,
  						 xmlSchemaFacetPtr facet,
  						 const xmlChar *value,
  						 xmlSchemaValPtr val);
  XMLPUBFUN int XMLCALL
  		xmlSchemaValidateFacetWhtsp	(xmlSchemaFacetPtr facet,
  						 xmlSchemaWhitespaceValueType fws,
  						 xmlSchemaValType valType,
  						 const xmlChar *value,
  						 xmlSchemaValPtr val,
  						 xmlSchemaWhitespaceValueType ws);
  XMLPUBFUN void XMLCALL
  		xmlSchemaFreeValue		(xmlSchemaValPtr val);
  XMLPUBFUN xmlSchemaFacetPtr XMLCALL
  		xmlSchemaNewFacet		(void);
  XMLPUBFUN int XMLCALL
  		xmlSchemaCheckFacet		(xmlSchemaFacetPtr facet,
  						 xmlSchemaTypePtr typeDecl,
  						 xmlSchemaParserCtxtPtr ctxt,
  						 const xmlChar *name);
  XMLPUBFUN void XMLCALL
  		xmlSchemaFreeFacet		(xmlSchemaFacetPtr facet);
  XMLPUBFUN int XMLCALL
  		xmlSchemaCompareValues		(xmlSchemaValPtr x,
  						 xmlSchemaValPtr y);
  XMLPUBFUN xmlSchemaTypePtr XMLCALL
      xmlSchemaGetBuiltInListSimpleTypeItemType	(xmlSchemaTypePtr type);
  XMLPUBFUN int XMLCALL
      xmlSchemaValidateListSimpleTypeFacet	(xmlSchemaFacetPtr facet,
  						 const xmlChar *value,
  						 unsigned long actualLen,
  						 unsigned long *expectedLen);
  XMLPUBFUN xmlSchemaTypePtr XMLCALL
  		xmlSchemaGetBuiltInType		(xmlSchemaValType type);
  XMLPUBFUN int XMLCALL
  		xmlSchemaIsBuiltInTypeFacet	(xmlSchemaTypePtr type,
  						 int facetType);
  XMLPUBFUN xmlChar * XMLCALL
  		xmlSchemaCollapseString		(const xmlChar *value);
  XMLPUBFUN xmlChar * XMLCALL
  		xmlSchemaWhiteSpaceReplace	(const xmlChar *value);
  XMLPUBFUN unsigned long  XMLCALL
  		xmlSchemaGetFacetValueAsULong	(xmlSchemaFacetPtr facet);
  XMLPUBFUN int XMLCALL
  		xmlSchemaValidateLengthFacet	(xmlSchemaTypePtr type,
  						 xmlSchemaFacetPtr facet,
  						 const xmlChar *value,
  						 xmlSchemaValPtr val,
  						 unsigned long *length);
  XMLPUBFUN int XMLCALL
  		xmlSchemaValidateLengthFacetWhtsp(xmlSchemaFacetPtr facet,
  						  xmlSchemaValType valType,
  						  const xmlChar *value,
  						  xmlSchemaValPtr val,
  						  unsigned long *length,
  						  xmlSchemaWhitespaceValueType ws);
  XMLPUBFUN int XMLCALL
  		xmlSchemaValPredefTypeNodeNoNorm(xmlSchemaTypePtr type,
  						 const xmlChar *value,
  						 xmlSchemaValPtr *val,
  						 xmlNodePtr node);
  XMLPUBFUN int XMLCALL
  		xmlSchemaGetCanonValue		(xmlSchemaValPtr val,
  						 const xmlChar **retValue);
  XMLPUBFUN int XMLCALL
  		xmlSchemaGetCanonValueWhtsp	(xmlSchemaValPtr val,
  						 const xmlChar **retValue,
  						 xmlSchemaWhitespaceValueType ws);
  XMLPUBFUN int XMLCALL
  		xmlSchemaValueAppend		(xmlSchemaValPtr prev,
  						 xmlSchemaValPtr cur);
  XMLPUBFUN xmlSchemaValPtr XMLCALL
  		xmlSchemaValueGetNext		(xmlSchemaValPtr cur);
  XMLPUBFUN const xmlChar * XMLCALL
  		xmlSchemaValueGetAsString	(xmlSchemaValPtr val);
  XMLPUBFUN int XMLCALL
  		xmlSchemaValueGetAsBoolean	(xmlSchemaValPtr val);
  XMLPUBFUN xmlSchemaValPtr XMLCALL
  		xmlSchemaNewStringValue		(xmlSchemaValType type,
  						 const xmlChar *value);
  XMLPUBFUN xmlSchemaValPtr XMLCALL
  		xmlSchemaNewNOTATIONValue	(const xmlChar *name,
  						 const xmlChar *ns);
  XMLPUBFUN xmlSchemaValPtr XMLCALL
  		xmlSchemaNewQNameValue		(const xmlChar *namespaceName,
  						 const xmlChar *localName);
  XMLPUBFUN int XMLCALL
  		xmlSchemaCompareValuesWhtsp	(xmlSchemaValPtr x,
  						 xmlSchemaWhitespaceValueType xws,
  						 xmlSchemaValPtr y,
  						 xmlSchemaWhitespaceValueType yws);
  XMLPUBFUN xmlSchemaValPtr XMLCALL
  		xmlSchemaCopyValue		(xmlSchemaValPtr val);
  XMLPUBFUN xmlSchemaValType XMLCALL
  		xmlSchemaGetValType		(xmlSchemaValPtr val);
  
  #ifdef __cplusplus
  }
  #endif
  
  #endif /* LIBXML_SCHEMAS_ENABLED */
  #endif /* __XML_SCHEMA_TYPES_H__ */
  