/*** * * To verify that the content in the binary stream * is the same as this class * ***/ void XProtoType::load(XSerializeEngine& serEng , XMLByte* const inName , MemoryManager* const manager) { if (!inName) { ThrowXMLwithMemMgr(XSerializationException , XMLExcepts::XSer_ProtoType_Null_ClassName, manager); } // read and check class name length XMLSize_t inNameLen = XMLString::stringLen((char*)inName); XMLSize_t classNameLen = 0; serEng >> (unsigned long&)classNameLen; if (classNameLen != inNameLen) { XMLCh value1[17]; XMLCh value2[17]; XMLString::binToText((unsigned long)inNameLen, value1, 16, 10, manager); XMLString::binToText((unsigned long)classNameLen, value2, 16, 10, manager); ThrowXMLwithMemMgr2(XSerializationException , XMLExcepts::XSer_ProtoType_NameLen_Dif , value1 , value2 , manager); } // read and check class name XMLByte className[256]; serEng.read(className, classNameLen*sizeof(XMLByte)); className[classNameLen] = '\0'; if ( !XMLString::equals((char*)className, (char*)inName)) { //we don't have class name exceed this length in xerces XMLCh name1[256]; XMLCh name2[256]; XMLCh *tmp = XMLString::transcode((char*)inName, manager); XMLString::copyNString(name1, tmp, 255); manager->deallocate(tmp); tmp = XMLString::transcode((char*)className, manager); XMLString::copyNString(name2, tmp, 255); manager->deallocate(tmp); ThrowXMLwithMemMgr2(XSerializationException , XMLExcepts::XSer_ProtoType_Name_Dif , name1 , name2 , manager); } return; }