diff options
Diffstat (limited to 'tools/source/ref/pstm.cxx')
-rw-r--r-- | tools/source/ref/pstm.cxx | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/tools/source/ref/pstm.cxx b/tools/source/ref/pstm.cxx index 4956a6aa46f5..a91b078409cb 100644 --- a/tools/source/ref/pstm.cxx +++ b/tools/source/ref/pstm.cxx @@ -62,6 +62,9 @@ TYPEINIT0( SvRttiBase ); /****************** SvPersistBaseMemberList ******************************/ SvPersistBaseMemberList::SvPersistBaseMemberList(){} +SvPersistBaseMemberList::SvPersistBaseMemberList( + sal_uInt16 nInitSz, sal_uInt16 nResize ) + : SuperSvPersistBaseMemberList( nInitSz, nResize ){} #define PERSIST_LIST_VER (sal_uInt8)0 #define PERSIST_LIST_DBGUTIL (sal_uInt8)0x80 @@ -197,6 +200,44 @@ SvPersistStream::SvPersistStream } //========================================================================= +SvPersistStream::SvPersistStream +( + SvClassManager & rMgr, /* Alle Factorys, deren Objekt geladen und + gespeichert werdn k"onnen */ + SvStream * pStream, /* Dieser Stream wird als Medium genommen, auf + dem der PersistStream arbeitet */ + const SvPersistStream & rPersStm + /* Wenn PersistStream's verschachtelt werden, + dann ist dies der Parent-Stream. */ +) + : rClassMgr( rMgr ) + , pStm( pStream ) + // Bereiche nicht ueberschneiden, deshalb nur groessere Indexe + , aPUIdx( rPersStm.GetCurMaxIndex() +1 ) + , nStartIdx( rPersStm.GetCurMaxIndex() +1 ) + , pRefStm( &rPersStm ) + , nFlags( 0 ) +/* [Beschreibung] + + Der Konstruktor der Klasse SvPersistStream. Die Objekte rMgr und + pStream d"urfen nicht ver"andert werden, solange sie in einem + SvPersistStream eingesetzt sind. Eine Aussnahme gibt es f"ur + pStream (siehe <SvPersistStream::SetStream>). + Durch diesen Konstruktor wird eine Hierarchiebildung unterst"utzt. + Alle Objekte aus einer Hierarchie m"ussen erst geladen werden, + wenn das erste aus dieser Hierarchie benutzt werden soll. +*/ +{ + bIsWritable = sal_True; + if( pStm ) + { + SetVersion( pStm->GetVersion() ); + SetError( pStm->GetError() ); + SyncSvStream( pStm->Tell() ); + } +} + +//========================================================================= SvPersistStream::~SvPersistStream() /* [Beschreibung] @@ -862,4 +903,21 @@ SvStream& operator >> return rStm; } +//========================================================================= +sal_uIntPtr SvPersistStream::InsertObj( SvPersistBase * pObj ) +{ + sal_uIntPtr nId = aPUIdx.Insert( pObj ); + aPTable.Insert( (sal_uIntPtr)pObj, (void *)nId ); + return nId; +} + +//========================================================================= +sal_uIntPtr SvPersistStream::RemoveObj( SvPersistBase * pObj ) +{ + sal_uIntPtr nIdx = GetIndex( pObj ); + aPUIdx.Remove( nIdx ); + aPTable.Remove( (sal_uIntPtr)pObj ); + return nIdx; +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |