peiyongz    2004/03/03 15:08:28

  Modified:    c/src/xercesc/validators/datatype DatatypeValidator.cpp
  Log:
  Move the logic to check for BuiltIn Dv to storeDV/loadDV therefore dv which
  refers to BuiltIn DV will NOT be actually saved/loaded, as opposed to previously
  it is only done for dv appears in fBaseValidator.
  
  Revision  Changes    Path
  1.24      +36 -47    
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.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- DatatypeValidator.cpp     2 Mar 2004 23:34:58 -0000       1.23
  +++ DatatypeValidator.cpp     3 Mar 2004 23:08:28 -0000       1.24
  @@ -56,6 +56,11 @@
   
   /*
    * $Log$
  + * Revision 1.24  2004/03/03 23:08:28  peiyongz
  + * Move the logic to check for BuiltIn Dv to storeDV/loadDV therefore dv which
  + * refers to BuiltIn DV will NOT be actually saved/loaded, as opposed to previously
  + * it is only done for dv appears in fBaseValidator.
  + *
    * Revision 1.23  2004/03/02 23:34:58  peiyongz
    * fix typo
    *
  @@ -192,7 +197,9 @@
   
   XERCES_CPP_NAMESPACE_BEGIN
   
  -
  +static const int DV_BUILTIN = 0;
  +static const int DV_NORMAL  = 1;
  +static const int DV_ZERO    = 2;
   
   // ---------------------------------------------------------------------------
   //  DatatypeValidator: Constructors and Destructor
  @@ -352,19 +359,7 @@
           serEng<<fBounded;
           serEng<<fNumeric;
   
  -        /***
  -         * 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);
  -        }
  +        storeDV(serEng, fBaseValidator);
   
           /***
            *  Serialize RefHashTableOf<KVStringPair>
  @@ -412,33 +407,7 @@
           serEng>>fBounded;
           serEng>>fNumeric;
   
  -        /***
  -         *
  -         *  get the basevalidator's type
  -         *
  -         ***/
  -        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);
  -        }
  +        fBaseValidator = loadDV(serEng);
   
           /***
            *
  @@ -446,7 +415,6 @@
            *
            ***/
           XTemplateSerializer::loadObject(&fFacets, 29, true, serEng);
  -
           serEng.readString(fPattern);
   
           /***
  @@ -480,7 +448,6 @@
               ArrayJanitor<XMLCh> janUri(typeUri, fMemoryManager);
   
               setTypeName(typeLocalName, typeUri);
  -
           }
   
           /***
  @@ -512,18 +479,42 @@
   {
       if (dv)
       {
  -        serEng<<(int) dv->getType();
  -        serEng<<dv;
  +        if 
(DatatypeValidatorFactory::getBuiltInRegistry()->containsKey(dv->getTypeLocalName()))
  +        {
  +            serEng<<DV_BUILTIN;
  +            serEng.writeString(dv->getTypeLocalName());
  +        }
  +        else
  +        {
  +            serEng<<DV_NORMAL;
  +            serEng<<(int) dv->getType();
  +            serEng<<dv;
  +        }
       }
       else
       {
  -        serEng<<(int) UnKnown;
  +        serEng<<DV_ZERO;
       }
   
   }
   
   DatatypeValidator* DatatypeValidator::loadDV(XSerializeEngine& serEng)
   {
  +    int flag;
  +    serEng>>flag;
  +
  +    if (DV_BUILTIN == flag)
  +    {
  +        XMLCh* dvName;
  +        serEng.readString(dvName);
  +        ArrayJanitor<XMLCh> janName(dvName, serEng.getMemoryManager());
  +
  +        return DatatypeValidatorFactory::getBuiltInRegistry()->get(dvName);
  +    }
  +    else if (DV_ZERO == flag)
  +    {
  +        return 0;
  +    }
   
       int type;
       serEng>>type;
  @@ -649,7 +640,7 @@
   inline bool 
   DatatypeValidator::isBuiltInDV(DatatypeValidator* const dv)
   {
  -    return dv? 
DatatypeValidatorFactory::getBuiltInRegistry()->containsKey(dv->getTypeName())
  +    return dv? 
DatatypeValidatorFactory::getBuiltInRegistry()->containsKey(dv->getTypeLocalName())
                : false;
   }
   
  
  
  

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

Reply via email to