#include <msg_stream.h>
Inheritance diagram for NLAIAGENT::CMsgIStream:
Definition at line 38 of file msg_stream.h.
Seek fonctionnality | |
enum | TSeekOrigin { begin, current, end } |
virtual std::string | getStreamName () const |
virtual bool | seek (sint32 offset, TSeekOrigin origin) |
standard STL containers serialisation. | |
Known Supported containers: vector<>, list<>, deque<>, set<>, multiset<>, map<>, multimap<> Support up to sint32 length containers.
| |
virtual void | serialCont (std::vector< bool > &cont) |
Specialisation of serialCont() for vector<bool>. | |
virtual void | serialCont (std::vector< sint8 > &cont) |
Specialisation of serialCont() for vector<sint8>. | |
virtual void | serialCont (std::vector< uint8 > &cont) |
Specialisation of serialCont() for vector<uint8>. | |
template<class K, class T> void | serialCont (std::multimap< K, T > &cont) |
Specialisation of serialCont() for vector<bool>. | |
template<class K, class T> void | serialCont (std::map< K, T > &cont) |
Specialisation of serialCont() for vector<bool>. | |
template<class T> void | serialCont (std::multiset< T > &cont) |
Specialisation of serialCont() for vector<bool>. | |
template<class T> void | serialCont (std::set< T > &cont) |
Specialisation of serialCont() for vector<bool>. | |
template<class T> void | serialCont (std::deque< T > &cont) |
Specialisation of serialCont() for vector<bool>. | |
template<class T> void | serialCont (std::list< T > &cont) |
Specialisation of serialCont() for vector<bool>. | |
template<class T, class Allocator> void | serialCont (std::vector< T, Allocator > &cont) |
Specialisation of serialCont() for vector<bool>. | |
XML implementation interface | |
void | resetPtrTable () |
void | setInOut (bool inputStream) |
void | setXMLMode (bool on) |
virtual bool | xmlBreakLineInternal () |
xmlBreakLine implementation | |
virtual bool | xmlCommentInternal (const char *comment) |
xmlComment implementation | |
virtual bool | xmlPopInternal () |
xmlPop implementation | |
virtual bool | xmlPushBeginInternal (const char *name) |
xmlPushBegin implementation | |
virtual bool | xmlPushEndInternal () |
xmlPushEnd implementation | |
virtual bool | xmlSetAttribInternal (const char *name) |
xmlBreakLine implementation | |
Public Types | |
Public Member Functions | |
CMsgIStream (const CMsgIStream &ist) | |
CMsgIStream (const IBaseGroupType &l) | |
virtual sint32 | getPos () |
bool | isEnd () const |
bool | isReading () const |
Is this stream a Read/Input stream? | |
bool | isXML () const |
template<class T> void | serial (T &obj) |
virtual void | serial (ucstring &b) throw (NLMISC::EStream) |
virtual void | serial (std::string &b) throw (NLMISC::EStream) |
virtual void | serial (char &b) throw (NLMISC::EStream) |
virtual void | serial (IObjectIA *&b) throw (NLMISC::EStream) |
virtual void | serial (IObjectIA &b) throw (NLMISC::EStream) |
virtual void | serial (bool &b) throw (NLMISC::EStream) |
virtual void | serial (double &b) throw (NLMISC::EStream) |
virtual void | serial (float &b) throw (NLMISC::EStream) |
virtual void | serial (sint64 &b) throw (NLMISC::EStream) |
virtual void | serial (uint64 &b) throw (NLMISC::EStream) |
virtual void | serial (sint32 &b) throw (NLMISC::EStream) |
virtual void | serial (uint32 &b) throw (NLMISC::EStream) |
virtual void | serial (sint16 &b) throw (NLMISC::EStream) |
virtual void | serial (uint16 &b) throw (NLMISC::EStream) |
virtual void | serial (sint8 &b) throw (NLMISC::EStream) |
virtual void | serial (uint8 &b) throw (NLMISC::EStream) |
virtual void | serialBit (bool &bit) throw (NLMISC::EReadError) |
virtual void | serialBuffer (uint8 *buf, uint len) throw (NLMISC::EReadError) |
virtual void | serialBufferWithSize (uint8 *buf, uint32 len) |
template<class T> void | serialEnum (T &em) |
Template enum serialisation. Serialized as a sint32. | |
virtual void | serialMemStream (CMemStream &b) |
Serial memstream, bitmemstream... | |
virtual | ~CMsgIStream () |
Static Public Member Functions | |
void | getVersionException (bool &throwOnOlder, bool &throwOnNewer) |
void | setVersionException (bool throwOnOlder, bool throwOnNewer) |
Protected Member Functions | |
template<class T> void | serialVector (T &cont) |
Private Attributes | |
CConstIteratorContener | _It |
sint32 | _Len |
const IBaseGroupType & | _List |
sint32 | _Pos |
|
Parameters for seek(). begin seek from the begining of the stream. current seek from the current location of the stream pointer. end seek from the end of the stream. Definition at line 549 of file stream.h.
|
|
Definition at line 47 of file msg_stream.h. References _It, _Len, and size.
|
|
Definition at line 51 of file msg_stream.h.
00051 : NLMISC::IStream(ist), _List(ist._List), _It(ist._It), _Len(ist._Len), _Pos(ist._Len) 00052 { 00053 } |
|
Definition at line 55 of file msg_stream.h.
00056 { 00057 } |
|
Get the location of the stream pointer. NB: If the stream doesn't support the seek fonctionnality, it throw ESeekNotSupported. Default implementation: { throw ESeekNotSupported; }
Reimplemented from NLMISC::IStream. Definition at line 87 of file msg_stream.h. References sint32.
00088 { 00089 return _Pos; 00090 } |
|
Get a name for this stream. maybe a fileName if FileStream. Default is to return "". Reimplemented in NLMISC::CIFile, and NLMISC::COFile. Definition at line 420 of file stream.cpp. Referenced by NLMISC::EStream::EStream().
00421 { 00422 return ""; 00423 } |
|
Get the behavior of IStream regarding input stream that are older/newer than the class.
Definition at line 78 of file stream.cpp. References NLMISC::IStream::_ThrowOnNewer, and NLMISC::IStream::_ThrowOnOlder.
00079 { 00080 throwOnOlder=_ThrowOnOlder; 00081 throwOnNewer=_ThrowOnNewer; 00082 } |
|
Definition at line 91 of file msg_stream.h. References _It, and NLAIAGENT::CConstIteratorContener::isInEnd().
00092 { 00093 return _It.isInEnd(); 00094 } |
|
|
Definition at line 221 of file stream.h. References NLMISC::IStream::_XML. Referenced by NLMISC::CMemStream::serial().
00221 { return _XML; }
|
|
for Deriver: reset the PtrTable in the stream. If Derived stream provide reset()-like methods, they must call this method in their reset() methods. For example, CFile::close() must call it, so it will work correctly with next serialPtr() Reimplemented in NLMISC::CMemStream. Definition at line 253 of file stream.cpp. References NLMISC::IStream::_IdMap, and NLMISC::IStream::_NextSerialPtrId. Referenced by NLMISC::CIFile::close(), NLMISC::COXml::init(), NLMISC::COFile::internalClose(), NLMISC::IStream::IStream(), and NLMISC::IStream::operator=().
00254 {
00255 _IdMap.clear();
00256 _NextSerialPtrId = 1; // Start at 1 because 0 is the NULL pointer
00257 }
|
|
Moves the stream pointer to a specified location. NB: If the stream doesn't support the seek fonctionnality, it throw ESeekNotSupported. Default implementation: { throw ESeekNotSupported; }
Reimplemented in NLMISC::CMemStream. Definition at line 401 of file stream.cpp. References offset, and sint32. Referenced by NLMISC::CBitmap::load(), NL3D::CMeshMRMGeom::loadNextLod(), NLMISC::CBitmap::loadSize(), NLMISC::CBitmap::readDDS(), and NLMISC::CBitmap::readTGA().
00402 { 00403 throw ESeekNotSupported(*this); 00404 return false; 00405 } |
|
Reimplemented in NLMISC::CMemStream, and NLMISC::CStringStream. Definition at line 313 of file stream.h. References NLMISC::IStream::serial().
|
|
Reimplemented in NLMISC::CMemStream, and NLMISC::CStringStream. Definition at line 310 of file stream.h. References NLMISC::IStream::serial().
|
|
Reimplemented in NLMISC::CMemStream, and NLMISC::CStringStream. Definition at line 307 of file stream.h. References NLMISC::IStream::serial().
|
|
Reimplemented in NLMISC::CMemStream, and NLMISC::CStringStream. Definition at line 304 of file stream.h. References NLMISC::IStream::serial().
|
|
Reimplemented in NLMISC::CMemStream, and NLMISC::CStringStream. Definition at line 301 of file stream.h. References NLMISC::IStream::serial().
|
|
|
Reimplemented from NLMISC::IStream. Definition at line 126 of file msg_stream.cpp.
00127 { 00128 throw NLMISC::EReadError((const char *)_List.getType()); 00129 } |
|
Reimplemented from NLMISC::IStream. Definition at line 119 of file msg_stream.cpp. References s.
|
|
Reimplemented from NLMISC::IStream. Definition at line 112 of file msg_stream.cpp.
|
|
Definition at line 137 of file msg_stream.cpp.
00138 { 00139 IObjectIA *o= (IObjectIA *)(_It++); 00140 b = o; 00141 } |
|
Definition at line 131 of file msg_stream.cpp.
00132 { 00133 const IObjectIA *o= (const IObjectIA *)(_It++); 00134 b = *o; 00135 } |
|
Reimplemented from NLMISC::IStream. Definition at line 105 of file msg_stream.cpp.
|
|
Reimplemented from NLMISC::IStream. Definition at line 99 of file msg_stream.cpp.
|
|
Reimplemented from NLMISC::IStream. Definition at line 93 of file msg_stream.cpp.
|
|
Reimplemented from NLMISC::IStream. Definition at line 87 of file msg_stream.cpp. References sint64.
|
|
Reimplemented from NLMISC::IStream. Definition at line 81 of file msg_stream.cpp. References uint64.
|
|
Reimplemented from NLMISC::IStream. Definition at line 75 of file msg_stream.cpp. References sint32.
|
|
Reimplemented from NLMISC::IStream. Definition at line 69 of file msg_stream.cpp. References uint32.
|
|
Reimplemented from NLMISC::IStream. Definition at line 63 of file msg_stream.cpp. References sint16.
|
|
Reimplemented from NLMISC::IStream. Definition at line 57 of file msg_stream.cpp. References uint16.
|
|
Reimplemented from NLMISC::IStream. Definition at line 51 of file msg_stream.cpp. References sint8.
|
|
Reimplemented from NLMISC::IStream. Definition at line 45 of file msg_stream.cpp. References uint8.
|
|
Implements NLMISC::IStream. Definition at line 83 of file msg_stream.h. References NLAIC::IBasicType::getType().
00084 { 00085 throw NLMISC::EReadError((const char *)_List.getType()); 00086 } |
|
Serialisation of bitfield <=16 bits.
Definition at line 332 of file stream_inline.h. References NLMISC::IStream::serial(), and uint16.
00333 { 00334 serial(bf); 00335 return bf; 00336 } |
|
Serialisation of bitfield <=32 bits.
Definition at line 338 of file stream_inline.h. References NLMISC::IStream::serial(), and uint32.
00339 { 00340 serial(bf); 00341 return bf; 00342 } |
|
Serialisation of bitfield <=8 bits.
Definition at line 326 of file stream_inline.h. References NLMISC::IStream::serial(), and uint8. Referenced by NL3D::CMaterial::CTexEnv::serial().
00327 { 00328 serial(bf); 00329 return bf; 00330 } |
|
Method to be specified by the Deriver.
Implements NLMISC::IStream. Definition at line 79 of file msg_stream.h. References NLAIC::IBasicType::getType(), len, uint, and uint8.
00080 { 00081 throw NLMISC::EReadError((const char *)_List.getType()); 00082 } |
|
This method first serializes the size of the buffer and after the buffer itself, it enables the possibility to serial with a serialCont() on the other side. Definition at line 877 of file stream.h. References len, NLMISC::IStream::serial(), NLMISC::IStream::serialBuffer(), uint32, and uint8.
00878 { 00879 serial (len); 00880 serialBuffer (buf, len); 00881 } |
|
Serialize a check value. An object can stream a check value to check integrity or format of filed or streamed data. Just call serial check with a const value. Write will serial the value. Read will check the value is the same. If it is not, it will throw EInvalidDataStream exception. NB: The type of the value must implement an operator == and must be serializable.
Definition at line 520 of file stream.h. References NLMISC::IStream::isReading(), NLMISC::IStream::serial(), value, NLMISC::IStream::xmlPop(), and NLMISC::IStream::xmlPush(). Referenced by NLNET::cbPacsAnswer(), NLNET::CPacsClient::initMessage(), loadForm(), NLLIGO::CZoneRegion::serial(), NLLIGO::CZoneBankElement::serial(), NL3D::CZone::serial(), NL3D::CVegetableShape::serial(), NL3D::CSkeletonWeight::serial(), NL3D::CInstanceGroup::serial(), NL3D::CLodCharacterShape::serial(), NL3D::CLodCharacterShapeBuild::serial(), NL3D::CAnimationSet::serial(), and NL3D::CAnimation::serial().
00521 { 00522 // Open a node 00523 xmlPush ("CHECK"); 00524 00525 if (isReading()) 00526 { 00527 T read; 00528 serial (read); 00529 if (read!=value) 00530 throw EInvalidDataStream(*this); 00531 } 00532 else 00533 { 00534 serial (const_cast<T&>(value)); 00535 } 00536 00537 // Close the node 00538 xmlPop (); 00539 } |
|
Specialisation of serialCont() for vector<bool>.
Reimplemented in NLMISC::CBitMemStream, NLMISC::CMemStream, and NLMISC::CStringStream. Definition at line 356 of file stream.cpp. References NLMISC::IStream::isReading(), len, NLMISC::IStream::serial(), NLMISC::IStream::serialBuffer(), sint, sint32, uint, and uint8.
00357 { 00358 sint32 len=0; 00359 vector<uint8> vec; 00360 00361 if(isReading()) 00362 { 00363 serial(len); 00364 cont.resize(len); 00365 00366 if (len != 0) 00367 { 00368 // read as uint8*. 00369 sint lb= (len+7)/8; 00370 vec.resize(lb); 00371 serialBuffer( (uint8*)&(*vec.begin()) , lb); 00372 for(sint i=0;i<len;i++) 00373 { 00374 uint bit= (vec[i>>3]>>(i&7)) & 1; 00375 cont[i]= bit?true:false; 00376 } 00377 } 00378 } 00379 else 00380 { 00381 len= cont.size(); 00382 serial(len); 00383 00384 if (len != 0) 00385 { 00386 // write as uint8*. 00387 sint lb= (len+7)/8; 00388 vec.resize(lb); 00389 fill_n(vec.begin(), lb, 0); 00390 for(sint i=0;i<len;i++) 00391 { 00392 uint bit= cont[i]?1:0; 00393 vec[i>>3]|= bit<<(i&7); 00394 } 00395 serialBuffer( (uint8*)&(*vec.begin()) , lb); 00396 } 00397 } 00398 00399 } |
|
Specialisation of serialCont() for vector<sint8>.
Reimplemented in NLMISC::CBitMemStream, NLMISC::CMemStream, and NLMISC::CStringStream. Definition at line 337 of file stream.cpp. References NLMISC::IStream::isReading(), len, NLMISC::IStream::serial(), NLMISC::IStream::serialBuffer(), sint32, and uint8.
00338 { 00339 sint32 len=0; 00340 if(isReading()) 00341 { 00342 serial(len); 00343 cont.resize(len); 00344 if (len != 0) 00345 serialBuffer( (uint8*)&(*cont.begin()) , len); 00346 } 00347 else 00348 { 00349 len= cont.size(); 00350 serial(len); 00351 if (len != 0) 00352 serialBuffer( (uint8*)&(*cont.begin()) , len); 00353 } 00354 } |
|
Specialisation of serialCont() for vector<uint8>.
Reimplemented in NLMISC::CBitMemStream, NLMISC::CMemStream, and NLMISC::CStringStream. Definition at line 318 of file stream.cpp. References NLMISC::IStream::isReading(), len, NLMISC::IStream::serial(), NLMISC::IStream::serialBuffer(), sint32, and uint8.
00319 { 00320 sint32 len=0; 00321 if(isReading()) 00322 { 00323 serial(len); 00324 cont.resize(len); 00325 if (len != 0) 00326 serialBuffer( (uint8*)&(*cont.begin()) , len); 00327 } 00328 else 00329 { 00330 len= cont.size(); 00331 serial(len); 00332 if (len != 0) 00333 serialBuffer( (uint8*)&(*cont.begin()) , len); 00334 } 00335 } |
|
Specialisation of serialCont() for vector<bool>.
Reimplemented in NLMISC::CBitMemStream, NLMISC::CMemStream, and NLMISC::CStringStream. Definition at line 336 of file stream.h. References NLMISC::IStream::serialMultimap().
00336 {serialMultimap(cont);} |
|
Specialisation of serialCont() for vector<bool>.
Reimplemented in NLMISC::CBitMemStream, NLMISC::CMemStream, and NLMISC::CStringStream. Definition at line 334 of file stream.h. References NLMISC::IStream::serialMap().
00334 {serialMap(cont);} |
|
Specialisation of serialCont() for vector<bool>.
Reimplemented in NLMISC::CBitMemStream, NLMISC::CMemStream, and NLMISC::CStringStream. Definition at line 332 of file stream.h. References NLMISC::IStream::serialSTLCont().
00332 {serialSTLCont(cont);} |
|
Specialisation of serialCont() for vector<bool>.
Reimplemented in NLMISC::CBitMemStream, NLMISC::CMemStream, and NLMISC::CStringStream. Definition at line 330 of file stream.h. References NLMISC::IStream::serialSTLCont().
00330 {serialSTLCont(cont);} |
|
Specialisation of serialCont() for vector<bool>.
Reimplemented in NLMISC::CBitMemStream, NLMISC::CMemStream, and NLMISC::CStringStream. Definition at line 328 of file stream.h. References NLMISC::IStream::serialSTLCont().
00328 {serialSTLCont(cont);} |
|
Specialisation of serialCont() for vector<bool>.
Reimplemented in NLMISC::CBitMemStream, NLMISC::CMemStream, and NLMISC::CStringStream. Definition at line 326 of file stream.h. References NLMISC::IStream::serialSTLCont().
00326 {serialSTLCont(cont);} |
|
Specialisation of serialCont() for vector<bool>.
Definition at line 324 of file stream.h. References NLMISC::IStream::serialVector(). Referenced by NL3D::H_AUTO_DECL(), NLAISCRIPT::CLdbHeapMemberiOpCode::load(), NLAISCRIPT::CLdbStackMemberiOpCode::load(), NLAISCRIPT::CLdbMemberiOpCode::load(), NLAISCRIPT::CCallMethodi::load(), NLAISCRIPT::CCallStackMethodi::load(), NLAISCRIPT::CCallHeapMethodi::load(), NLAISCRIPT::CLibStackMemberMethod::load(), NLAISCRIPT::CLibCallMethodi::load(), NLAISCRIPT::CLibMemberMethodi::load(), NLAISCRIPT::CAffMemberiOpCode::load(), NLAISCRIPT::CAffHeapMemberiOpCode::load(), NLAISCRIPT::CLoadHeapObject::load(), NLAISCRIPT::CLoadStackObject::load(), NLAISCRIPT::CLoadSelfObject::load(), NLMISC::CEntityIdTranslator::load(), NLSOUND::CBackgroundSoundManager::load(), loadForm(), NLAISCRIPT::CLdbHeapMemberiOpCode::save(), NLAISCRIPT::CLdbStackMemberiOpCode::save(), NLAISCRIPT::CLdbMemberiOpCode::save(), NLAISCRIPT::CCallMethodi::save(), NLAISCRIPT::CCallStackMethodi::save(), NLAISCRIPT::CCallHeapMethodi::save(), NLAISCRIPT::CLibStackMemberMethod::save(), NLAISCRIPT::CLibCallMethodi::save(), NLAISCRIPT::CLibMemberMethodi::save(), NLAISCRIPT::CAffMemberiOpCode::save(), NLAISCRIPT::CAffHeapMemberiOpCode::save(), NLAISCRIPT::CLoadHeapObject::save(), NLAISCRIPT::CLoadStackObject::save(), NLAISCRIPT::CLoadSelfObject::save(), NLMISC::CEntityIdTranslator::save(), NLLIGO::CZoneRegion::serial(), NLLIGO::CZoneBankElement::serial(), NL3D::CZone::serial(), NL3D::CVegetableShape::serial(), NL3D::CTileVegetableDesc::serial(), NL3D::CSkeletonWeight::serial(), NL3D::CInstanceGroup::serial(), NL3D::CInstanceGroup::CInstance::serial(), NLPACS::CRetrieverInstance::serial(), NLPACS::CRetrieverBank::serial(), NLPACS::CRetrievableSurface::TLoop::serial(), NLPACS::CRetrievableSurface::serial(), NL3D::CPrimitiveBlock::serial(), NL3D::CPortal::serial(), NL3D::CPointLightNamedArray::serial(), NL3D::CPatch::serial(), NLMISC::CNoiseColorGradient::serial(), NL3D::CMeshMRMSkinnedGeom::CRdrPass::serial(), NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::serial(), NL3D::CMeshMRMSkinnedGeom::serial(), NL3D::CMeshBase::CLightMapInfoList::serial(), NL3D::CMeshBase::CLightInfoMapListV7::serial(), NL3D::CMeshGeom::CMatrixBlock::serial(), NL3D::CMaterial::serial(), NL3D::CLodCharacterTexture::serial(), NL3D::CLodCharacterShapeBank::serial(), NL3D::CLodCharacterShape::serial(), NL3D::CLodCharacterShape::CBoneInfluence::serial(), NL3D::CLodCharacterShape::CAnim::serial(), NL3D::CLodCharacterShapeBuild::serial(), NLPACS::CLocalRetriever::CTopology::serial(), NLPACS::CLocalRetriever::CTip::serial(), NLPACS::CLocalRetriever::serial(), NL3D::CIGSurfaceLight::serial(), NL3D::CHLSTextureBank::serial(), NL3D::CHLSColorTexture::serial(), NL3D::CHLSColorTexture::CMask::serial(), NLPACS::CGlobalRetriever::serial(), NLPACS::CFaceGrid::serial(), NLPACS::CExteriorMesh::serial(), NLPACS::CEdgeQuad::serial(), NLPACS::CCollisionMeshBuild::serial(), NL3D::CCluster::serial(), NLPACS::CChain::serial(), NLPACS::COrderedChain::serial(), NLPACS::COrderedChain3f::serial(), NLMISC::CBitSet::serial(), CAutomataDesc::CState::serial(), NL3D::CAnimationSet::serial(), NL3D::CAnimation::serial(), NL3D::CMaterialBase::serial(), and NLMISC::ICommand::serialCommands().
00324 {serialVector(cont);} |
|
Serialize a check value. An object can stream a check value to check integrity or format of filed or streamed data. Just call serial check with a const value. Write will serial the value. Read will check the value is the same. If it is not, it will throw EInvalidDataStream exception. NB: The type of the value must implement an operator == and must be serializable.
Definition at line 379 of file stream.h. References NLMISC::IStream::serialSTLContPolyPtr().
00379 {serialSTLContPolyPtr(cont);} |
|
Serialize a check value. An object can stream a check value to check integrity or format of filed or streamed data. Just call serial check with a const value. Write will serial the value. Read will check the value is the same. If it is not, it will throw EInvalidDataStream exception. NB: The type of the value must implement an operator == and must be serializable.
Definition at line 377 of file stream.h. References NLMISC::IStream::serialSTLContPolyPtr().
00377 {serialSTLContPolyPtr(cont);} |
|
Serialize a check value. An object can stream a check value to check integrity or format of filed or streamed data. Just call serial check with a const value. Write will serial the value. Read will check the value is the same. If it is not, it will throw EInvalidDataStream exception. NB: The type of the value must implement an operator == and must be serializable.
Definition at line 375 of file stream.h. References NLMISC::IStream::serialSTLContPolyPtr().
00375 {serialSTLContPolyPtr(cont);} |
|
Serialize a check value. An object can stream a check value to check integrity or format of filed or streamed data. Just call serial check with a const value. Write will serial the value. Read will check the value is the same. If it is not, it will throw EInvalidDataStream exception. NB: The type of the value must implement an operator == and must be serializable.
Definition at line 373 of file stream.h. References NLMISC::IStream::serialSTLContPolyPtr().
00373 {serialSTLContPolyPtr(cont);} |
|
Serialize a check value. An object can stream a check value to check integrity or format of filed or streamed data. Just call serial check with a const value. Write will serial the value. Read will check the value is the same. If it is not, it will throw EInvalidDataStream exception. NB: The type of the value must implement an operator == and must be serializable.
Definition at line 371 of file stream.h. References NLMISC::IStream::serialVectorPolyPtr(). Referenced by NL3D::CAnimation::serial().
00371 {serialVectorPolyPtr(cont);} |
|
Definition at line 362 of file stream.h. References NLMISC::IStream::serialSTLContPtr().
00362 {serialSTLContPtr(cont);} |
|
Definition at line 360 of file stream.h. References NLMISC::IStream::serialSTLContPtr().
00360 {serialSTLContPtr(cont);} |
|
Definition at line 358 of file stream.h. References NLMISC::IStream::serialSTLContPtr().
00358 {serialSTLContPtr(cont);} |
|
Definition at line 356 of file stream.h. References NLMISC::IStream::serialSTLContPtr().
00356 {serialSTLContPtr(cont);} |
|
Definition at line 354 of file stream.h. References NLMISC::IStream::serialVectorPtr(). Referenced by NL3D::CAnimationSet::serial().
00354 {serialVectorPtr(cont);} |
|
Template enum serialisation. Serialized as a sint32.
Definition at line 261 of file stream.h. References NLMISC::IStream::isReading(), NLMISC::IStream::serial(), and sint32. Referenced by NLNET::cbTCReceiveOtherSideClass(), NL3D::CVegetableShape::serial(), NL3D::CVegetable::serial(), NLPACS::CRetrieverInstance::serial(), NL3D::CPointLight::serial(), NL3D::CMaterial::serial(), NLPACS::CLocalRetriever::serial(), NLMISC::CSerialCommand::serial(), and NL3D::CAnimationPlaylist::serial().
|
|
Serial memstream, bitmemstream...
Definition at line 436 of file stream.cpp. References NLMISC::CMemStream::buffer(), NLMISC::CMemStream::bufferToFill(), NLMISC::IStream::isReading(), len, NLMISC::CMemStream::length(), NLMISC::CMemStream::resetBufPos(), NLMISC::IStream::serial(), NLMISC::IStream::serialBuffer(), uint32, and uint8.
00437 { 00438 uint32 len=0; 00439 00440 // Serialize length 00441 if ( isReading() ) 00442 { 00443 // fill b with data from this 00444 serial (len); 00445 serialBuffer (b.bufferToFill (len), len); 00446 b.resetBufPos (); 00447 } 00448 else 00449 { 00450 // fill this with data from b 00451 len = b.length(); 00452 00453 serial( len ); 00454 serialBuffer( (uint8*) b.buffer (), len ); 00455 } 00456 } |
|
Serialize Polymorphic Objet Ptr. Works with NULL pointers. If the same object is found mutliple time in the stream, ONLY ONE instance is written! NB: The ptr is serialised as a uint64 (64 bit compliant).
Definition at line 492 of file stream.h. References NLMISC::IStream::serialIStreamable(). Referenced by NL3D::CAnimationOptimizer::cloneTrack(), NL3D::CMaterial::CLightMap::serial(), NL3D::CMaterial::serial(), NL3D::CMaterialBase::CAnimatedTexture::serial(), NL3D::CMaterial::CLightMap::serial2(), and NLMISC::IStream::serialSTLContLenPolyPtr().
00493 { IStreamable *p=ptr; serialIStreamable(p); ptr= static_cast<T*>(p);} |
|
Serialize Non Polymorphic Objet Ptr. Works with NULL pointers. If the same object is found mutliple time in the stream, ONLY ONE instance is written! NB: The ptr is serialised as a uint64 (64 bit compliant).
Definition at line 390 of file stream.h. References NLMISC::IStream::_IdMap, NLMISC::IStream::_NextSerialPtrId, NLMISC::IStream::isReading(), NLMISC::IStream::ItIdMap, NLMISC::IStream::serial(), uint, uint64, NLMISC::IStream::ValueIdMap, NLMISC::IStream::xmlPop(), NLMISC::IStream::xmlPushBegin(), NLMISC::IStream::xmlPushEnd(), and NLMISC::IStream::xmlSetAttrib(). Referenced by NL3D::CParticleSystemShape::buildFromPS(), NL3D::CParticleSystemShape::flushTextures(), NL3D::CParticleSystemShape::instanciatePS(), and NLMISC::IStream::serialSTLContLenPtr().
00391 { 00392 uint64 node; 00393 00394 // Open the node header 00395 xmlPushBegin ("PTR"); 00396 00397 xmlSetAttrib ("id"); 00398 00399 if(isReading()) 00400 { 00401 serial(node); 00402 00403 // Close the header 00404 xmlPushEnd (); 00405 00406 if(node==0) 00407 ptr=NULL; 00408 else 00409 { 00410 ItIdMap it; 00411 it= _IdMap.find(node); 00412 00413 // Test if object already created/read. 00414 if( it==_IdMap.end() ) 00415 { 00416 // Construct object. 00417 ptr= new T; 00418 if(ptr==NULL) 00419 throw EStream(); 00420 00421 // Insert the node. 00422 _IdMap.insert( ValueIdMap(node, ptr) ); 00423 00424 // Read the object! 00425 serial(*ptr); 00426 } 00427 else 00428 ptr= static_cast<T*>(it->second); 00429 } 00430 } 00431 else 00432 { 00433 if(ptr==NULL) 00434 { 00435 node= 0; 00436 serial(node); 00437 00438 // Close the header 00439 xmlPushEnd (); 00440 } 00441 else 00442 { 00443 ItIdMap it; 00444 it = _IdMap.find((uint64)(uint)ptr); 00445 00446 // Test if object has been already written 00447 if( it==_IdMap.end() ) 00448 { 00449 // Not yet written 00450 00451 // Get the next available ID 00452 node = _NextSerialPtrId++; 00453 00454 // Serial the id 00455 serial(node); 00456 00457 // Insert the pointer in the map with the id 00458 _IdMap.insert( ValueIdMap((uint64)(uint)ptr, (void*)(uint)node) ); 00459 00460 // Close the header 00461 xmlPushEnd (); 00462 00463 // Write the object 00464 serial(*ptr); 00465 } 00466 else 00467 { 00468 // Write only the object id 00469 node = (uint64)(uint)(it->second); 00470 00471 serial(node); 00472 00473 // Close the header 00474 xmlPushEnd (); 00475 } 00476 } 00477 } 00478 00479 // Close the node 00480 xmlPop (); 00481 } |
|
special version for serializing a vector. Support up to sint32 length containers. Definition at line 992 of file stream.h. References NLMISC::contReset(), NLMISC::IStream::isReading(), len, NLMISC::IStream::serial(), sint, sint32, NLMISC::IStream::xmlPop(), NLMISC::IStream::xmlPush(), NLMISC::IStream::xmlPushBegin(), NLMISC::IStream::xmlPushEnd(), and NLMISC::IStream::xmlSetAttrib(). Referenced by NLMISC::CStringStream::serialCont(), NLMISC::IStream::serialCont(), and NLMISC::CBitMemStream::serialCont().
00993 { 00994 typedef typename T::value_type __value_type; 00995 typedef typename T::iterator __iterator; 00996 00997 // Open a node header 00998 xmlPushBegin ("VECTOR"); 00999 01000 // Attrib size 01001 xmlSetAttrib ("size"); 01002 01003 sint32 len=0; 01004 if(isReading()) 01005 { 01006 serial(len); 01007 01008 // Open a node header 01009 xmlPushEnd (); 01010 01011 // special version for vector: adjut good size. 01012 contReset(cont); 01013 cont.resize (len); 01014 01015 // Read the vector 01016 for(sint i=0;i<len;i++) 01017 { 01018 xmlPush ("ELM"); 01019 01020 serial(cont[i]); 01021 01022 xmlPop (); 01023 } 01024 } 01025 else 01026 { 01027 len= cont.size(); 01028 serial(len); 01029 01030 // Close the node header 01031 xmlPushEnd (); 01032 01033 // Write the vector 01034 __iterator it= cont.begin(); 01035 for(sint i=0;i<len;i++, it++) 01036 { 01037 xmlPush ("ELM"); 01038 01039 serial(const_cast<__value_type&>(*it)); 01040 01041 xmlPop (); 01042 } 01043 } 01044 01045 // Close the node 01046 xmlPop (); 01047 } |
|
Serialize a version number. Each object should store/read first a version number, using this method. Then he can use the streamVersion returned to see how he should serialise himself. NB: Version Number is read/store as a uint8, or uint32 if too bigger..
Definition at line 266 of file stream.cpp. References NLMISC::IStream::_ThrowOnNewer, NLMISC::IStream::_ThrowOnOlder, NLMISC::IStream::isReading(), NLMISC::IStream::serial(), uint, uint32, uint8, v, NLMISC::IStream::xmlPop(), and NLMISC::IStream::xmlPush(). Referenced by NL3D::H_AUTO_DECL(), NLMISC::CEntityIdTranslator::load(), loadForm(), NLMISC::CEntityIdTranslator::save(), NLLIGO::CZoneRegion::serial(), NLLIGO::CZoneRegion::SZoneUnit2::serial(), NLLIGO::CZoneBankElement::serial(), NL3D::CZone::serial(), NL3D::CPatchInfo::CBindInfo::serial(), NL3D::CZone::CPatchConnect::serial(), NL3D::CBorderVertex::serial(), NL3D::CVertexBuffer::serial(), NL3D::CVegetableShape::serial(), NL3D::CVegetable::serial(), NL3D::CTrackSampledVector::serial(), NL3D::CTrackSampledQuat::serial(), NL3D::CTrackSampledCommon::CTimeBlock::serial(), NL3D::CTileVegetableDesc::serial(), NL3D::CTileNoiseMap::serial(), NL3D::CTileNoise::serial(), NLPACS::CSurfaceQuadTree::serial(), NL3D::CSurfaceLightGrid::CCellCorner::serial(), NL3D::CSurfaceLightGrid::serial(), NL3D::CSkeletonWeight::CNode::serial(), NL3D::CSkeletonWeight::serial(), NL3D::CInstanceGroup::serial(), NL3D::CInstanceGroup::CInstance::serial(), NLPACS::CRetrieverInstance::serial(), NLPACS::CRetrieverBank::serial(), NLPACS::CRetrievableSurface::serial(), NL3D::CPSAttrib< T >::serial(), NL3D::CPrimitiveBlock::serial(), NL3D::CPortal::serial(), NL3D::CPointLightNamedArray::CPointLightGroup::serial(), NL3D::CPointLightNamedArray::serial(), NL3D::CPointLightNamed::serial(), NL3D::CPointLight::serial(), NL3D::CPatch::serial(), NLMISC::CNoiseColorGradient::serial(), NLMISC::CNoiseValue::serial(), NL3D::CMeshMRMSkinnedGeom::CRdrPass::serial(), NL3D::CMeshMRMSkinnedGeom::CShadowVertex::serial(), NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::CPackedVertex::serial(), NL3D::CMeshMRMSkinnedGeom::CPackedVertexBuffer::serial(), NL3D::CMeshMRMSkinned::serial(), NL3D::CMeshMRMSkinnedGeom::serial(), NL3D::CMeshMRMGeom::CLodInfo::serial(), NL3D::CMeshMRMGeom::CRdrPass::serial(), NL3D::CMeshMRMGeom::CShadowVertex::serial(), NL3D::CMeshBase::CLightMapInfoList::serial(), NL3D::CMeshBase::CLightMapInfoList::CMatStage::serial(), NL3D::CMeshGeom::CMatrixBlock::serial(), NL3D::CMeshGeom::CRdrPass::serial(), NLMISC::CMatrix::serial(), NL3D::CMaterial::serial(), NL3D::CLodCharacterTexture::serial(), NL3D::CLodCharacterShapeBank::serial(), NL3D::CLodCharacterShape::serial(), NL3D::CLodCharacterShape::CBoneInfluence::serial(), NL3D::CLodCharacterShape::CAnim::serial(), NL3D::CLodCharacterShapeBuild::serial(), NLPACS::CLocalRetriever::serial(), NL3D::CIGSurfaceLight::CRetrieverLightGrid::serial(), NL3D::CIGSurfaceLight::serial(), NL3D::CHLSTextureBank::CTextureInstance::serial(), NL3D::CHLSTextureBank::serial(), NL3D::CHLSColorTexture::serial(), NL3D::CHLSColorTexture::CMask::serial(), NL3D::CHLSColorDelta::serial(), NLPACS::CGlobalRetriever::serial(), NLPACS::CFaceGrid::serial(), NLPACS::CExteriorMesh::serial(), NLPACS::CEdgeQuad::serial(), NL3D::CCluster::serial(), NLPACS::CChainQuad::serial(), NLPACS::CChain::serial(), NLPACS::COrderedChain::serial(), NLPACS::COrderedChain3f::serial(), NL3D::CBoneBase::serial(), NLMISC::CBitSet::serial(), NL3D::CAnimationSet::serial(), NL3D::CAnimationPlaylist::serial(), NL3D::CAnimation::serial(), NL3D::CMaterialBase::CTexAnimTracks::serial(), NL3D::CMaterialBase::serial(), NLMISC::CAABBox::serial(), NL3D::CMaterial::CLightMap::serial2(), NL3D::CTrackSampledCommon::serialCommon(), NL3D::CVertexBuffer::serialHeader(), NL3D::CMeshMRMGeom::serialLodVertexData(), and NL3D::CVertexBuffer::serialSubset().
00267 { 00268 uint8 b=0; 00269 uint32 v=0; 00270 uint streamVersion; 00271 00272 // Open the node 00273 xmlPush ("VERSION"); 00274 00275 if(isReading()) 00276 { 00277 serial(b); 00278 if(b==0xFF) 00279 serial(v); 00280 else 00281 v=b; 00282 streamVersion=v; 00283 00284 // Exception test. 00285 if(_ThrowOnOlder && streamVersion < currentVersion) 00286 throw EOlderStream(*this); 00287 if(_ThrowOnNewer && streamVersion > currentVersion) 00288 throw ENewerStream(*this); 00289 } 00290 else 00291 { 00292 v= streamVersion=currentVersion; 00293 if(v>=0xFF) 00294 { 00295 b=0xFF; 00296 serial(b); 00297 serial(v); 00298 } 00299 else 00300 { 00301 b= (uint8)v; 00302 serial(b); 00303 } 00304 } 00305 00306 // Close the node 00307 xmlPop (); 00308 00309 return streamVersion; 00310 } |
|
Change, in live, the state of the inputStream. This could be usefull in certain case. The deriver which would want to do such a thing must call this method, and implement his own behavior. In certain case, it should call resetPtrTable() if he want to reset the stream ptr info (maybe always)... Definition at line 413 of file stream.cpp. References NLMISC::IStream::_InputStream. Referenced by NLMISC::CBitMemStream::getSerialItem(), and NLMISC::CMemStream::invert().
00414 { 00415 _InputStream= inputStream; 00416 } |
|
Set the behavior of IStream regarding input stream that are older/newer than the class. If throwOnOlder==true, IStream throws a EOlderStream when needed. If throwOnNewer==true, IStream throws a ENewerStream when needed. By default, the behavior is throwOnOlder=false, throwOnNewer=true.
Definition at line 71 of file stream.cpp. References NLMISC::IStream::_ThrowOnNewer, and NLMISC::IStream::_ThrowOnOlder.
00072 { 00073 _ThrowOnOlder=throwOnOlder; 00074 _ThrowOnNewer=throwOnNewer; 00075 } |
|
Set the XML mode is true to enable XML mode else false Definition at line 427 of file stream.cpp. References NLMISC::IStream::_XML. Referenced by NLMISC::COXml::COXml(), and NLMISC::COXml::init().
00428 { 00429 _XML = on; 00430 } |
|
xmlBreakLine() insert a break line in the XML stream.
Definition at line 794 of file stream.h. References NLMISC::IStream::_XML, and NLMISC::IStream::xmlBreakLineInternal().
00795 { 00796 // XML Mode ? 00797 if (_XML) 00798 { 00799 return xmlBreakLineInternal (); 00800 } 00801 00802 // Return ok 00803 return true; 00804 } |
|
xmlBreakLine implementation
Reimplemented in NLMISC::COXml. Definition at line 845 of file stream.h. Referenced by NLMISC::IStream::xmlBreakLine().
00845 { return true; }; |
|
xmlComment() insert a comment line in the XML stream.
Definition at line 811 of file stream.h. References NLMISC::IStream::_XML, comment(), and NLMISC::IStream::xmlCommentInternal().
00812 { 00813 // XML Mode ? 00814 if (_XML) 00815 { 00816 return xmlCommentInternal (comment); 00817 } 00818 00819 // Return ok 00820 return true; 00821 } |
|
xmlComment implementation
Reimplemented in NLMISC::COXml. Definition at line 848 of file stream.h. Referenced by NLMISC::IStream::xmlComment().
00848 { return true; }; |
|
xmlPop() close the node.
Definition at line 759 of file stream.h. References NLMISC::IStream::_XML, and NLMISC::IStream::xmlPopInternal(). Referenced by NLLIGO::CZoneRegion::serial(), NLLIGO::CZoneBankElement::serial(), NL3D::CZone::serial(), NL3D::CPatch::serial(), NLMISC::CObjectVector< sint8, false >::serial(), NLMISC::COXml::serial(), NLMISC::COXml::serialBuffer(), NLMISC::IStream::serialCheck(), NLMISC::IStream::serialIStreamable(), NLMISC::IStream::serialMap(), NLMISC::IStream::serialMultimap(), NLMISC::IStream::serialPtr(), NLMISC::IStream::serialSTLCont(), NLMISC::IStream::serialSTLContLen(), NLMISC::IStream::serialSTLContPtr(), NLMISC::IStream::serialVector(), NLMISC::IStream::serialVectorPolyPtr(), NLMISC::IStream::serialVectorPtr(), NLMISC::IStream::serialVersion(), and NLMISC::IStream::xmlSerial().
00760 { 00761 // XML Mode ? 00762 if (_XML) 00763 { 00764 return xmlPopInternal (); 00765 } 00766 00767 // Return ok 00768 return true; 00769 } |
|
xmlPop implementation
Reimplemented in NLMISC::COXml. Definition at line 839 of file stream.h. Referenced by NLMISC::IStream::xmlPop().
00839 { return true; }; |
|
Definition at line 701 of file stream.h. References NLMISC::IStream::_XML, res, NLMISC::IStream::xmlPushBeginInternal(), and NLMISC::IStream::xmlPushEndInternal(). Referenced by NLLIGO::CZoneRegion::serial(), NLLIGO::CZoneBankElement::serial(), NL3D::CZone::serial(), NL3D::CPatch::serial(), NLMISC::CObjectVector< sint8, false >::serial(), NLMISC::COXml::serial(), NLMISC::COXml::serialBuffer(), NLMISC::IStream::serialCheck(), NLMISC::IStream::serialMap(), NLMISC::IStream::serialMultimap(), NLMISC::IStream::serialSTLContLen(), NLMISC::IStream::serialVector(), NLMISC::IStream::serialVersion(), and NLMISC::IStream::xmlSerial().
00702 { 00703 // XML Mode ? 00704 if (_XML) 00705 { 00706 // Open the header 00707 bool res=xmlPushBeginInternal (name); 00708 if (res) 00709 // close the header 00710 xmlPushEndInternal (); 00711 // Return the result 00712 return res; 00713 } 00714 00715 // Return ok 00716 return true; 00717 } |
|
xmlBreakLine() insert a break line in the XML stream.
Definition at line 725 of file stream.h. References NLMISC::IStream::_XML, and NLMISC::IStream::xmlPushBeginInternal(). Referenced by NLMISC::CObjectVector< sint8, false >::serial(), NLMISC::IStream::serialIStreamable(), NLMISC::IStream::serialMap(), NLMISC::IStream::serialMultimap(), NLMISC::IStream::serialPtr(), NLMISC::IStream::serialSTLCont(), NLMISC::IStream::serialSTLContPtr(), NLMISC::IStream::serialVector(), NLMISC::IStream::serialVectorPolyPtr(), and NLMISC::IStream::serialVectorPtr().
00726 { 00727 // XML Mode ? 00728 if (_XML) 00729 { 00730 return xmlPushBeginInternal (name); 00731 } 00732 00733 // Return ok 00734 return true; 00735 } |
|
xmlPushBegin implementation
Reimplemented in NLMISC::COXml. Definition at line 833 of file stream.h. Referenced by NLMISC::IStream::xmlPush(), and NLMISC::IStream::xmlPushBegin().
00833 { return true; }; |
|
xmlPushEnd() close the node header.
Definition at line 742 of file stream.h. References NLMISC::IStream::_XML, and NLMISC::IStream::xmlPushEndInternal(). Referenced by NLMISC::CObjectVector< sint8, false >::serial(), NLMISC::IStream::serialIStreamable(), NLMISC::IStream::serialMap(), NLMISC::IStream::serialMultimap(), NLMISC::IStream::serialPtr(), NLMISC::IStream::serialSTLCont(), NLMISC::IStream::serialSTLContPtr(), NLMISC::IStream::serialVector(), NLMISC::IStream::serialVectorPolyPtr(), and NLMISC::IStream::serialVectorPtr().
00743 { 00744 // XML Mode ? 00745 if (_XML) 00746 { 00747 return xmlPushEndInternal (); 00748 } 00749 00750 // Return ok 00751 return true; 00752 } |
|
xmlPushEnd implementation
Reimplemented in NLMISC::COXml. Definition at line 836 of file stream.h. Referenced by NLMISC::IStream::xmlPush(), and NLMISC::IStream::xmlPushEnd().
00836 { return true; }; |
|
Definition at line 683 of file stream.h. References NLMISC::IStream::serial(), NLMISC::IStream::xmlPop(), and NLMISC::IStream::xmlPush().
|
|
Definition at line 671 of file stream.h. References NLMISC::IStream::serial(), NLMISC::IStream::xmlPop(), and NLMISC::IStream::xmlPush().
|
|
Definition at line 659 of file stream.h. References NLMISC::IStream::serial(), NLMISC::IStream::xmlPop(), and NLMISC::IStream::xmlPush().
|
|
xmlSerial() serial a values into a node. Definition at line 647 of file stream.h. References NLMISC::IStream::serial(), NLMISC::IStream::xmlPop(), and NLMISC::IStream::xmlPush(). Referenced by NLLIGO::CZoneRegion::serial(), NLLIGO::CZoneRegion::SZoneUnit2::serial(), NLLIGO::CZoneRegion::SZoneUnit::serial(), NL3D::CZone::serial(), NL3D::CPatchInfo::CBindInfo::serial(), NL3D::CZone::CPatchConnect::serial(), NL3D::CBorderVertex::serial(), NL3D::CTileElement::serial(), NL3D::CTileColorOldPatchVersion6::serial(), NL3D::CTileColor::serial(), and NL3D::CPatch::serial().
|
|
xmlSetAttrib() set the name of the next node header attribute serialised. is the name of the node header attribute serialised.
Definition at line 777 of file stream.h. References NLMISC::IStream::_XML, and NLMISC::IStream::xmlSetAttribInternal(). Referenced by NLMISC::CObjectVector< sint8, false >::serial(), NLMISC::IStream::serialIStreamable(), NLMISC::IStream::serialMap(), NLMISC::IStream::serialMultimap(), NLMISC::IStream::serialPtr(), NLMISC::IStream::serialSTLCont(), NLMISC::IStream::serialSTLContPtr(), NLMISC::IStream::serialVector(), NLMISC::IStream::serialVectorPolyPtr(), and NLMISC::IStream::serialVectorPtr().
00778 { 00779 // XML Mode ? 00780 if (_XML) 00781 { 00782 return xmlSetAttribInternal (name); 00783 } 00784 00785 // Return ok 00786 return true; 00787 } |
|
xmlBreakLine implementation
Reimplemented in NLMISC::COXml. Definition at line 842 of file stream.h. Referenced by NLMISC::IStream::xmlSetAttrib().
00842 { return true; }; |
|
Definition at line 42 of file msg_stream.h. Referenced by CMsgIStream(), and isEnd(). |
|
Definition at line 43 of file msg_stream.h. Referenced by CMsgIStream(). |
|
Definition at line 41 of file msg_stream.h. |
|
Definition at line 44 of file msg_stream.h. |