You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by pe...@apache.org on 2003/11/05 17:37:18 UTC
cvs commit: xml-xerces/c/src/xercesc/validators/datatype DatatypeValidator.cpp DatatypeValidator.hpp
peiyongz 2003/11/05 08:37:18
Modified: c/src/xercesc/validators/datatype DatatypeValidator.cpp
DatatypeValidator.hpp
Log:
don't serialize built-in baseValidator, and don't serialize localName/uriName
Revision Changes Path
1.14 +60 -11 xml-xerces/c/src/xercesc/validators/datatype/DatatypeValidator.cpp
Index: DatatypeValidator.cpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/datatype/DatatypeValidator.cpp,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -r1.13 -r1.14
--- DatatypeValidator.cpp 17 Oct 2003 21:13:44 -0000 1.13
+++ DatatypeValidator.cpp 5 Nov 2003 16:37:18 -0000 1.14
@@ -56,6 +56,9 @@
/*
* $Log$
+ * Revision 1.14 2003/11/05 16:37:18 peiyongz
+ * don't serialize built-in baseValidator, and don't serialize localName/uriName
+ *
* Revision 1.13 2003/10/17 21:13:44 peiyongz
* using XTemplateSerializer
*
@@ -311,7 +314,19 @@
serEng<<fFixed;
serEng<<(int)fType;
- storeDV(serEng, fBaseValidator);
+ /***
+ * don't serialize the fBaseValidator if it is a built-in
+ ***/
+ if (isBuiltInDV(fBaseValidator))
+ {
+ serEng<<true;
+ serEng.writeString(fBaseValidator->getTypeName());
+ }
+ else
+ {
+ serEng<<false;
+ storeDV(serEng, fBaseValidator);
+ }
/***
* Serialize RefHashTableOf<KVStringPair>
@@ -321,17 +336,16 @@
serEng.writeString(fPattern);
/***
- * don't serialize fRegex
+ * don't serialize
+ * fRegex
+ * fTypeLocalName
+ * fTypeUri
***/
-
serEng.writeString(fTypeName);
- serEng.writeString(fTypeLocalName);
- serEng.writeString(fTypeUri);
+
}
else
{
- int dataLen = 0;
-
serEng>>fAnonymous;
serEng>>fWhiteSpace;
serEng>>fFinalSet;
@@ -347,7 +361,28 @@
* get the basevalidator's type
*
***/
- fBaseValidator = loadDV(serEng);
+ bool isBuiltInDV = false;
+ serEng>>isBuiltInDV;
+
+ if (isBuiltInDV)
+ {
+ XMLCh* baseTypeName;
+ serEng.readString(baseTypeName);
+ ArrayJanitor<XMLCh> janName(baseTypeName, fMemoryManager);
+
+ /***
+ * Link to the fBuiltInRegistry
+ *
+ * Since DatatypeValidatorFactory is always the first one
+ * to be deserialized in SchemaGrammar, we are sure that
+ * the BuiltInRegistry shall be available now.
+ ***/
+ fBaseValidator = DatatypeValidatorFactory::getBuiltInRegistry()->get(baseTypeName);
+ }
+ else
+ {
+ fBaseValidator = loadDV(serEng);
+ }
/***
*
@@ -363,9 +398,16 @@
***/
fRegex = 0;
- serEng.readString(fTypeName);
- serEng.readString((XMLCh*&)fTypeLocalName);
- serEng.readString((XMLCh*&)fTypeUri);
+ /***
+ * Recreate through setTypeName()
+ * fTypeName
+ * fTypeLocalName
+ * fTypeUri
+ ***/
+ XMLCh* typeName;
+ serEng.readString(typeName);
+ ArrayJanitor<XMLCh> janName(typeName, fMemoryManager);
+ setTypeName(typeName);
}
@@ -552,6 +594,13 @@
break;
}
+}
+
+inline bool
+DatatypeValidator::isBuiltInDV(DatatypeValidator* const dv)
+{
+ return dv? DatatypeValidatorFactory::getBuiltInRegistry()->containsKey(dv->getTypeName())
+ : false;
}
XERCES_CPP_NAMESPACE_END
1.16 +5 -4 xml-xerces/c/src/xercesc/validators/datatype/DatatypeValidator.hpp
Index: DatatypeValidator.hpp
===================================================================
RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/datatype/DatatypeValidator.hpp,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -r1.15 -r1.16
--- DatatypeValidator.hpp 7 Oct 2003 19:39:37 -0000 1.15
+++ DatatypeValidator.hpp 5 Nov 2003 16:37:18 -0000 1.16
@@ -427,7 +427,9 @@
// -----------------------------------------------------------------------
// CleanUp methods
// -----------------------------------------------------------------------
- void cleanUp();
+ void cleanUp();
+
+ bool isBuiltInDV(DatatypeValidator* const);
// -----------------------------------------------------------------------
// Private data members
@@ -539,7 +541,7 @@
inline const XMLCh* DatatypeValidator::getTypeName() const
{
- return fTypeLocalName;
+ return fTypeName;
}
inline bool DatatypeValidator::getAnonymous() const
@@ -634,7 +636,6 @@
return false;
}
-
XERCES_CPP_NAMESPACE_END
---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org