peiyongz    2003/11/12 12:31:34

  Modified:    c/src/xercesc/validators/datatype
                        ENTITYDatatypeValidator.cpp IDDatatypeValidator.cpp
                        IDREFDatatypeValidator.cpp
  Log:
  Using ValidationContext to validate()
  
  Revision  Changes    Path
  1.8       +9 -25     
xml-xerces/c/src/xercesc/validators/datatype/ENTITYDatatypeValidator.cpp
  
  Index: ENTITYDatatypeValidator.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/c/src/xercesc/validators/datatype/ENTITYDatatypeValidator.cpp,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ENTITYDatatypeValidator.cpp       30 Sep 2003 18:17:53 -0000      1.7
  +++ ENTITYDatatypeValidator.cpp       12 Nov 2003 20:31:33 -0000      1.8
  @@ -57,6 +57,9 @@
   /*
    * $Id$
    * $Log$
  + * Revision 1.8  2003/11/12 20:31:33  peiyongz
  + * Using ValidationContext to validate()
  + *
    * Revision 1.7  2003/09/30 18:17:53  peiyongz
    * Implementation of Serialization/Deserialization
    *
  @@ -115,7 +118,6 @@
   // ---------------------------------------------------------------------------
   ENTITYDatatypeValidator::ENTITYDatatypeValidator(MemoryManager* const manager)
   :StringDatatypeValidator(0, 0, 0, DatatypeValidator::ENTITY, manager)
  -,fEntityDeclPool(0)
   {}
   
   ENTITYDatatypeValidator::ENTITYDatatypeValidator(
  @@ -125,7 +127,6 @@
                           , const int                           finalSet
                           , MemoryManager* const                manager)
   :StringDatatypeValidator(baseValidator, facets, finalSet, 
DatatypeValidator::ENTITY, manager)
  -,fEntityDeclPool(0)
   {
       init(enums);
   }
  @@ -153,40 +154,23 @@
       return ( XMLString::equals(lValue, rValue)? 0 : -1);
   }
   
  -void ENTITYDatatypeValidator::validate(const XMLCh* const content)
  +void ENTITYDatatypeValidator::validate(const XMLCh*             const content
  +                                     ,       ValidationContext* const context)
   {
       // use StringDatatypeValidator (which in turn, invoke
       // the baseValidator) to validate content against
       // facets if any.
       //
  -    StringDatatypeValidator::validate(content);
  +    StringDatatypeValidator::validate(content, context);
   
       //
       // parse the entity iff an EntityDeclPool is provided
       //
  -    if (fEntityDeclPool)
  +    if (context)
       {
  -        DTDEntityDecl* decl = fEntityDeclPool->getByKey(content);
  -
  -        if (!decl                ||
  -            (!decl->isUnparsed())  )
  -        {
  -            ThrowXML1(InvalidDatatypeValueException
  -                    , XMLExcepts::VALUE_ENTITY_Invalid
  -                    , content);
  -        }
  -
  -    }
  -    else {
  -        ThrowXML1
  -        (
  -            InvalidDatatypeValueException
  -            , XMLExcepts::VALUE_ENTITY_Invalid
  -            , content
  -        );
  +        context->checkEntity(content);
       }
   
  -    return;
   }
   
   void ENTITYDatatypeValidator::checkValueSpace(const XMLCh* const content)
  
  
  
  1.7       +9 -30     
xml-xerces/c/src/xercesc/validators/datatype/IDDatatypeValidator.cpp
  
  Index: IDDatatypeValidator.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/c/src/xercesc/validators/datatype/IDDatatypeValidator.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- IDDatatypeValidator.cpp   30 Sep 2003 18:17:53 -0000      1.6
  +++ IDDatatypeValidator.cpp   12 Nov 2003 20:31:33 -0000      1.7
  @@ -57,6 +57,9 @@
   /*
    * $Id$
    * $Log$
  + * Revision 1.7  2003/11/12 20:31:33  peiyongz
  + * Using ValidationContext to validate()
  + *
    * Revision 1.6  2003/09/30 18:17:53  peiyongz
    * Implementation of Serialization/Deserialization
    *
  @@ -110,7 +113,6 @@
   // ---------------------------------------------------------------------------
   IDDatatypeValidator::IDDatatypeValidator(MemoryManager* const manager)
   :StringDatatypeValidator(0, 0, 0, DatatypeValidator::ID, manager)
  -,fIDRefList(0)
   {}
   
   IDDatatypeValidator::IDDatatypeValidator(
  @@ -120,7 +122,6 @@
                           , const int                           finalSet
                           , MemoryManager* const                manager)
   :StringDatatypeValidator(baseValidator, facets, finalSet, DatatypeValidator::ID, 
manager)
  -,fIDRefList(0)
   {
       init(enums);
   }
  @@ -146,47 +147,25 @@
                           , const ValidatorType                 type
                           , MemoryManager* const                manager)
   :StringDatatypeValidator(baseValidator, facets, finalSet, type, manager)
  -,fIDRefList(0)
   {
       // do not invoke init() here!!!
   }
   
  -void IDDatatypeValidator::validate(const XMLCh* const content)
  +void IDDatatypeValidator::validate(const XMLCh*             const content
  +                                 ,       ValidationContext* const context)
   {
       // use StringDatatypeValidator (which in turn, invoke
       // the baseValidator) to validate content against
       // facets if any.
       //
  -    StringDatatypeValidator::validate(content);
  +    StringDatatypeValidator::validate(content, context);
   
       // storing IDs to the global ID table
  -    if (fIDRefList)
  -        addId(content);
  -}
  -
  -void IDDatatypeValidator::addId(const XMLCh * const content)
  -{
  -
  -    XMLRefInfo* find = fIDRefList->get(content);
  -    if (find)
  +    if (context)
       {
  -        if (find->getDeclared())
  -        {
  -            ThrowXML1(InvalidDatatypeValueException
  -                    , XMLExcepts::VALUE_ID_Not_Unique
  -                    , content);
  -        }
  -    }
  -     else
  -    {
  -        find = new (fMemoryManager) XMLRefInfo(content, false, false, 
fMemoryManager);
  -        fIDRefList->put((void*)find->getRefName(), find);
  +        context->addId(content);
       }
   
  -    //
  -    //  Mark it declared
  -    //
  -    find->setDeclared(true);
   }
   
   void IDDatatypeValidator::checkValueSpace(const XMLCh* const content)
  
  
  
  1.7       +9 -23     
xml-xerces/c/src/xercesc/validators/datatype/IDREFDatatypeValidator.cpp
  
  Index: IDREFDatatypeValidator.cpp
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/c/src/xercesc/validators/datatype/IDREFDatatypeValidator.cpp,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- IDREFDatatypeValidator.cpp        30 Sep 2003 18:17:53 -0000      1.6
  +++ IDREFDatatypeValidator.cpp        12 Nov 2003 20:31:33 -0000      1.7
  @@ -57,6 +57,9 @@
   /*
    * $Id$
    * $Log$
  + * Revision 1.7  2003/11/12 20:31:33  peiyongz
  + * Using ValidationContext to validate()
  + *
    * Revision 1.6  2003/09/30 18:17:53  peiyongz
    * Implementation of Serialization/Deserialization
    *
  @@ -108,7 +111,6 @@
   // ---------------------------------------------------------------------------
   IDREFDatatypeValidator::IDREFDatatypeValidator(MemoryManager* const manager)
   :StringDatatypeValidator(0, 0, 0, DatatypeValidator::IDREF, manager)
  -,fIDRefList(0)
   {}
   
   IDREFDatatypeValidator::IDREFDatatypeValidator(
  @@ -118,7 +120,6 @@
                                            , const int                           
finalSet
                                            , MemoryManager* const                
manager)
   :StringDatatypeValidator(baseValidator, facets, finalSet, DatatypeValidator::IDREF, 
manager)
  -,fIDRefList(0)
   {
       init(enums);
   }
  @@ -144,42 +145,27 @@
                           , const ValidatorType                 type
                           , MemoryManager* const                manager)
   :StringDatatypeValidator(baseValidator, facets, finalSet, type, manager)
  -,fIDRefList(0)
   {
       // do not invoke init() here!!!
   }
   
  -void IDREFDatatypeValidator::validate(const XMLCh* const content)
  +void IDREFDatatypeValidator::validate(const XMLCh*             const content
  +                                    ,       ValidationContext* const context)
   {
       // use StringDatatypeValidator (which in turn, invoke
       // the baseValidator) to validate content against
       // facets if any.
       //
  -    StringDatatypeValidator::validate(content);
  +    StringDatatypeValidator::validate(content, context);
   
       // this is different from java, since we always add, while
       // in java, it is done as told. REVISIT.
       //
  -    if (fIDRefList)
  -        addIdRef(content);
  -}
  -
  -//
  -// Add an IDREF to the fIDRefList
  -//
  -void IDREFDatatypeValidator::addIdRef(const XMLCh* const content)
  -{
  -    XMLRefInfo* find = fIDRefList->get(content);
  -    if (!find)
  +    if (context)
       {
  -        find = new (fMemoryManager) XMLRefInfo(content, false, false, 
fMemoryManager);
  -        fIDRefList->put((void*)find->getRefName(), find);
  +        context->addIdRef(content);
       }
   
  -    //
  -    //  Mark it used
  -    //
  -    find->setUsed(true);
   }
   
   void IDREFDatatypeValidator::checkValueSpace(const XMLCh* const content)
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to