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]

Reply via email to