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]