From c5a70f264550ee39da267e81dccd95508ed367dd Mon Sep 17 00:00:00 2001 From: Daniel Veillard Date: Thu, 6 Feb 2003 23:41:59 +0000 Subject: [PATCH] added the boolean base type. Daniel * xmlschemastypes.c: added the boolean base type. Daniel --- ChangeLog | 4 ++++ xmlschemastypes.c | 29 +++++++++++++++++++++++++++++ 2 files changed, 33 insertions(+) diff --git a/ChangeLog b/ChangeLog index 6cf9169d..d69c40aa 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,7 @@ +Fri Feb 7 01:43:38 CET 2003 Daniel Veillard + + * xmlschemastypes.c: added the boolean base type. + Thu Feb 6 10:23:52 CET 2003 Daniel Veillard * xmlschemastypes.c: started implementing some of the missing diff --git a/xmlschemastypes.c b/xmlschemastypes.c index aff3e575..89d30dbf 100644 --- a/xmlschemastypes.c +++ b/xmlschemastypes.c @@ -55,6 +55,7 @@ typedef enum { XML_SCHEMAS_DURATION, XML_SCHEMAS_FLOAT, XML_SCHEMAS_DOUBLE, + XML_SCHEMAS_BOOLEAN, XML_SCHEMAS_INT, XML_SCHEMAS_, XML_SCHEMAS_XXX @@ -107,6 +108,7 @@ struct _xmlSchemaVal { xmlSchemaValDuration dur; float f; double d; + int b; } value; }; @@ -131,6 +133,7 @@ static xmlSchemaTypePtr xmlSchemaTypeGMonthDef = NULL; static xmlSchemaTypePtr xmlSchemaTypeDurationDef = NULL; static xmlSchemaTypePtr xmlSchemaTypeNmtoken = NULL; static xmlSchemaTypePtr xmlSchemaTypeFloatDef = NULL; +static xmlSchemaTypePtr xmlSchemaTypeBooleanDef = NULL; static xmlSchemaTypePtr xmlSchemaTypeDoubleDef = NULL; static xmlSchemaTypePtr xmlSchemaTypeNameDef = NULL; static xmlSchemaTypePtr xmlSchemaTypeQNameDef = NULL; @@ -209,6 +212,7 @@ xmlSchemaInitTypes(void) { xmlSchemaTypeNmtoken = xmlSchemaInitBasicType("NMTOKEN"); xmlSchemaTypeFloatDef = xmlSchemaInitBasicType("float"); xmlSchemaTypeDoubleDef = xmlSchemaInitBasicType("double"); + xmlSchemaTypeBooleanDef = xmlSchemaInitBasicType("boolean"); xmlSchemaTypeNameDef = xmlSchemaInitBasicType("Name"); xmlSchemaTypeQNameDef = xmlSchemaInitBasicType("QName"); xmlSchemaTypeAnyURIDef = xmlSchemaInitBasicType("anyURI"); @@ -1429,6 +1433,31 @@ xmlSchemaValidatePredefinedType(xmlSchemaTypePtr type, const xmlChar *value, } xmlFreeURI(uri); return(0); + } else if (type == xmlSchemaTypeBooleanDef) { + const xmlChar *cur = value; + + if ((cur[0] == '0') && (cur[1] == 0)) + ret = 0; + else if ((cur[0] == '1') && (cur[1] == 0)) + ret = 1; + else if ((cur[0] == 't') && (cur[1] == 'r') && (cur[2] == 'u') && + (cur[3] == 'e') && (cur[4] == 0)) + ret = 1; + else if ((cur[0] == 'f') && (cur[1] == 'a') && (cur[2] == 'l') && + (cur[3] == 's') && (cur[4] == 'e') && (cur[5] == 0)) + ret = 0; + else + return(1); + if (val != NULL) { + v = xmlSchemaNewValue(XML_SCHEMAS_BOOLEAN); + if (v != NULL) { + v->value.b = ret; + *val = v; + } else { + return(-1); + } + } + return(0); } else { TODO return(0);