xtemplateserializer.cpp
来自「IBM的解析xml的工具Xerces的源代码」· C++ 代码 · 共 1,995 行 · 第 1/4 页
CPP
1,995 行
/* * Copyright 2003,2004 The Apache Software Foundation. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. *//* * $Id: XTemplateSerializer.cpp,v 1.10 2004/09/08 13:56:14 peiyongz Exp $ * $Log: XTemplateSerializer.cpp,v $ * Revision 1.10 2004/09/08 13:56:14 peiyongz * Apache License Version 2.0 * * Revision 1.9 2004/03/09 20:59:28 peiyongz * restore key string from string pool from datatypevalidator * * Revision 1.8 2004/03/01 23:20:46 peiyongz * For RefHashTableOf/RefHash2KeysTableOf/RefHashTable3KeysIdPool, * resovle "key string" either from the data itself or the GrammarPool's StringPool. * * Revision 1.6 2003/12/17 00:18:34 cargilld * Update to memory management so that the static memory manager (one used to call Initialize) is only for static data. * * Revision 1.5 2003/11/11 22:48:13 knoaman * Serialization of XSAnnotation. * * Revision 1.4 2003/11/03 22:01:27 peiyongz * Store/Load keys separately from SchemaElementDecl * * Revision 1.3 2003/10/31 22:15:31 peiyongz * fix bug in creating ElemVector * * Revision 1.2 2003/10/29 16:16:08 peiyongz * GrammarPool' serialization/deserialization support * * Revision 1.1 2003/10/17 21:07:49 peiyongz * To support Template object serialization/deserialization * * */// ---------------------------------------------------------------------------// Includes// ---------------------------------------------------------------------------#include <xercesc/internal/XSerializeEngine.hpp>#include <xercesc/internal/XTemplateSerializer.hpp>#include <xercesc/validators/common/Grammar.hpp>#include <xercesc/util/HashPtr.hpp>XERCES_CPP_NAMESPACE_BEGIN/********************************************************** * * ValueVectorOf * * SchemaElementDecl* * unsigned int * ***********************************************************/ void XTemplateSerializer::storeObject(ValueVectorOf<SchemaElementDecl*>* const objToStore , XSerializeEngine& serEng){ if (serEng.needToStoreObject(objToStore)) { int vectorSize = objToStore->size(); serEng<<vectorSize; for ( int i = 0; i < vectorSize; i++) { SchemaElementDecl*& data = objToStore->elementAt(i); serEng<<data; } }}void XTemplateSerializer::loadObject(ValueVectorOf<SchemaElementDecl*>** objToLoad , int initSize , bool toCallDestructor , XSerializeEngine& serEng){ if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) ValueVectorOf<SchemaElementDecl*>( initSize , serEng.getMemoryManager() , toCallDestructor ); } serEng.registerObject(*objToLoad); int vectorSize = 0; serEng>>vectorSize; for ( int i = 0; i < vectorSize; i++) { SchemaElementDecl* data; serEng>>data; (*objToLoad)->addElement(data); } }}void XTemplateSerializer::storeObject(ValueVectorOf<unsigned int>* const objToStore , XSerializeEngine& serEng){ if (serEng.needToStoreObject(objToStore)) { int vectorSize = objToStore->size(); serEng<<vectorSize; for ( int i = 0; i < vectorSize; i++) { unsigned int& data = objToStore->elementAt(i); serEng<<data; } }}void XTemplateSerializer::loadObject(ValueVectorOf<unsigned int>** objToLoad , int initSize , bool toCallDestructor , XSerializeEngine& serEng){ if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) ValueVectorOf<unsigned int>( initSize , serEng.getMemoryManager() , toCallDestructor ); } serEng.registerObject(*objToLoad); int vectorSize = 0; serEng>>vectorSize; for ( int i = 0; i < vectorSize; i++) { unsigned int data; serEng>>data; (*objToLoad)->addElement(data); } }}/********************************************************** * * RefArrayVectorOf * * XMLCh * ***********************************************************/void XTemplateSerializer::storeObject(RefArrayVectorOf<XMLCh>* const objToStore , XSerializeEngine& serEng){ if (serEng.needToStoreObject(objToStore)) { int vectorSize = objToStore->size(); serEng<<vectorSize; for ( int i = 0; i < vectorSize; i++) { serEng.writeString(objToStore->elementAt(i)); } } }void XTemplateSerializer::loadObject(RefArrayVectorOf<XMLCh>** objToLoad , int initSize , bool toAdopt , XSerializeEngine& serEng){ if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) RefArrayVectorOf<XMLCh>( initSize , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); int vectorSize = 0; serEng>>vectorSize; for ( int i = 0; i < vectorSize; i++) { XMLCh* data; serEng.readString(data); (*objToLoad)->addElement(data); } }}/********************************************************** * * RefVectorOf * * SchemaAttDef * SchemaElementDecl * ContentSpecNode * IC_Field * DatatypeValidator * IdentityConstraint * XMLNumber * XercesLocationPath * XercesStep * ***********************************************************/void XTemplateSerializer::storeObject(RefVectorOf<SchemaAttDef>* const objToStore , XSerializeEngine& serEng){ if (serEng.needToStoreObject(objToStore)) { int vectorLength = objToStore->size(); serEng<<vectorLength; for ( int i = 0; i < vectorLength; i++) { SchemaAttDef* data = objToStore->elementAt(i); serEng<<data; } }}void XTemplateSerializer::loadObject(RefVectorOf<SchemaAttDef>** objToLoad , int initSize , bool toAdopt , XSerializeEngine& serEng){ if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) RefVectorOf<SchemaAttDef>( initSize , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); int vectorLength = 0; serEng>>vectorLength; for ( int i = 0 ; i < vectorLength; i++) { SchemaAttDef* data; serEng>>data; (*objToLoad)->addElement(data); } }}void XTemplateSerializer::storeObject(RefVectorOf<SchemaElementDecl>* const objToStore , XSerializeEngine& serEng){ if (serEng.needToStoreObject(objToStore)) { int vectorLength = objToStore->size(); serEng<<vectorLength; for ( int i = 0; i < vectorLength; i++) { SchemaElementDecl* data = objToStore->elementAt(i); serEng<<data; } }}void XTemplateSerializer::loadObject(RefVectorOf<SchemaElementDecl>** objToLoad , int initSize , bool toAdopt , XSerializeEngine& serEng){ if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) RefVectorOf<SchemaElementDecl>( initSize , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); int vectorLength = 0; serEng>>vectorLength; for ( int i = 0 ; i < vectorLength; i++) { SchemaElementDecl* data; serEng>>data; (*objToLoad)->addElement(data); } }}void XTemplateSerializer::storeObject(RefVectorOf<ContentSpecNode>* const objToStore , XSerializeEngine& serEng){ if (serEng.needToStoreObject(objToStore)) { int vectorLength = objToStore->size(); serEng<<vectorLength; for ( int i = 0; i < vectorLength; i++) { ContentSpecNode* data = objToStore->elementAt(i); serEng<<data; } }}void XTemplateSerializer::loadObject(RefVectorOf<ContentSpecNode>** objToLoad , int initSize , bool toAdopt , XSerializeEngine& serEng){ if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) RefVectorOf<ContentSpecNode>( initSize , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); int vectorLength = 0; serEng>>vectorLength; for ( int i = 0 ; i < vectorLength; i++) { ContentSpecNode* data; serEng>>data; (*objToLoad)->addElement(data); } }}void XTemplateSerializer::storeObject(RefVectorOf<IC_Field>* const objToStore , XSerializeEngine& serEng){ if (serEng.needToStoreObject(objToStore)) { int vectorLength = objToStore->size(); serEng<<vectorLength; for ( int i = 0; i < vectorLength; i++) { IC_Field* data = objToStore->elementAt(i); serEng<<data; } }}void XTemplateSerializer::loadObject(RefVectorOf<IC_Field>** objToLoad , int initSize , bool toAdopt , XSerializeEngine& serEng){ if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) RefVectorOf<IC_Field>( initSize , toAdopt , serEng.getMemoryManager() ); } serEng.registerObject(*objToLoad); int vectorLength = 0; serEng>>vectorLength; for ( int i = 0 ; i < vectorLength; i++) { IC_Field* data; serEng>>data; (*objToLoad)->addElement(data); } }}void XTemplateSerializer::storeObject(RefVectorOf<DatatypeValidator>* const objToStore , XSerializeEngine& serEng){ if (serEng.needToStoreObject(objToStore)) { int vectorLength = objToStore->size(); serEng<<vectorLength; for ( int i = 0; i < vectorLength; i++) { DatatypeValidator* data = objToStore->elementAt(i); DatatypeValidator::storeDV(serEng, data); } }}void XTemplateSerializer::loadObject(RefVectorOf<DatatypeValidator>** objToLoad , int initSize , bool toAdopt , XSerializeEngine& serEng){ if (serEng.needToLoadObject((void**)objToLoad)) { if (!*objToLoad) { if (initSize < 0) initSize = 16; *objToLoad = new (serEng.getMemoryManager()) RefVectorOf<DatatypeValidator>( initSize , toAdopt
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?