Newer
Older
PeiYong Zhang
committed
SORT_KEYSET_ONEKEY()
//to store the data
for (int i=0; i < itemNumber; i++)
{
GET_NEXT_KEYSET()
KVStringPair* data = objToStore->get(strKey);
serEng<<data;
}
#else
while (e.hasMoreElements())
{
KVStringPair* data = objToStore->get(e.nextElementKey());
serEng<<data;
}
PeiYong Zhang
committed
#endif
}
}
void XTemplateSerializer::loadObject(RefHashTableOf<KVStringPair>** objToLoad
, bool toAdopt
, XSerializeEngine& serEng)
{
if (serEng.needToLoadObject((void**)objToLoad))
{
unsigned int hashModulus;
serEng>>hashModulus;
if (!*objToLoad)
{
*objToLoad = new (serEng.getMemoryManager())
RefHashTableOf<KVStringPair>(
, 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();
David Abram Cargill
committed
RefHashTableOfEnumerator<XMLAttDef> e(objToStore, false, objToStore->getMemoryManager());
int itemNumber = 0;
while (e.hasMoreElements())
{
e.nextElement();
itemNumber++;
}
serEng<<itemNumber;
e.Reset();
PeiYong Zhang
committed
#ifdef _DEBUG
//to sort the key
SORT_KEYSET_ONEKEY()
//to store the data
for (int i=0; i < itemNumber; i++)
{
GET_NEXT_KEYSET()
XMLAttDef* data = objToStore->get(strKey);
serEng<<data;
}
#else
while (e.hasMoreElements())
{
XMLAttDef* data = objToStore->get(e.nextElementKey());
serEng<<data;
}
PeiYong Zhang
committed
#endif
}
}
void XTemplateSerializer::loadObject(RefHashTableOf<XMLAttDef>** objToLoad
, bool toAdopt
, XSerializeEngine& serEng)
{
if (serEng.needToLoadObject((void**)objToLoad))
{
unsigned int hashModulus;
serEng>>hashModulus;
if (!*objToLoad)
{
*objToLoad = new (serEng.getMemoryManager())
RefHashTableOf<XMLAttDef>(
, 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();
David Abram Cargill
committed
RefHashTableOfEnumerator<DTDAttDef> e(objToStore, false, objToStore->getMemoryManager());
int itemNumber = 0;
while (e.hasMoreElements())
{
e.nextElement();
itemNumber++;
}
serEng<<itemNumber;
e.Reset();
PeiYong Zhang
committed
#ifdef _DEBUG
//to sort the key
SORT_KEYSET_ONEKEY()
//to store the data
for (int i=0; i < itemNumber; i++)
{
GET_NEXT_KEYSET()
DTDAttDef* data = objToStore->get(strKey);
serEng<<data;
}
#else
while (e.hasMoreElements())
{
DTDAttDef* data = objToStore->get(e.nextElementKey());
serEng<<data;
}
PeiYong Zhang
committed
#endif
}
}
void XTemplateSerializer::loadObject(RefHashTableOf<DTDAttDef>** objToLoad
, bool toAdopt
, XSerializeEngine& serEng)
{
if (serEng.needToLoadObject((void**)objToLoad))
{
unsigned int hashModulus;
serEng>>hashModulus;
if (!*objToLoad)
{
*objToLoad = new (serEng.getMemoryManager())
RefHashTableOf<DTDAttDef>(
, 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();
David Abram Cargill
committed
RefHashTableOfEnumerator<ComplexTypeInfo> e(objToStore, false, objToStore->getMemoryManager());
int itemNumber = 0;
while (e.hasMoreElements())
{
e.nextElement();
itemNumber++;
}
serEng<<itemNumber;
e.Reset();
PeiYong Zhang
committed
#ifdef _DEBUG
//to sort the key
SORT_KEYSET_ONEKEY()
//to store the data
for (int i=0; i < itemNumber; i++)
{
GET_NEXT_KEYSET()
ComplexTypeInfo* data = objToStore->get(strKey);
serEng<<data;
}
#else
while (e.hasMoreElements())
{
ComplexTypeInfo* data = objToStore->get(e.nextElementKey());
serEng<<data;
}
PeiYong Zhang
committed
#endif
}
}
void XTemplateSerializer::loadObject(RefHashTableOf<ComplexTypeInfo>** objToLoad
, bool toAdopt
, XSerializeEngine& serEng)
{
if (serEng.needToLoadObject((void**)objToLoad))
{
unsigned int hashModulus;
serEng>>hashModulus;
if (!*objToLoad)
{
*objToLoad = new (serEng.getMemoryManager())
RefHashTableOf<ComplexTypeInfo>(
, toAdopt
, serEng.getMemoryManager()
);
}
serEng.registerObject(*objToLoad);
int itemNumber = 0;
serEng>>itemNumber;
for (int itemIndex = 0; itemIndex < itemNumber; itemIndex++)
{
ComplexTypeInfo* data;
serEng>>data;
(*objToLoad)->put((void*)data->getTypeName(), data);
}
}
}
void XTemplateSerializer::storeObject(RefHashTableOf<XercesGroupInfo>* const objToStore
, XSerializeEngine& serEng)
{
if (serEng.needToStoreObject(objToStore))
{
serEng<<objToStore->getHashModulus();
David Abram Cargill
committed
RefHashTableOfEnumerator<XercesGroupInfo> e(objToStore, false, objToStore->getMemoryManager());
int itemNumber = 0;
while (e.hasMoreElements())
{
e.nextElement();
itemNumber++;
}
serEng<<itemNumber;
e.Reset();
PeiYong Zhang
committed
#ifdef _DEBUG
//to sort the key
SORT_KEYSET_ONEKEY()
//to store the data
for (int i=0; i < itemNumber; i++)
{
GET_NEXT_KEYSET()
unsigned int id = serEng.getStringPool()->getId(strKey);
serEng<<id;
XercesGroupInfo* data = objToStore->get(strKey);
serEng<<data;
}
#else
while (e.hasMoreElements())
{
XMLCh* key = (XMLCh*) e.nextElementKey();
unsigned int id = serEng.getStringPool()->getId(key);
// key = StringPool->getValueForId(XercesGroupInfo::getNameSpaceId())
// + chComma
// + StringPool->getValueForId(XercesGroupInfo::getNameId())
//
// and the key is guranteed in the StringPool
//
//
// if (id == 0)
// {
// throw exception
// }
//
PeiYong Zhang
committed
serEng<<id;
XercesGroupInfo* data = objToStore->get(key);
serEng<<data;
}
PeiYong Zhang
committed
#endif
}
}
void XTemplateSerializer::loadObject(RefHashTableOf<XercesGroupInfo>** objToLoad
, bool toAdopt
, XSerializeEngine& serEng)
{
if (serEng.needToLoadObject((void**)objToLoad))
{
unsigned int hashModulus;
serEng>>hashModulus;
if (!*objToLoad)
{
*objToLoad = new (serEng.getMemoryManager())
RefHashTableOf<XercesGroupInfo>(
, toAdopt
, serEng.getMemoryManager()
);
}
serEng.registerObject(*objToLoad);
int itemNumber = 0;
serEng>>itemNumber;
for (int itemIndex = 0; itemIndex < itemNumber; itemIndex++)
{
unsigned int id;
serEng>>id;
XMLCh* key = (XMLCh*) serEng.getStringPool()->getValueForId(id);
XercesGroupInfo* data;
serEng>>data;
(*objToLoad)->put((void*)key, data);
}
}
}
void XTemplateSerializer::storeObject(RefHashTableOf<XercesAttGroupInfo>* const objToStore
, XSerializeEngine& serEng)
{
if (serEng.needToStoreObject(objToStore))
{
serEng<<objToStore->getHashModulus();
David Abram Cargill
committed
RefHashTableOfEnumerator<XercesAttGroupInfo> e(objToStore, false, objToStore->getMemoryManager());
int itemNumber = 0;
while (e.hasMoreElements())
{
e.nextElement();
itemNumber++;
}
serEng<<itemNumber;
e.Reset();
PeiYong Zhang
committed
#ifdef _DEBUG
//to sort the key
SORT_KEYSET_ONEKEY()
//to store the data
for (int i=0; i < itemNumber; i++)
{
GET_NEXT_KEYSET()
XercesAttGroupInfo* data = objToStore->get(strKey);
serEng<<data;
}
#else
while (e.hasMoreElements())
{
XercesAttGroupInfo* data = objToStore->get(e.nextElementKey());
serEng<<data;
}
PeiYong Zhang
committed
#endif
}
}
void XTemplateSerializer::loadObject(RefHashTableOf<XercesAttGroupInfo>** objToLoad
, bool toAdopt
, XSerializeEngine& serEng)
{
if (serEng.needToLoadObject((void**)objToLoad))
{
unsigned int hashModulus;
serEng>>hashModulus;
if (!*objToLoad)
{
*objToLoad = new (serEng.getMemoryManager())
RefHashTableOf<XercesAttGroupInfo>(
, toAdopt
, serEng.getMemoryManager()
);
}
serEng.registerObject(*objToLoad);
int itemNumber = 0;
serEng>>itemNumber;
for (int itemIndex = 0; itemIndex < itemNumber; itemIndex++)
{
XercesAttGroupInfo* data;
serEng>>data;
XMLCh* key = (XMLCh*) serEng.getStringPool()->getValueForId(data->getNameId());
(*objToLoad)->put((void*)key, data);
}
}
}
void XTemplateSerializer::storeObject(RefHashTableOf<XMLRefInfo>* const objToStore
, XSerializeEngine& serEng)
{
if (serEng.needToStoreObject(objToStore))
{
serEng<<objToStore->getHashModulus();
David Abram Cargill
committed
RefHashTableOfEnumerator<XMLRefInfo> e(objToStore, false, objToStore->getMemoryManager());
int itemNumber = 0;
while (e.hasMoreElements())
{
e.nextElement();
itemNumber++;
}
serEng<<itemNumber;
e.Reset();
PeiYong Zhang
committed
#ifdef _DEBUG
//to sort the key
SORT_KEYSET_ONEKEY()
//to store the data
for (int i=0; i < itemNumber; i++)
{
GET_NEXT_KEYSET()
serEng.writeString(strKey);
XMLRefInfo* data = objToStore->get(strKey);
serEng<<data;
}
#else
while (e.hasMoreElements())
{
XMLCh* key = (XMLCh*) e.nextElementKey();
serEng.writeString(key);
XMLRefInfo* data = objToStore->get(key);
serEng<<data;
}
PeiYong Zhang
committed
#endif
}
}
void XTemplateSerializer::loadObject(RefHashTableOf<XMLRefInfo>** objToLoad
, bool toAdopt
, XSerializeEngine& serEng)
{
if (serEng.needToLoadObject((void**)objToLoad))
{
unsigned int hashModulus;
serEng>>hashModulus;
if (!*objToLoad)
{
*objToLoad = new (serEng.getMemoryManager())
RefHashTableOf<XMLRefInfo>(
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
, toAdopt
, serEng.getMemoryManager()
);
}
serEng.registerObject(*objToLoad);
int itemNumber = 0;
serEng>>itemNumber;
for (int itemIndex = 0; itemIndex < itemNumber; itemIndex++)
{
XMLCh* key;
serEng.readString(key);
XMLRefInfo* data;
serEng>>data;
(*objToLoad)->put((void*)key, data);
}
}
}
void XTemplateSerializer::storeObject(RefHashTableOf<DatatypeValidator>* const objToStore
, XSerializeEngine& serEng)
{
if (serEng.needToStoreObject(objToStore))
{
serEng<<objToStore->getHashModulus();
David Abram Cargill
committed
RefHashTableOfEnumerator<DatatypeValidator> e(objToStore, false, objToStore->getMemoryManager());
int itemNumber = 0;
while (e.hasMoreElements())
{
e.nextElement();
itemNumber++;
}
serEng<<itemNumber;
e.Reset();
PeiYong Zhang
committed
#ifdef _DEBUG
//to sort the key
SORT_KEYSET_ONEKEY()
//to store the data
for (int i=0; i < itemNumber; i++)
{
GET_NEXT_KEYSET()
DatatypeValidator* data = objToStore->get(strKey);
DatatypeValidator::storeDV(serEng, data);
}
#else
while (e.hasMoreElements())
{
/***
* to do: verify valid id
*
* XMLCh* key = (XMLCh*) e.nextElementKey();
* unsigned int id = serEng.getStringPool()->getId(key);
* if (id == 0)
* throw exception
***/
DatatypeValidator* data = objToStore->get(e.nextElementKey());
DatatypeValidator::storeDV(serEng, data);
}
PeiYong Zhang
committed
#endif
}
}
void XTemplateSerializer::loadObject(RefHashTableOf<DatatypeValidator>** objToLoad
, bool toAdopt
, XSerializeEngine& serEng)
{
if (serEng.needToLoadObject((void**)objToLoad))
{
unsigned int hashModulus;
serEng>>hashModulus;
if (!*objToLoad)
{
*objToLoad = new (serEng.getMemoryManager())
RefHashTableOf<DatatypeValidator>(
, toAdopt
, serEng.getMemoryManager()
);
}
serEng.registerObject(*objToLoad);
int itemNumber = 0;
serEng>>itemNumber;
for (int itemIndex = 0; itemIndex < itemNumber; itemIndex++)
DatatypeValidator* data;
data = DatatypeValidator::loadDV(serEng);
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
/***
* restore the key
***/
XMLCh* typeUri = (XMLCh*) data->getTypeUri();
XMLCh* typeLocal = (XMLCh*) data->getTypeLocalName();
unsigned int uriLen = XMLString::stringLen(typeUri);
unsigned int localLen = XMLString::stringLen(typeLocal);
XMLCh* typeKey = (XMLCh*) serEng.getMemoryManager()->allocate
(
(uriLen + localLen + 2) * sizeof(XMLCh)
);
// "typeuri,typeLocal"
XMLString::moveChars(typeKey, typeUri, uriLen+1);
typeKey[uriLen] = chComma;
XMLString::moveChars(&typeKey[uriLen+1], typeLocal, localLen+1);
typeKey[uriLen + localLen + 1] = chNull;
ArrayJanitor<XMLCh> janName(typeKey, serEng.getMemoryManager());
/*
* get the string from string pool
*
* to do:
***/
unsigned int id = serEng.getStringPool()->getId(typeKey);
XMLCh* refKey = (XMLCh*) serEng.getStringPool()->getValueForId(id);
(*objToLoad)->put((void*)refKey, data);
}
}
}
void XTemplateSerializer::storeObject(RefHashTableOf<Grammar>* const objToStore
, XSerializeEngine& serEng)
{
if (serEng.needToStoreObject(objToStore))
{
serEng<<objToStore->getHashModulus();
David Abram Cargill
committed
RefHashTableOfEnumerator<Grammar> e(objToStore, false, objToStore->getMemoryManager());
int itemNumber = 0;
while (e.hasMoreElements())
{
e.nextElement();
itemNumber++;
}
serEng<<itemNumber;
e.Reset();
PeiYong Zhang
committed
#ifdef _DEBUG
//to sort the key
SORT_KEYSET_ONEKEY()
//to store the data
for (int i=0; i < itemNumber; i++)
{
GET_NEXT_KEYSET()
Grammar* data = objToStore->get(strKey);
Grammar::storeGrammar(serEng, data);
}
#else
while (e.hasMoreElements())
{
Grammar* data = objToStore->get(e.nextElementKey());
Grammar::storeGrammar(serEng, data);
}
PeiYong Zhang
committed
#endif
}
}
void XTemplateSerializer::loadObject(RefHashTableOf<Grammar>** objToLoad
, bool toAdopt
, XSerializeEngine& serEng)
{
if (serEng.needToLoadObject((void**)objToLoad))
{
unsigned int hashModulus;
serEng>>hashModulus;
if (!*objToLoad)
{
*objToLoad = new (serEng.getMemoryManager())
RefHashTableOf<Grammar>(
, toAdopt
, serEng.getMemoryManager()
);
}
serEng.registerObject(*objToLoad);
int itemNumber = 0;
serEng>>itemNumber;
for (int itemIndex = 0; itemIndex < itemNumber; itemIndex++)
{
Grammar* data;
data = Grammar::loadGrammar(serEng);
XMLCh* key = (XMLCh*) data->getGrammarDescription()->getGrammarKey();
(*objToLoad)->put((void*)key, data);
}
}
}
void XTemplateSerializer::storeObject(RefHashTableOf<XSAnnotation>* const objToStore
, XSerializeEngine& serEng)
{
if (serEng.needToStoreObject(objToStore))
{
serEng<<objToStore->getHashModulus();
David Abram Cargill
committed
RefHashTableOfEnumerator<XSAnnotation> e(objToStore, false, objToStore->getMemoryManager());
PeiYong Zhang
committed
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
#ifdef _DEBUG
//get the total item number
int itemNumber = 0;
while (e.hasMoreElements())
{
void* key = e.nextElementKey();
XSerializeEngine::XSerializedObjectId_t keyId = serEng.lookupStorePool(key);
if (keyId)
itemNumber++;
}
serEng<<itemNumber;
e.Reset();
//to sort the key
//though keyId is not supposed to be involved in compare
//we merely use the kepPair to encap both the string key and keyid
SortArray sortArray(itemNumber);
while (e.hasMoreElements())
{
void* key = e.nextElementKey();
XSerializeEngine::XSerializedObjectId_t keyId = serEng.lookupStorePool(key);
if (keyId)
{
KeySet* keySet = new KeySet((XMLCh*)key, keyId);
sortArray.addElement(keySet);
}
}
sortArray.sort();
//to store the data
for (int i=0; i < itemNumber; i++)
{
GET_NEXT_KEYSET()
XSerializeEngine::XSerializedObjectId_t keyId = (XSerializeEngine::XSerializedObjectId_t)intKey1;
XSAnnotation* data = objToStore->get(strKey);
serEng<<keyId;
serEng<<data;
}
#else
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
ValueVectorOf<XSerializeEngine::XSerializedObjectId_t> ids(16, serEng.getMemoryManager());
ValueVectorOf<void*> keys(16, serEng.getMemoryManager());
while (e.hasMoreElements())
{
void* key = e.nextElementKey();
XSerializeEngine::XSerializedObjectId_t keyId = serEng.lookupStorePool(key);
if (keyId)
{
ids.addElement(keyId);
keys.addElement(key);
}
}
int itemNumber = ids.size();
serEng<<itemNumber;
for (int i=0; i<itemNumber; i++)
{
XSerializeEngine::XSerializedObjectId_t keyId = ids.elementAt(i);
XSAnnotation* data = objToStore->get(keys.elementAt(i));
serEng<<keyId;
serEng<<data;
}
PeiYong Zhang
committed
#endif
}
}
void XTemplateSerializer::loadObject(RefHashTableOf<XSAnnotation>** objToLoad
, bool toAdopt
, XSerializeEngine& serEng)
{
if (serEng.needToLoadObject((void**)objToLoad))
{
unsigned int hashModulus;
serEng>>hashModulus;
if (!*objToLoad)
{
*objToLoad = new (serEng.getMemoryManager())
RefHashTableOf<XSAnnotation>(
hashModulus
, toAdopt
, new (serEng.getMemoryManager()) HashPtr()
, serEng.getMemoryManager()
);
}
serEng.registerObject(*objToLoad);
int itemNumber = 0;
serEng>>itemNumber;
for (int itemIndex = 0; itemIndex < itemNumber; itemIndex++)
{
XSerializeEngine::XSerializedObjectId_t keyId = 0;
PeiYong Zhang
committed
serEng>>keyId;
void* key = serEng.lookupLoadPool(keyId);
XSAnnotation* data;
serEng>>data;
(*objToLoad)->put(key, data);
}
}
}
/**********************************************************
*
* RefHash2KeysTableOf
*
* SchemaAttDef
* ElemVector
*
***********************************************************/
void XTemplateSerializer::storeObject(RefHash2KeysTableOf<SchemaAttDef>* const objToStore
, XSerializeEngine& serEng)
{
if (serEng.needToStoreObject(objToStore))
{
serEng<<objToStore->getHashModulus();
int itemNumber = 0;
David Abram Cargill
committed
RefHash2KeysTableOfEnumerator<SchemaAttDef> e(objToStore, false, objToStore->getMemoryManager());
while (e.hasMoreElements())
{
e.nextElement();
itemNumber++;
}
serEng<<itemNumber;
e.Reset();
PeiYong Zhang
committed
#ifdef _DEBUG
//to sort the key
SORT_KEYSET_TWOKEYS()
//to store the data
for (int i=0; i < itemNumber; i++)
{
GET_NEXT_KEYSET()
SchemaAttDef* data = objToStore->get(strKey, intKey1);
serEng<<data;
}
#else
while (e.hasMoreElements())
{
XMLCh* key1;
int key2;
e.nextElementKey((void*&)key1, key2);
SchemaAttDef* data = objToStore->get(key1, key2);
serEng<<data;
}
PeiYong Zhang
committed
#endif
}
}
void XTemplateSerializer::loadObject(RefHash2KeysTableOf<SchemaAttDef>** objToLoad
, bool toAdopt
, XSerializeEngine& serEng)
{
if (serEng.needToLoadObject((void**)objToLoad))
{
unsigned int hashModulus;
serEng>>hashModulus;
if (!*objToLoad)
{
*objToLoad = new (serEng.getMemoryManager())
RefHash2KeysTableOf<SchemaAttDef>(
, toAdopt
, serEng.getMemoryManager()
);
}
serEng.registerObject(*objToLoad);
int itemNumber = 0;
serEng>>itemNumber;
for (int itemIndex = 0; itemIndex < itemNumber; itemIndex++)
{
SchemaAttDef* data;
serEng>>data;
XMLCh* key1 = data->getAttName()->getLocalPart();
int key2 = data->getAttName()->getURI();
//key2==data->getId()
(*objToLoad)->put((void*)key1, key2, data);
}
}