You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by pe...@apache.org on 2003/10/07 21:39:37 UTC

cvs commit: xml-xerces/c/src/xercesc/validators/datatype AbstractNumericFacetValidator.cpp AbstractStringValidator.cpp DatatypeValidator.cpp DatatypeValidator.hpp

peiyongz    2003/10/07 12:39:37

  Modified:    c/src/xercesc/validators/datatype
                        AbstractNumericFacetValidator.cpp
                        AbstractStringValidator.cpp DatatypeValidator.cpp
                        DatatypeValidator.hpp
  Log:
  Use of Template_Class Object Serialization/Deserialization API
  
  Revision  Changes    Path
  1.14      +16 -19    xml-xerces/c/src/xercesc/validators/datatype/AbstractNumericFacetValidator.cpp
  
  Index: AbstractNumericFacetValidator.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/datatype/AbstractNumericFacetValidator.cpp,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- AbstractNumericFacetValidator.cpp	2 Oct 2003 19:21:06 -0000	1.13
  +++ AbstractNumericFacetValidator.cpp	7 Oct 2003 19:39:37 -0000	1.14
  @@ -57,6 +57,9 @@
   /*
    * $Id$
    * $Log$
  + * Revision 1.14  2003/10/07 19:39:37  peiyongz
  + * Use of Template_Class Object Serialization/Deserialization API
  + *
    * Revision 1.13  2003/10/02 19:21:06  peiyongz
    * Implementation of Serialization/Deserialization
    *
  @@ -908,7 +911,7 @@
           /***
            * Serialize RefArrayVectorOf<XMLCh>
            ***/
  -        if (fStrEnumeration)
  +        if (serEng.needToWriteTemplateObject(fStrEnumeration))
           {
               int enumLength = fStrEnumeration->size();
               serEng<<enumLength;
  @@ -918,15 +921,11 @@
                   serEng.writeString(fStrEnumeration->elementAt(i));
               }
           }
  -        else
  -        {
  -            serEng<<0;
  -        }
   
           /***
            * Serialize RefVectorOf<XMLNumber>
            ***/
  -        if (fEnumeration)
  +        if (serEng.needToWriteTemplateObject(fEnumeration))
           {           
               int enumLength = fEnumeration->size();
               serEng<<enumLength;
  @@ -936,10 +935,6 @@
                   serEng<<fEnumeration->elementAt(i);
               }
           }
  -        else
  -        {
  -            serEng<<0;
  -        }
       
       }
       else
  @@ -966,16 +961,17 @@
           /***
             *  Deserialize RefArrayVectorOf<XMLCh>         
            ***/
  -        int enumLength = 0;;
  -        serEng>>enumLength;
  -
  -        if (enumLength)
  +        if (serEng.needToReadTemplateObject((void**)&fStrEnumeration))
           {
               if (!fStrEnumeration)
               {
                   fStrEnumeration = new (fMemoryManager) RefArrayVectorOf<XMLCh>(8, true, fMemoryManager);
               }
   
  +            serEng.registerTemplateObject(fStrEnumeration);
  +
  +            int enumLength = 0;
  +            serEng>>enumLength;
               for ( int i = 0; i < enumLength; i++)
               {
                   XMLCh* enumVal;
  @@ -987,16 +983,17 @@
           /***
             *  Deserialize RefVectorOf<XMLNumber>         
            ***/
  -        enumLength = 0;;
  -        serEng>>enumLength;
  -
  -        if (enumLength)
  +        if (serEng.needToReadTemplateObject((void**)&fEnumeration))
           {
               if (!fEnumeration)
               {
                   fEnumeration = new (fMemoryManager) RefVectorOf<XMLNumber>(8, true, fMemoryManager);
               }
   
  +            serEng.registerTemplateObject(fEnumeration);
  +
  +            int enumLength = 0;
  +            serEng>>enumLength;
               for ( int i = 0; i < enumLength; i++)
               {
                   fEnumeration->addElement(readNumber(numType, serEng));
  
  
  
  1.14      +12 -11    xml-xerces/c/src/xercesc/validators/datatype/AbstractStringValidator.cpp
  
  Index: AbstractStringValidator.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/datatype/AbstractStringValidator.cpp,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- AbstractStringValidator.cpp	29 Sep 2003 21:47:35 -0000	1.13
  +++ AbstractStringValidator.cpp	7 Oct 2003 19:39:37 -0000	1.14
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.14  2003/10/07 19:39:37  peiyongz
  + * Use of Template_Class Object Serialization/Deserialization API
  + *
    * Revision 1.13  2003/09/29 21:47:35  peiyongz
    * Implementation of Serialization/Deserialization
    *
  @@ -767,19 +770,16 @@
            *  Serialize RefArrayVectorOf<XMLCh>
            *
            ***/
  -        if (getEnumeration())
  +        if (serEng.needToWriteTemplateObject(fEnumeration))
           {
  -            int enumLength = getEnumeration()->size();
  +            int enumLength = fEnumeration->size();
               serEng<<enumLength;
  +
               for ( int i = 0 ; i < enumLength; i++)
               {            
  -                serEng.writeString(getEnumeration()->elementAt(i));
  +                serEng.writeString(fEnumeration->elementAt(i));
               }
           }
  -        else
  -        {
  -            serEng<<0;
  -        }
   
       }
       else
  @@ -794,16 +794,17 @@
            *  Deserialize RefArrayVectorOf<XMLCh>         
            *
           ***/
  -        int enumLength = 0;;
  -        serEng>>enumLength;
  -
  -        if (enumLength)
  +        if (serEng.needToReadTemplateObject((void**)&fEnumeration))
           {
               if (!fEnumeration)
               {
                   fEnumeration = new (fMemoryManager) RefArrayVectorOf<XMLCh>(8, true, fMemoryManager);
               }
   
  +            serEng.registerTemplateObject(fEnumeration);
  +
  +            int enumLength = 0;
  +            serEng>>enumLength;
               for ( int i = 0; i < enumLength; i++)
               {
                   XMLCh* enumVal;
  
  
  
  1.12      +197 -175  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.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- DatatypeValidator.cpp	2 Oct 2003 19:20:19 -0000	1.11
  +++ DatatypeValidator.cpp	7 Oct 2003 19:39:37 -0000	1.12
  @@ -56,6 +56,9 @@
   
   /*
    * $Log$
  + * Revision 1.12  2003/10/07 19:39:37  peiyongz
  + * Use of Template_Class Object Serialization/Deserialization API
  + *
    * Revision 1.11  2003/10/02 19:20:19  peiyongz
    * fWhiteSpace added; more dv serialization support added
    *
  @@ -303,21 +306,7 @@
           serEng<<fFixed;
           serEng<<(int)fType;
   
  -        /***
  -         *
  -         *  When deserialized, we need to know, exactly what
  -         *  validator was serialized here.
  -         *
  -         ***/
  -        if (fBaseValidator)
  -        {
  -            serEng<<(int) (fBaseValidator->getType());
  -            serEng<<fBaseValidator;
  -        }
  -        else
  -        {
  -            serEng<<(int) UnKnown;
  -        }
  +        storeDV(serEng, fBaseValidator);
   
           /***
            *  Serialize RefHashTableOf<KVStringPair>
  @@ -330,7 +319,7 @@
            *  the KVStringPair.key() can be used as the key to the hash table.
            *  
            ***/
  -        if (fFacets)
  +        if (serEng.needToWriteTemplateObject(fFacets))
           {
               int itemNumber = 0;
   
  @@ -350,10 +339,6 @@
                   curPair.serialize(serEng);
               }
           }
  -        else
  -        {
  -            serEng<<0;
  -        }
   
           serEng.writeString(fPattern);
   
  @@ -384,171 +369,25 @@
            *  get the basevalidator's type
            *
            ***/
  -
  -        serEng>>type;
  -
  -        switch((ValidatorType)type)
  -        {
  -        case String: 
  -            StringDatatypeValidator* stringdv;
  -            serEng>>stringdv;
  -            fBaseValidator = stringdv;
  -            break;
  -        case AnyURI:
  -            AnyURIDatatypeValidator* anyuridv;
  -            serEng>>anyuridv;
  -            fBaseValidator = anyuridv;
  -            break;
  -        case QName: 
  -            QNameDatatypeValidator* qnamedv;
  -            serEng>>qnamedv;
  -            fBaseValidator = qnamedv;
  -            break;
  -        case Name: 
  -            NameDatatypeValidator* namedv;
  -            serEng>>namedv;
  -            fBaseValidator = namedv;
  -            break;
  -        case NCName:  
  -            NCNameDatatypeValidator* ncnamedv;
  -            serEng>>ncnamedv;
  -            fBaseValidator = ncnamedv;
  -            break;
  -        case Boolean: 
  -            BooleanDatatypeValidator* booleandv;
  -            //TODO
  -            //serEng>>booleandv;
  -            fBaseValidator = booleandv;
  -            break;
  -        case Float: 
  -            FloatDatatypeValidator* floatdv;
  -            serEng>>floatdv;
  -            fBaseValidator = floatdv;
  -            break;
  -        case Double: 
  -            DoubleDatatypeValidator* doubledv;
  -            serEng>>doubledv;
  -            fBaseValidator = doubledv;
  -            break;
  -        case Decimal: 
  -            DecimalDatatypeValidator* decimaldv;
  -            serEng>>decimaldv;
  -            fBaseValidator = decimaldv;
  -            break;
  -        case HexBinary:  
  -            HexBinaryDatatypeValidator* hexbinarydv;
  -            serEng>>hexbinarydv;
  -            fBaseValidator = hexbinarydv;
  -            break;
  -        case Base64Binary: 
  -            Base64BinaryDatatypeValidator* base64binarydv;
  -            serEng>>base64binarydv;
  -            fBaseValidator = base64binarydv;
  -            break;
  -        case Duration:     
  -            DurationDatatypeValidator* durationdv;
  -            serEng>>durationdv;
  -            fBaseValidator = durationdv;
  -            break;
  -        case DateTime:       
  -            DateTimeDatatypeValidator* datetimedv;
  -            serEng>>datetimedv;
  -            fBaseValidator = datetimedv;
  -            break;
  -        case Date:          
  -            DateDatatypeValidator* datedv;
  -            serEng>>datedv;
  -            fBaseValidator = datedv;
  -            break;
  -        case Time:         
  -            TimeDatatypeValidator* timedv;
  -            serEng>>timedv;
  -            fBaseValidator = timedv;
  -            break;
  -        case MonthDay:      
  -            MonthDayDatatypeValidator* monthdaydv;
  -            serEng>>monthdaydv;
  -            fBaseValidator = monthdaydv;
  -            break;
  -        case YearMonth:     
  -            YearMonthDatatypeValidator* yearmonthdv;
  -            serEng>>yearmonthdv;
  -            fBaseValidator = yearmonthdv;
  -            break;
  -        case Year:          
  -            YearDatatypeValidator* yeardv;
  -            serEng>>yeardv;
  -            fBaseValidator = yeardv;
  -            break;
  -        case Month:        
  -            MonthDatatypeValidator* monthdv;
  -            serEng>>monthdv;
  -            fBaseValidator = monthdv;
  -            break;
  -        case Day:           
  -            DayDatatypeValidator* daydv;
  -            serEng>>daydv;
  -            fBaseValidator = daydv;
  -            break;
  -        case ID:           
  -            IDDatatypeValidator* iddv;
  -            serEng>>iddv;
  -            fBaseValidator = iddv;
  -            break;
  -        case IDREF:         
  -            IDREFDatatypeValidator* idrefdv;
  -            serEng>>idrefdv;
  -            fBaseValidator = idrefdv;
  -            break;
  -        case ENTITY:       
  -            ENTITYDatatypeValidator* entitydv;
  -            serEng>>entitydv;
  -            fBaseValidator = entitydv;
  -            break;
  -        case NOTATION:     
  -            NOTATIONDatatypeValidator* notationdv;
  -            serEng>>notationdv;
  -            fBaseValidator = notationdv;
  -            break;
  -        case List:          
  -            ListDatatypeValidator* listdv;
  -            serEng>>listdv;
  -            fBaseValidator = listdv;
  -            break;
  -        case Union:         
  -            UnionDatatypeValidator* uniondv;
  -            //TODO
  -            //serEng>>uniondv;
  -            fBaseValidator = uniondv;
  -            break;
  -        case AnySimpleType:  
  -            AnySimpleTypeDatatypeValidator* anysimpletypedv;
  -            //TODO
  -            //serEng>>anysimpletypedv;
  -            fBaseValidator = anysimpletypedv;
  -            break;
  -        case UnKnown:
  -            fBaseValidator = 0;
  -            break;
  -        default: //we treat this same as UnKnown
  -            fBaseValidator = 0;
  -            break;
  -        }
  +        fBaseValidator = loadDV(serEng);
   
           /***
  +         *
            *  Deserialize RefHashTableOf<KVStringPair>
            *
  -        ***/
  -        int itemNumber = 0;
  -        serEng>>itemNumber;
  -
  -        if (itemNumber)
  +         ***/
  +         if (serEng.needToReadTemplateObject((void**)&fFacets))
           {
               if (!fFacets)
               {
                   fFacets = new (fMemoryManager) RefHashTableOf<KVStringPair>(3, fMemoryManager);
               }
   
  +            serEng.registerTemplateObject(fFacets);
  +
  +            int itemNumber = 0;
  +            serEng>>itemNumber;
  +
               for (int itemIndex = 0; itemIndex < itemNumber; itemIndex++)
               {
                   KVStringPair*  data = new (fMemoryManager) KVStringPair(fMemoryManager);
  @@ -568,6 +407,189 @@
           serEng.readString((XMLCh*&)fTypeLocalName);
           serEng.readString((XMLCh*&)fTypeUri);
   
  +    }
  +
  +}
  +
  +/***
  + *
  + *  When deserialized, we need to know, exactly what
  + *  validator was serialized here.
  + *
  + *  Design Issue:
  + *    
  + *    This extra type information is only necessary when
  + *  we need to create and deserialize an DatatypeValidator 
  + *  derivative by operator >>, but not by object.serialize().
  + *  Therefore it is appropriate to save this type info by
  + *  hosting object rather than by derivative.serialize().
  + *
  + *
  + ***/
  +void DatatypeValidator::storeDV(XSerializeEngine&        serEng
  +                              , DatatypeValidator* const dv)
  +{
  +    if (dv)
  +    {
  +        serEng<<(int) dv->getType();
  +        serEng<<dv;
  +    }
  +    else
  +    {
  +        serEng<<(int) UnKnown;
  +    }
  +
  +}
  +
  +DatatypeValidator* DatatypeValidator::loadDV(XSerializeEngine& serEng)
  +{
  +
  +    int type;
  +    serEng>>type;
  +
  +    switch((ValidatorType)type)
  +    {
  +    case String: 
  +        StringDatatypeValidator* stringdv;
  +        serEng>>stringdv;
  +        return stringdv;
  +        break;
  +    case AnyURI:
  +        AnyURIDatatypeValidator* anyuridv;
  +        serEng>>anyuridv;
  +        return anyuridv;
  +        break;
  +    case QName: 
  +        QNameDatatypeValidator* qnamedv;
  +        serEng>>qnamedv;
  +        return qnamedv;
  +        break;
  +    case Name: 
  +        NameDatatypeValidator* namedv;
  +        serEng>>namedv;
  +        return namedv;
  +        break;
  +    case NCName:  
  +        NCNameDatatypeValidator* ncnamedv;
  +        serEng>>ncnamedv;
  +        return ncnamedv;
  +        break;
  +    case Boolean: 
  +        BooleanDatatypeValidator* booleandv;
  +        serEng>>booleandv;
  +        return booleandv;
  +        break;
  +    case Float: 
  +        FloatDatatypeValidator* floatdv;
  +        serEng>>floatdv;
  +        return floatdv;
  +        break;
  +    case Double: 
  +        DoubleDatatypeValidator* doubledv;
  +        serEng>>doubledv;
  +        return doubledv;
  +        break;
  +    case Decimal: 
  +        DecimalDatatypeValidator* decimaldv;
  +        serEng>>decimaldv;
  +        return decimaldv;
  +        break;
  +    case HexBinary:  
  +        HexBinaryDatatypeValidator* hexbinarydv;
  +        serEng>>hexbinarydv;
  +        return hexbinarydv;
  +        break;
  +    case Base64Binary: 
  +        Base64BinaryDatatypeValidator* base64binarydv;
  +        serEng>>base64binarydv;
  +        return base64binarydv;
  +        break;
  +    case Duration:     
  +        DurationDatatypeValidator* durationdv;
  +        serEng>>durationdv;
  +        return durationdv;
  +        break;
  +    case DateTime:       
  +        DateTimeDatatypeValidator* datetimedv;
  +        serEng>>datetimedv;
  +        return datetimedv;
  +        break;
  +    case Date:          
  +        DateDatatypeValidator* datedv;
  +        serEng>>datedv;
  +        return datedv;
  +        break;
  +    case Time:         
  +        TimeDatatypeValidator* timedv;
  +        serEng>>timedv;
  +        return timedv;
  +        break;
  +    case MonthDay:      
  +        MonthDayDatatypeValidator* monthdaydv;
  +        serEng>>monthdaydv;
  +        return monthdaydv;
  +        break;
  +    case YearMonth:     
  +        YearMonthDatatypeValidator* yearmonthdv;
  +        serEng>>yearmonthdv;
  +        return yearmonthdv;
  +        break;
  +    case Year:          
  +        YearDatatypeValidator* yeardv;
  +        serEng>>yeardv;
  +        return yeardv;
  +        break;
  +    case Month:        
  +        MonthDatatypeValidator* monthdv;
  +        serEng>>monthdv;
  +        return monthdv;
  +        break;
  +    case Day:           
  +        DayDatatypeValidator* daydv;
  +        serEng>>daydv;
  +        return daydv;
  +        break;
  +    case ID:           
  +        IDDatatypeValidator* iddv;
  +        serEng>>iddv;
  +        return iddv;
  +        break;
  +    case IDREF:         
  +        IDREFDatatypeValidator* idrefdv;
  +        serEng>>idrefdv;
  +        return idrefdv;
  +        break;
  +    case ENTITY:       
  +        ENTITYDatatypeValidator* entitydv;
  +        serEng>>entitydv;
  +        return entitydv;
  +        break;
  +    case NOTATION:     
  +        NOTATIONDatatypeValidator* notationdv;
  +        serEng>>notationdv;
  +        return notationdv;
  +        break;
  +    case List:          
  +        ListDatatypeValidator* listdv;
  +        serEng>>listdv;
  +        return listdv;
  +        break;
  +    case Union:         
  +        UnionDatatypeValidator* uniondv;
  +        serEng>>uniondv;
  +        return uniondv;
  +        break;
  +    case AnySimpleType:  
  +        AnySimpleTypeDatatypeValidator* anysimpletypedv;
  +        serEng>>anysimpletypedv;
  +        return anysimpletypedv;
  +        break;
  +    case UnKnown:
  +        return 0;
  +        break;
  +    default: //we treat this same as UnKnown
  +        return 0;
  +        break;
       }
   
   }
  
  
  
  1.15      +29 -1     xml-xerces/c/src/xercesc/validators/datatype/DatatypeValidator.hpp
  
  Index: DatatypeValidator.hpp
  ===================================================================
  RCS file: /home/cvs/xml-xerces/c/src/xercesc/validators/datatype/DatatypeValidator.hpp,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- DatatypeValidator.hpp	1 Oct 2003 01:09:35 -0000	1.14
  +++ DatatypeValidator.hpp	7 Oct 2003 19:39:37 -0000	1.15
  @@ -319,6 +319,34 @@
        ***/
       DECL_XSERIALIZABLE(DatatypeValidator)
   
  +    /***
  +      *
  +      *  Serialzie DatatypeValidator derivative 
  +      *
  +      *  Param
  +      *     serEng: serialize engine
  +      *     dv:     DatatypeValidator derivative
  +      *
  +      *  Return:
  +      *
  +      ***/
  +	static void storeDV(XSerializeEngine&        serEng
  +                      , DatatypeValidator* const dv);
  +
  +    /***
  +      *
  +      *  Create a DatatypeValidator derivative from the binary
  +      *  stream.
  +      *
  +      *  Param
  +      *     serEng: serialize engine
  +      *
  +      *  Return:
  +      *     DatatypeValidator derivative 
  +      *
  +      ***/
  +	static DatatypeValidator* loadDV(XSerializeEngine& serEng);
  +
   protected:
       // -----------------------------------------------------------------------
       //  Protected Constructors
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xerces-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xerces-cvs-help@xml.apache.org