gareth 2003/01/29 11:53:35
Modified: c/src/xercesc/validators/datatype UnionDatatypeValidator.cpp
UnionDatatypeValidator.hpp
Log:
we now store information about which validator was used to validate.
Revision Changes Path
1.7 +12 -1
xml-xerces/c/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp
Index: UnionDatatypeValidator.cpp
===================================================================
RCS file:
/home/cvs/xml-xerces/c/src/xercesc/validators/datatype/UnionDatatypeValidator.cpp,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- UnionDatatypeValidator.cpp 18 Dec 2002 14:17:55 -0000 1.6
+++ UnionDatatypeValidator.cpp 29 Jan 2003 19:53:35 -0000 1.7
@@ -57,6 +57,9 @@
/*
* $Id$
* $Log$
+ * Revision 1.7 2003/01/29 19:53:35 gareth
+ * we now store information about which validator was used to validate.
+ *
* Revision 1.6 2002/12/18 14:17:55 gareth
* Fix to bug #13438. When you eant a vector that calls delete[] on its members you
should use RefArrayVectorOf.
*
@@ -114,6 +117,7 @@
,fEnumerationInherited(false)
,fEnumeration(0)
,fMemberTypeValidators(0)
+,fValidatedDatatype(0)
{}
UnionDatatypeValidator::~UnionDatatypeValidator()
@@ -128,6 +132,7 @@
,fEnumerationInherited(false)
,fEnumeration(0)
,fMemberTypeValidators(0)
+,fValidatedDatatype(0)
{
if ( !memberTypeValidators )
{
@@ -148,6 +153,7 @@
,fEnumerationInherited(false)
,fEnumeration(0)
,fMemberTypeValidators(0)
+,fValidatedDatatype(0)
{
//
// baseValidator another UnionDTV from which,
@@ -284,6 +290,7 @@
//
void UnionDatatypeValidator::checkContent(const XMLCh* const content, bool asBase)
{
+
DatatypeValidator* bv = getBaseValidator();
if (bv)
((UnionDatatypeValidator*)bv)->checkContent(content, true);
@@ -302,6 +309,10 @@
{
fMemberTypeValidators->elementAt(i)->validate(content);
memTypeValid = true;
+
+ //set the name of the type actually used to validate the content
+ DatatypeValidator *dtv = fMemberTypeValidators->elementAt(i);
+ fValidatedDatatype = dtv;
}
catch (XMLException&)
{
1.6 +51 -2
xml-xerces/c/src/xercesc/validators/datatype/UnionDatatypeValidator.hpp
Index: UnionDatatypeValidator.hpp
===================================================================
RCS file:
/home/cvs/xml-xerces/c/src/xercesc/validators/datatype/UnionDatatypeValidator.hpp,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- UnionDatatypeValidator.hpp 10 Jan 2003 16:48:47 -0000 1.5
+++ UnionDatatypeValidator.hpp 29 Jan 2003 19:53:35 -0000 1.6
@@ -57,6 +57,9 @@
/*
* $Id$
* $Log$
+ * Revision 1.6 2003/01/29 19:53:35 gareth
+ * we now store information about which validator was used to validate.
+ *
* Revision 1.5 2003/01/10 16:48:47 tng
* [Bug 14912] crashes inside UnionDatatypeValidator::isSubstitutableBy. Patch
from Alberto Massari.
*
@@ -216,6 +219,30 @@
RefVectorOf<DatatypeValidator>* getMemberTypeValidators() const;
+
+ /**
+ * Returns the type name that was actually used to validate the last time
validate was called
+ * note - this does not mean that it fully validated sucessfully
+ **/
+ const XMLCh* getMemberTypeName() const;
+
+ /**
+ * Returns the type uri that was actually used to validate the last time
validate was called
+ * note - this does not mean that it fully validated sucessfully
+ **/
+ const XMLCh* getMemberTypeUri() const;
+
+ /**
+ * Returns true if the type that was actually used to validate the last time
validate was called
+ * is anonymous
+ */
+ bool getMemberTypeAnonymous() const;
+
+ /**
+ * Called inbetween uses of this validator to reset PSVI information
+ */
+ void reset();
+
private:
void checkContent(const XMLCh* const content, bool asBase);
@@ -225,7 +252,7 @@
, RefArrayVectorOf<XMLCh>* const enums);
void cleanUp();
-
+
RefArrayVectorOf<XMLCh>* getEnumeration() const;
void setEnumeration(RefArrayVectorOf<XMLCh>*, bool);
@@ -240,10 +267,15 @@
// fMemberTypeValidators
// we own it.
//
+ // fValidatedDatatype
+ // the dataTypeValidator that was actually used to validate the last time
validate was called
+ //
// -----------------------------------------------------------------------
+
bool fEnumerationInherited;
RefArrayVectorOf<XMLCh>* fEnumeration;
RefVectorOf<DatatypeValidator>* fMemberTypeValidators;
+ DatatypeValidator* fValidatedDatatype;
};
inline DatatypeValidator* UnionDatatypeValidator::newInstance(
@@ -267,6 +299,7 @@
if (fMemberTypeValidators)
delete fMemberTypeValidators;
+
}
inline RefArrayVectorOf<XMLCh>* UnionDatatypeValidator:: getEnumeration() const
@@ -338,6 +371,22 @@
}
}
return false;
+}
+
+inline const XMLCh* UnionDatatypeValidator::getMemberTypeName() const {
+ return fValidatedDatatype->getTypeLocalName();
+}
+
+inline const XMLCh* UnionDatatypeValidator::getMemberTypeUri() const {
+ return fValidatedDatatype->getTypeUri();
+}
+
+inline bool UnionDatatypeValidator::getMemberTypeAnonymous() const {
+ return fValidatedDatatype->getAnonymous();
+}
+
+inline void UnionDatatypeValidator::reset() {
+ fValidatedDatatype = 0;
}
XERCES_CPP_NAMESPACE_END
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]