You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by ga...@apache.org on 2003/01/29 20:51:48 UTC
cvs commit: xml-xerces/c/src/xercesc/validators/datatype DatatypeValidatorFactory.cpp DatatypeValidatorFactory.hpp
gareth 2003/01/29 11:51:48
Modified: c/src/xercesc/validators/datatype
DatatypeValidatorFactory.cpp
DatatypeValidatorFactory.hpp
Log:
type names / uris are now added to DatatypeValidators.
Revision Changes Path
1.11 +107 -57 xml-xerces/c/src/xercesc/validators/datatype/DatatypeValidatorFactory.cpp
Index: DatatypeValidatorFactory.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/datatype/DatatypeValidatorFactory.cpp,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- DatatypeValidatorFactory.cpp 3 Jan 2003 16:39:45 -0000 1.10
+++ DatatypeValidatorFactory.cpp 29 Jan 2003 19:51:48 -0000 1.11
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.11 2003/01/29 19:51:48 gareth
+ * type names / uris are now added to DatatypeValidators.
+ *
* Revision 1.10 2003/01/03 16:39:45 tng
* Performance: no need to create that many members for fBuiltInRegistry
*
@@ -210,6 +213,7 @@
XERCES_CPP_NAMESPACE_BEGIN
+
// ---------------------------------------------------------------------------
// DatatypeValidatorFactory: Local const data
// ---------------------------------------------------------------------------
@@ -401,7 +405,6 @@
void DatatypeValidatorFactory::expandRegistryToFullSchemaSet()
{
static XMLRegisterCleanup builtInRegistryCleanup;
-
// Initialize common Schema/DTD Datatype validator set if not initialized
if (fBuiltInRegistry == 0) {
RefHashTableOf<DatatypeValidator>* t = new RefHashTableOf<DatatypeValidator>(29);
@@ -413,49 +416,85 @@
{
builtInRegistryCleanup.registerCleanup(reinitRegistry);
- fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_STRING,
- new StringDatatypeValidator());
- fBuiltInRegistry->put((void*) XMLUni::fgNotationString,
- new NOTATIONDatatypeValidator());
-
-
- fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_ANYSIMPLETYPE,
- new AnySimpleTypeDatatypeValidator());
- fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_BOOLEAN,
- new BooleanDatatypeValidator());
- fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_DECIMAL,
- new DecimalDatatypeValidator());
- fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_HEXBINARY,
- new HexBinaryDatatypeValidator());
- fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_BASE64BINARY,
- new Base64BinaryDatatypeValidator());
- fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_DOUBLE,
- new DoubleDatatypeValidator());
- fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_FLOAT,
- new FloatDatatypeValidator());
- fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_ANYURI,
- new AnyURIDatatypeValidator());
- fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_QNAME,
- new QNameDatatypeValidator());
-
- fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_DATETIME,
- new DateTimeDatatypeValidator());
- fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_DATE,
- new DateDatatypeValidator());
- fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_TIME,
- new TimeDatatypeValidator());
- fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_DAY,
- new DayDatatypeValidator());
- fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_MONTH,
- new MonthDatatypeValidator());
- fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_MONTHDAY,
- new MonthDayDatatypeValidator());
- fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_YEAR,
- new YearDatatypeValidator());
- fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_YEARMONTH,
- new YearMonthDatatypeValidator());
- fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_DURATION,
- new DurationDatatypeValidator());
+ DatatypeValidator *dv = new StringDatatypeValidator();
+ dv->setTypeName(SchemaSymbols::fgDT_STRING, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_STRING, dv);
+
+ dv = new NOTATIONDatatypeValidator();
+ dv->setTypeName(XMLUni::fgNotationString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fBuiltInRegistry->put((void*) XMLUni::fgNotationString, dv);
+
+ dv = new AnySimpleTypeDatatypeValidator();
+ dv->setTypeName(SchemaSymbols::fgDT_ANYSIMPLETYPE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_ANYSIMPLETYPE, dv);
+
+ dv = new BooleanDatatypeValidator();
+ dv->setTypeName(SchemaSymbols::fgDT_BOOLEAN, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_BOOLEAN, dv);
+
+ dv = new DecimalDatatypeValidator();
+ dv->setTypeName(SchemaSymbols::fgDT_DECIMAL, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_DECIMAL, dv);
+
+ dv = new HexBinaryDatatypeValidator();
+ dv->setTypeName(SchemaSymbols::fgDT_HEXBINARY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_HEXBINARY, dv);
+
+ dv = new Base64BinaryDatatypeValidator();
+ dv->setTypeName(SchemaSymbols::fgDT_BASE64BINARY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_BASE64BINARY, dv);
+
+ dv = new DoubleDatatypeValidator();
+ dv->setTypeName(SchemaSymbols::fgDT_DOUBLE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_DOUBLE, dv);
+
+ dv = new FloatDatatypeValidator();
+ dv->setTypeName(SchemaSymbols::fgDT_FLOAT, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_FLOAT, dv);
+
+ dv = new AnyURIDatatypeValidator();
+ dv->setTypeName(SchemaSymbols::fgDT_ANYURI, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_ANYURI, dv);
+
+ dv = new QNameDatatypeValidator();
+ dv->setTypeName(SchemaSymbols::fgDT_QNAME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_QNAME, dv);
+
+ dv = new DateTimeDatatypeValidator();
+ dv->setTypeName(SchemaSymbols::fgDT_DATETIME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_DATETIME, dv);
+
+ dv = new DateDatatypeValidator();
+ dv->setTypeName(SchemaSymbols::fgDT_DATE, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_DATE, dv);
+
+ dv = new TimeDatatypeValidator();
+ dv->setTypeName(SchemaSymbols::fgDT_TIME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_TIME, dv);
+
+ dv = new DayDatatypeValidator();
+ dv->setTypeName(SchemaSymbols::fgDT_DAY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_DAY, dv);
+
+ dv = new MonthDatatypeValidator();
+ dv->setTypeName(SchemaSymbols::fgDT_MONTH, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_MONTH, dv);
+
+ dv = new MonthDayDatatypeValidator();
+ dv->setTypeName(SchemaSymbols::fgDT_MONTHDAY, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_MONTHDAY, dv);
+
+ dv = new YearDatatypeValidator();
+ dv->setTypeName(SchemaSymbols::fgDT_YEAR, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_YEAR, dv);
+
+ dv = new YearMonthDatatypeValidator();
+ dv->setTypeName(SchemaSymbols::fgDT_YEARMONTH, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_YEARMONTH, dv);
+
+ dv = new DurationDatatypeValidator();
+ dv->setTypeName(SchemaSymbols::fgDT_DURATION, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_DURATION, dv);
// REVISIT
// We are creating a lot of Hashtables for the facets of the different
@@ -469,8 +508,8 @@
new KVStringPair(SchemaSymbols::fgELT_WHITESPACE, SchemaSymbols::fgWS_REPLACE));
createDatatypeValidator(SchemaSymbols::fgDT_NORMALIZEDSTRING,
- getDatatypeValidator(SchemaSymbols::fgDT_STRING),
- facets, 0, false, 0, false);
+ getDatatypeValidator(SchemaSymbols::fgDT_STRING),
+ facets, 0, false, 0, false);
// Create 'token' datatype validator
facets = new RefHashTableOf<KVStringPair>(3);
@@ -481,11 +520,15 @@
getDatatypeValidator(SchemaSymbols::fgDT_NORMALIZEDSTRING),
facets, 0, false, 0, false);
- fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_NAME,
- new NameDatatypeValidator(getDatatypeValidator(SchemaSymbols::fgDT_TOKEN), 0, 0, 0));
- fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_NCNAME,
- new NCNameDatatypeValidator(getDatatypeValidator(SchemaSymbols::fgDT_NAME), 0, 0, 0));
+ dv = new NameDatatypeValidator(getDatatypeValidator(SchemaSymbols::fgDT_TOKEN), 0, 0, 0);
+ dv->setTypeName(SchemaSymbols::fgDT_NAME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_NAME, dv);
+
+
+ dv = new NCNameDatatypeValidator(getDatatypeValidator(SchemaSymbols::fgDT_NAME), 0, 0, 0);
+ dv->setTypeName(SchemaSymbols::fgDT_NCNAME, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fBuiltInRegistry->put((void*) SchemaSymbols::fgDT_NCNAME, dv);
// Create 'NMTOKEN' datatype validator
facets = new RefHashTableOf<KVStringPair>(3);
@@ -660,16 +703,21 @@
fUserDefinedRegistry = new RefHashTableOf<DatatypeValidator>(29);
if (!getDatatypeValidator(XMLUni::fgIDRefsString)) {
- fUserDefinedRegistry->put((void*) XMLUni::fgIDString,
- new IDDatatypeValidator(getDatatypeValidator(SchemaSymbols::fgDT_NCNAME), 0, 0, 0));
- fUserDefinedRegistry->put((void*) XMLUni::fgIDRefString,
- new IDREFDatatypeValidator(getDatatypeValidator(SchemaSymbols::fgDT_NCNAME), 0, 0, 0));
- fUserDefinedRegistry->put((void*) XMLUni::fgEntityString,
- new ENTITYDatatypeValidator(getDatatypeValidator(SchemaSymbols::fgDT_NCNAME), 0, 0, 0));
+ DatatypeValidator *dv = new IDDatatypeValidator(getDatatypeValidator(SchemaSymbols::fgDT_NCNAME), 0, 0, 0);
+ dv->setTypeName(XMLUni::fgIDString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fUserDefinedRegistry->put((void*) XMLUni::fgIDString, dv);
+
+ dv = new IDREFDatatypeValidator(getDatatypeValidator(SchemaSymbols::fgDT_NCNAME), 0, 0, 0);
+ dv->setTypeName(XMLUni::fgIDRefString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fUserDefinedRegistry->put((void*) XMLUni::fgIDRefString, dv);
+
+ dv = new ENTITYDatatypeValidator(getDatatypeValidator(SchemaSymbols::fgDT_NCNAME), 0, 0, 0);
+ dv->setTypeName(XMLUni::fgEntityString, SchemaSymbols::fgURI_SCHEMAFORSCHEMA);
+ fUserDefinedRegistry->put((void*) XMLUni::fgEntityString, dv);
// Create 'IDREFS' datatype validator
- createDatatypeValidator(XMLUni::fgIDRefsString,
+ createDatatypeValidator(XMLUni::fgIDRefsString,
getDatatypeValidator(XMLUni::fgIDRefString), 0, 0, true, 0, true);
// Create 'ENTITIES' datatype validator
@@ -736,6 +784,7 @@
else {
fBuiltInRegistry->put((void *)typeName, datatypeValidator);
}
+ datatypeValidator->setTypeName(typeName);
}
return datatypeValidator;
@@ -768,6 +817,7 @@
else {
fBuiltInRegistry->put((void *)typeName, datatypeValidator);
}
+ datatypeValidator->setTypeName(typeName);
}
return datatypeValidator;
1.7 +12 -9 xml-xerces/c/src/xercesc/validators/datatype/DatatypeValidatorFactory.hpp
Index: DatatypeValidatorFactory.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/datatype/DatatypeValidatorFactory.hpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- DatatypeValidatorFactory.hpp 18 Dec 2002 14:17:55 -0000 1.6
+++ DatatypeValidatorFactory.hpp 29 Jan 2003 19:51:48 -0000 1.7
@@ -227,6 +227,12 @@
// -----------------------------------------------------------------------
void cleanUp();
+ /**
+ * helper method to set the uri to the schema uri and name to tName for the DatatypeValidator
+ * tName in ref.
+ */
+ void setDatatypeName(RefHashTableOf<DatatypeValidator>* reg, const XMLCh* tName);
+
// -----------------------------------------------------------------------
// Private data members
//
@@ -236,28 +242,25 @@
// fBuiltInRegistry
// This is a hashtable of built-in primitive datatype validators.
// -----------------------------------------------------------------------
- RefHashTableOf<DatatypeValidator>* fUserDefinedRegistry;
- static RefHashTableOf<DatatypeValidator>* fBuiltInRegistry;
-};
+ XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf<XERCES_CPP_NAMESPACE_QUALIFIER DatatypeValidator>* fUserDefinedRegistry;
+ static XERCES_CPP_NAMESPACE_QUALIFIER RefHashTableOf<DatatypeValidator>* fBuiltInRegistry;
+ friend class XPath2ContextImpl;
+};
-// ---------------------------------------------------------------------------
-// DatatypeValidatorFactory: Getters
-// ---------------------------------------------------------------------------
inline DatatypeValidator*
DatatypeValidatorFactory::getDatatypeValidator(const XMLCh* const dvType) const
{
if (dvType) {
-
if (fBuiltInRegistry && fBuiltInRegistry->containsKey(dvType)) {
return fBuiltInRegistry->get(dvType);
}
if (fUserDefinedRegistry && fUserDefinedRegistry->containsKey(dvType)) {
return fUserDefinedRegistry->get(dvType);
+
}
}
-
return 0;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org