xtemplateserializer.cpp

来自「IBM的解析xml的工具Xerces的源代码」· C++ 代码 · 共 1,995 行 · 第 1/4 页

CPP
1,995
字号
                                                          , serEng.getMemoryManager()                                                           );        }        serEng.registerObject(*objToLoad);        int vectorLength = 0;        serEng>>vectorLength;        for ( int i = 0 ; i < vectorLength; i++)        {                        DatatypeValidator*  data;            data = DatatypeValidator::loadDV(serEng);            (*objToLoad)->addElement(data);        }    }}void XTemplateSerializer::storeObject(RefVectorOf<IdentityConstraint>* const objToStore                                    , XSerializeEngine&                       serEng){     if (serEng.needToStoreObject(objToStore))    {        int vectorLength = objToStore->size();        serEng<<vectorLength;        for ( int i = 0; i < vectorLength; i++)        {            IdentityConstraint* data = objToStore->elementAt(i);            IdentityConstraint::storeIC(serEng, data);        }    }}void XTemplateSerializer::loadObject(RefVectorOf<IdentityConstraint>** objToLoad                                   , int                                initSize                                   , bool                               toAdopt                                   , XSerializeEngine&                  serEng){    if (serEng.needToLoadObject((void**)objToLoad))    {        if (!*objToLoad)        {            if (initSize < 0)                initSize = 16;            *objToLoad = new (serEng.getMemoryManager())                             RefVectorOf<IdentityConstraint>(                                                             initSize                                                           , toAdopt                                                           , serEng.getMemoryManager()                                                            );        }        serEng.registerObject(*objToLoad);        int vectorLength = 0;        serEng>>vectorLength;        for ( int i = 0 ; i < vectorLength; i++)        {                        IdentityConstraint*  data;            data = IdentityConstraint::loadIC(serEng);            (*objToLoad)->addElement(data);        }    }}void XTemplateSerializer::storeObject(RefVectorOf<XMLNumber>* const objToStore                                    , XSerializeEngine&             serEng){     if (serEng.needToStoreObject(objToStore))    {        int vectorLength = objToStore->size();        serEng<<vectorLength;        for ( int i = 0; i < vectorLength; i++)        {            XMLNumber* data = objToStore->elementAt(i);            serEng<<data;        }    }}void XTemplateSerializer::loadObject(RefVectorOf<XMLNumber>** objToLoad                                   , int                       initSize                                   , bool                      toAdopt                                   , XMLNumber::NumberType     numType                                   , XSerializeEngine&         serEng){    if (serEng.needToLoadObject((void**)objToLoad))    {        if (!*objToLoad)        {            if (initSize < 0)                initSize = 16;            *objToLoad = new (serEng.getMemoryManager())                             RefVectorOf<XMLNumber>(                                                    initSize                                                  , toAdopt                                                  , serEng.getMemoryManager()                                                   );        }        serEng.registerObject(*objToLoad);        int vectorLength = 0;        serEng>>vectorLength;        for ( int i = 0 ; i < vectorLength; i++)        {                        XMLNumber*  data;            data = XMLNumber::loadNumber(numType , serEng);            (*objToLoad)->addElement(data);        }    }}void XTemplateSerializer::storeObject(RefVectorOf<XercesLocationPath>* const objToStore                                    , XSerializeEngine&                      serEng){     if (serEng.needToStoreObject(objToStore))    {        int vectorLength = objToStore->size();        serEng<<vectorLength;        for ( int i = 0; i < vectorLength; i++)        {            XercesLocationPath* data = objToStore->elementAt(i);            serEng<<data;        }    }}void XTemplateSerializer::loadObject(RefVectorOf<XercesLocationPath>** objToLoad                                   , int                               initSize                                   , bool                              toAdopt                                   , XSerializeEngine&                 serEng){    if (serEng.needToLoadObject((void**)objToLoad))    {        if (!*objToLoad)        {            if (initSize < 0)                initSize = 16;            *objToLoad = new (serEng.getMemoryManager())                             RefVectorOf<XercesLocationPath>(                                                             initSize                                                           , toAdopt                                                           , serEng.getMemoryManager()                                                            );        }        serEng.registerObject(*objToLoad);        int vectorLength = 0;        serEng>>vectorLength;        for ( int i = 0 ; i < vectorLength; i++)        {                        XercesLocationPath*  data;            serEng>>data;            (*objToLoad)->addElement(data);        }    }}void XTemplateSerializer::storeObject(RefVectorOf<XercesStep>* const objToStore                                    , XSerializeEngine&              serEng){     if (serEng.needToStoreObject(objToStore))    {        int vectorLength = objToStore->size();        serEng<<vectorLength;        for ( int i = 0; i < vectorLength; i++)        {            XercesStep* data = objToStore->elementAt(i);            serEng<<data;        }    }}void XTemplateSerializer::loadObject(RefVectorOf<XercesStep>** objToLoad                                   , int                       initSize                                   , bool                      toAdopt                                   , XSerializeEngine&         serEng){    if (serEng.needToLoadObject((void**)objToLoad))    {        if (!*objToLoad)        {            if (initSize < 0)                initSize = 16;            *objToLoad = new (serEng.getMemoryManager())                             RefVectorOf<XercesStep>(                                                     initSize                                                   , toAdopt                                                   , serEng.getMemoryManager()                                                    );        }        serEng.registerObject(*objToLoad);        int vectorLength = 0;        serEng>>vectorLength;        for ( int i = 0 ; i < vectorLength; i++)        {                        XercesStep*  data;            serEng>>data;            (*objToLoad)->addElement(data);        }    }}/********************************************************** * * RefHasbTableOf * *   KVStringPair *   XMLAttDef *   DTDAttDef *   ComplexTypeInfo *   XercesGroupInfo *   XercesAttGroupInfo *   XMLRefInfo *   DatatypeValidator *   Grammar *   XSAnnotation * ***********************************************************/void XTemplateSerializer::storeObject(RefHashTableOf<KVStringPair>* const objToStore                                    , XSerializeEngine&                    serEng)                                          {    if (serEng.needToStoreObject(objToStore))    {        serEng<<objToStore->getHashModulus();        RefHashTableOfEnumerator<KVStringPair> e(objToStore, false, objToStore->getMemoryManager());        int itemNumber = 0;                while (e.hasMoreElements())        {            e.nextElement();            itemNumber++;        }        serEng<<itemNumber;        e.Reset();        while (e.hasMoreElements())        {            KVStringPair* data = objToStore->get(e.nextElementKey());            serEng<<data;        }    }}void XTemplateSerializer::loadObject(RefHashTableOf<KVStringPair>** objToLoad                                   , int                                                               , bool                           toAdopt                                   , XSerializeEngine&              serEng){    if (serEng.needToLoadObject((void**)objToLoad))    {        unsigned int hashModulus;        serEng>>hashModulus;        if (!*objToLoad)        {            *objToLoad = new (serEng.getMemoryManager())                              RefHashTableOf<KVStringPair>(                                                          hashModulus                                                        , toAdopt                                                        , serEng.getMemoryManager()                                                         );        }        serEng.registerObject(*objToLoad);        int itemNumber = 0;        serEng>>itemNumber;        for (int itemIndex = 0; itemIndex < itemNumber; itemIndex++)        {            KVStringPair*  data;            serEng>>data;                        (*objToLoad)->put((void*)data->getKey(), data);                }    }}void XTemplateSerializer::storeObject(RefHashTableOf<XMLAttDef>* const objToStore                                    , XSerializeEngine&                serEng)                                          {    if (serEng.needToStoreObject(objToStore))    {        serEng<<objToStore->getHashModulus();        RefHashTableOfEnumerator<XMLAttDef> e(objToStore, false, objToStore->getMemoryManager());        int itemNumber = 0;                while (e.hasMoreElements())        {            e.nextElement();            itemNumber++;        }        serEng<<itemNumber;        e.Reset();        while (e.hasMoreElements())        {            XMLAttDef* data = objToStore->get(e.nextElementKey());            serEng<<data;        }    }}void XTemplateSerializer::loadObject(RefHashTableOf<XMLAttDef>** objToLoad                                   , int                                                            , bool                        toAdopt                                   , XSerializeEngine&           serEng){    if (serEng.needToLoadObject((void**)objToLoad))    {        unsigned int hashModulus;        serEng>>hashModulus;        if (!*objToLoad)        {            *objToLoad = new (serEng.getMemoryManager())                              RefHashTableOf<XMLAttDef>(                                                       hashModulus                                                     , toAdopt                                                     , serEng.getMemoryManager()                                                      );        }        serEng.registerObject(*objToLoad);        int itemNumber = 0;        serEng>>itemNumber;        for (int itemIndex = 0; itemIndex < itemNumber; itemIndex++)        {            //This is used solely by SchemaGrammar and by all means it must be            //SchemaAttDef, ideally we may change it to RefHashTableOf<SchemaAttDef>            //later on.            //Affected files IGXMLScanner, SGXMLScanner, SchemaGrammar, TraverseSchema            //XMLAttDef*  data;            SchemaAttDef*  data;            serEng>>data;                        (*objToLoad)->put((void*)data->getAttName()->getLocalPart(), data);                }    }}void XTemplateSerializer::storeObject(RefHashTableOf<DTDAttDef>* const objToStore                                    , XSerializeEngine&                serEng)                                          {    if (serEng.needToStoreObject(objToStore))    {        serEng<<objToStore->getHashModulus();        RefHashTableOfEnumerator<DTDAttDef> e(objToStore, false, objToStore->getMemoryManager());        int itemNumber = 0;                while (e.hasMoreElements())        {            e.nextElement();            itemNumber++;        }        serEng<<itemNumber;        e.Reset();        while (e.hasMoreElements())        {            DTDAttDef* data = objToStore->get(e.nextElementKey());            serEng<<data;        }    }}void XTemplateSerializer::loadObject(RefHashTableOf<DTDAttDef>** objToLoad                                   , int                                                            , bool                        toAdopt                                   , XSerializeEngine&           serEng){    if (serEng.needToLoadObject((void**)objToLoad))    {        unsigned int hashModulus;        serEng>>hashModulus;        if (!*objToLoad)        {            *objToLoad = new (serEng.getMemoryManager())                              RefHashTableOf<DTDAttDef>(                                                       hashModulus                                                     , toAdopt                                                     , serEng.getMemoryManager()                                                      );        }        serEng.registerObject(*objToLoad);        int itemNumber = 0;        serEng>>itemNumber;        for (int itemIndex = 0; itemIndex < itemNumber; itemIndex++)        {            DTDAttDef*  data;            serEng>>data;                        (*objToLoad)->put((void*)data->getFullName(), data);                }    }}void XTemplateSerializer::storeObject(RefHashTableOf<ComplexTypeInfo>* const objToStore                                    , XSerializeEngine&                      serEng)                                          {    if (serEng.needToStoreObject(objToStore))    {        serEng<<objToStore->getHashModulus();        RefHashTableOfEnumerator<ComplexTypeInfo> e(objToStore, false, objToStore->getMemoryManager());        int itemNumber = 0;                while (e.hasMoreElements())        {            e.nextElement();            itemNumber++;        }        serEng<<itemNumber;        e.Reset();        while (e.hasMoreElements())        {            ComplexTypeInfo* data = objToStore->get(e.nextElementKey());            serEng<<data;        }    }}void XTemplateSerializer::loadObject(RefHashTableOf<ComplexTypeInfo>** objToLoad                                   , int                                                                  , bool                              toAdopt                                   , XSerializeEngine&                 serEng){    if (serEng.needToLoadObject((void**)objToLoad))    {        unsigned int hashModulus;        serEng>>hashModulus;        if (!*objToLoad)        {            *objToLoad = new (serEng.getMemoryManager())                              RefHashTableOf<ComplexTypeInfo>(                                                             hashModulus                                                           , toAdopt                                                           , serEng.getMemoryManager()                                                           );        }        serEng.registerObject(*objToLoad);

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?