diff options
Diffstat (limited to 'include/svl/filerec.hxx')
-rw-r--r-- | include/svl/filerec.hxx | 206 |
1 files changed, 39 insertions, 167 deletions
diff --git a/include/svl/filerec.hxx b/include/svl/filerec.hxx index 8178c5ea712a..5aeb0b9ccccf 100644 --- a/include/svl/filerec.hxx +++ b/include/svl/filerec.hxx @@ -20,15 +20,11 @@ #ifndef _SFXFILEREC_HXX #define _SFXFILEREC_HXX -//========================================================================= - #include "svl/svldllapi.h" #include <tools/debug.hxx> #include <tools/stream.hxx> #include <vector> -//------------------------------------------------------------------------ - #define SFX_REC_PRETAG_EXT sal_uInt8(0x00) // Pre-Tag f"ur Extended-Records #define SFX_REC_PRETAG_EOR sal_uInt8(0xFF) // Pre-Tag f"ur End-Of-Records @@ -45,14 +41,10 @@ #define SFX_REC_TYPE_DRAWENG 0x400 // Drawing-Engine-Record #define SFX_REC_TYPE_EOR 0xF00 // End-Of-Records -//------------------------------------------------------------------------ - #define SFX_REC_HEADERSIZE_MINI 4 // Gr"o\se des Mini-Record-Headers #define SFX_REC_HEADERSIZE_SINGLE 4 // zzgl. HEADERSIZE_MINI => 8 #define SFX_REC_HEADERSIZE_MULTI 6 // zzgl. HEADERSIZE_SINGLE => 14 -//------------------------------------------------------------------------ - #ifndef DBG #ifdef DBG_UTIL #define DBG(x) x @@ -61,8 +53,6 @@ #endif #endif -//------------------------------------------------------------------------ - /* [Fileformat] Jeder Record beginnt mit einem Byte, dem sogenannten 'Pre-Tag'. @@ -172,10 +162,6 @@ High-Nibble des Typs bei Vergleichen nicht ber"ucksichtigt wird. */ -//------------------------------------------------------------------------ - -class SVL_DLLPUBLIC SfxMiniRecordWriter - /* [Beschreibung] Mit Instanzen dieser Klasse kann ein einfacher Record in einen Stream @@ -206,7 +192,7 @@ class SVL_DLLPUBLIC SfxMiniRecordWriter *aRecord << aMember2; } */ - +class SVL_DLLPUBLIC SfxMiniRecordWriter { protected: SvStream* _pStream; // <SvStream>, in dem der Record liegt @@ -234,10 +220,6 @@ private: SfxMiniRecordWriter& operator=(const SfxMiniRecordWriter&); }; -//------------------------------------------------------------------------ - -class SVL_DLLPUBLIC SfxMiniRecordReader - /* [Beschreibung] Mit Instanzen dieser Klasse kann ein einfacher Record aus einem Stream @@ -261,7 +243,7 @@ class SVL_DLLPUBLIC SfxMiniRecordReader } } */ - +class SVL_DLLPUBLIC SfxMiniRecordReader { protected: SvStream* _pStream; // <SvStream>, aus dem gelesen wird @@ -303,10 +285,6 @@ private: SfxMiniRecordReader& operator=(const SfxMiniRecordReader&); }; -//------------------------------------------------------------------------ - -class SVL_DLLPUBLIC SfxSingleRecordWriter: public SfxMiniRecordWriter - /* [Beschreibung] Mit Instanzen dieser Klasse kann ein Record in einen Stream geschrieben @@ -332,7 +310,7 @@ class SVL_DLLPUBLIC SfxSingleRecordWriter: public SfxMiniRecordWriter 1* sal_uInt16 Content-Tag SizeOfContent* sal_uInt8 Content */ - +class SVL_DLLPUBLIC SfxSingleRecordWriter: public SfxMiniRecordWriter { protected: SfxSingleRecordWriter( sal_uInt8 nRecordType, @@ -345,10 +323,6 @@ public: sal_uInt32 Close( bool bSeekToEndOfRec = true ); }; -//------------------------------------------------------------------------ - -class SVL_DLLPUBLIC SfxSingleRecordReader: public SfxMiniRecordReader - /* [Beschreibung] Mit Instanzen dieser Klasse kann ein einfacher Record aus einem Stream @@ -358,7 +332,7 @@ class SVL_DLLPUBLIC SfxSingleRecordReader: public SfxMiniRecordReader Es ist auch m"oglich, den Record zu "uberspringen, ohne sein internes Format zu kennen. */ - +class SVL_DLLPUBLIC SfxSingleRecordReader: public SfxMiniRecordReader { protected: sal_uInt16 _nRecordTag; // Art des Gesamt-Inhalts @@ -383,10 +357,6 @@ public: inline bool HasVersion( sal_uInt16 nVersion ) const; }; -//------------------------------------------------------------------------ - -class SVL_DLLPUBLIC SfxMultiFixRecordWriter: public SfxSingleRecordWriter - /* [Beschreibung] Mit Instanzen dieser Klasse kann ein Record in einen Stream geschrieben @@ -431,7 +401,7 @@ class SVL_DLLPUBLIC SfxMultiFixRecordWriter: public SfxSingleRecordWriter } } */ - +class SVL_DLLPUBLIC SfxMultiFixRecordWriter: public SfxSingleRecordWriter { protected: sal_uInt32 _nContentStartPos; /* Startposition des jeweiligen @@ -455,10 +425,6 @@ public: sal_uInt32 Close( bool bSeekToEndOfRec = true ); }; -//------------------------------------------------------------------------ - -class SVL_DLLPUBLIC SfxMultiVarRecordWriter: public SfxMultiFixRecordWriter - /* [Beschreibung] Mit Instanzen dieser Klasse kann ein Record in einen Stream geschrieben @@ -502,7 +468,7 @@ class SVL_DLLPUBLIC SfxMultiVarRecordWriter: public SfxMultiFixRecordWriter } } */ - +class SVL_DLLPUBLIC SfxMultiVarRecordWriter: public SfxMultiFixRecordWriter { protected: std::vector<sal_uInt32> _aContentOfs; @@ -526,10 +492,6 @@ public: virtual sal_uInt32 Close( bool bSeekToEndOfRec = true ); }; -//------------------------------------------------------------------------ - -class SVL_DLLPUBLIC SfxMultiMixRecordWriter: public SfxMultiVarRecordWriter - /* [Beschreibung] Mit Instanzen dieser Klasse kann ein Record in einen Stream geschrieben @@ -561,7 +523,7 @@ class SVL_DLLPUBLIC SfxMultiMixRecordWriter: public SfxMultiVarRecordWriter ) NumberOfContents* sal_uInt32 ( ContentOfs << 8 + Version ) */ - +class SVL_DLLPUBLIC SfxMultiMixRecordWriter: public SfxMultiVarRecordWriter { public: inline SfxMultiMixRecordWriter( SvStream *pStream, @@ -575,10 +537,6 @@ public: { OSL_FAIL( "NewContent() only allowed with args" ); } }; -//------------------------------------------------------------------------ - -class SVL_DLLPUBLIC SfxMultiRecordReader: public SfxSingleRecordReader - /* [Beschreibung] Mit Instanzen dieser Klasse kann ein aus mehreren Contents bestehender @@ -610,7 +568,7 @@ class SVL_DLLPUBLIC SfxMultiRecordReader: public SfxSingleRecordReader } } */ - +class SVL_DLLPUBLIC SfxMultiRecordReader: public SfxSingleRecordReader { sal_uInt32 _nStartPos; // Start-Position des Records sal_uInt32* _pContentOfs; // Offsets der Startpositionen @@ -637,21 +595,17 @@ public: inline sal_uInt32 ContentCount() const; }; -//========================================================================= - -inline SfxMiniRecordWriter::SfxMiniRecordWriter -( - SvStream* pStream, // Stream, in dem der Record angelegt wird - sal_uInt8 nTag // Record-Tag zwischen 0x01 und 0xFE -) - /* [Beschreibung] Legt in 'pStream' einen 'SfxMiniRecord' an, dessen Content-Gr"o\se nicht bekannt ist, sondern nach dam Streamen des Contents errechnet werden soll. */ - +inline SfxMiniRecordWriter::SfxMiniRecordWriter +( + SvStream* pStream, // Stream, in dem der Record angelegt wird + sal_uInt8 nTag // Record-Tag zwischen 0x01 und 0xFE +) : _pStream( pStream ), _nStartPos( pStream->Tell() ), _bHeaderOk(false), @@ -663,21 +617,17 @@ inline SfxMiniRecordWriter::SfxMiniRecordWriter pStream->SeekRel( + SFX_REC_HEADERSIZE_MINI ); } -//------------------------------------------------------------------------- +/* [Beschreibung] + Legt in 'pStream' einen 'SfxMiniRecord' an, dessen Content-Gr"o\se + von vornherein bekannt ist. +*/ inline SfxMiniRecordWriter::SfxMiniRecordWriter ( SvStream* pStream, // Stream, in dem der Record angelegt wird sal_uInt8 nTag, // Record-Tag zwischen 0x01 und 0xFE sal_uInt32 nSize // Gr"o\se der Daten in Bytes ) - -/* [Beschreibung] - - Legt in 'pStream' einen 'SfxMiniRecord' an, dessen Content-Gr"o\se - von vornherein bekannt ist. -*/ - : _pStream( pStream ), // _nTag( uninitialized ), // _nStarPos( uninitialized ), @@ -690,82 +640,60 @@ inline SfxMiniRecordWriter::SfxMiniRecordWriter *pStream << ( ( nTag << 24 ) | nSize ); } -//------------------------------------------------------------------------- - -inline SfxMiniRecordWriter::~SfxMiniRecordWriter() - /* [Beschreibung] Der Dtor der Klasse <SfxMiniRecordWriter> schlie\st den Record automatisch, falls <SfxMiniRecordWriter::Close()> nicht bereits explizit gerufen wurde. */ - +inline SfxMiniRecordWriter::~SfxMiniRecordWriter() { // wurde der Header noch nicht geschrieben oder mu\s er gepr"uft werden if ( !_bHeaderOk ) Close(); } -//------------------------------------------------------------------------- - -inline SvStream& SfxMiniRecordWriter::operator*() const - /* [Beschreibung] Dieser Operator liefert den Stream, in dem der Record liegt. Der Record darf noch nicht geschlossen worden sein. */ - +inline SvStream& SfxMiniRecordWriter::operator*() const { DBG_ASSERT( !_bHeaderOk, "getting Stream of closed record" ); return *_pStream; } -//------------------------------------------------------------------------- - inline void SfxMiniRecordWriter::Reset() { _pStream->Seek( _nStartPos + SFX_REC_HEADERSIZE_MINI ); _bHeaderOk = false; } -//========================================================================= - -inline SfxMiniRecordReader::~SfxMiniRecordReader() - /* [Beschreibung] Der Dtor der Klasse <SfxMiniRecordReader> positioniert den Stream automatisch auf die Position direkt hinter dem Record, falls nicht <SfxMiniRecordReader::Skip()> bereits explizit gerufen wurde. */ - +inline SfxMiniRecordReader::~SfxMiniRecordReader() { // noch nicht explizit ans Ende gesprungen? if ( !_bSkipped ) Skip(); } -//------------------------------------------------------------------------- - -inline void SfxMiniRecordReader::Skip() - /* [Beschreibung] Mit dieser Methode wird der Stream direkt hinter das Ende des Records positioniert. */ - +inline void SfxMiniRecordReader::Skip() { _pStream->Seek(_nEofRec); _bSkipped = sal_True; } -//------------------------------------------------------------------------- - -inline sal_uInt8 SfxMiniRecordReader::GetTag() const - /* [Beschreibung] Liefert des aus dem Header gelesene Pre-Tag des Records. Dieses kann @@ -774,47 +702,35 @@ inline sal_uInt8 SfxMiniRecordReader::GetTag() const gesetzt. SFX_REC_PRETAG_EXT ist g"ultig, da diese extended-Records nur eine Erweiterung des SfxMiniRecord darstellen. */ - +inline sal_uInt8 SfxMiniRecordReader::GetTag() const { return _nPreTag; } -//------------------------------------------------------------------------- - -inline bool SfxMiniRecordReader::IsValid() const - /* [Beschreibung] Hiermit kann abgefragt werden, ob der Record erfolgreich aus dem Stream konstruiert werden konnte, der Header also f"ur diesen Record-Typ passend war. */ - +inline bool SfxMiniRecordReader::IsValid() const { return _nPreTag != SFX_REC_PRETAG_EOR; } -//------------------------------------------------------------------------- - -inline SvStream& SfxMiniRecordReader::operator*() const - /* [Beschreibung] Dieser Operator liefert den Stream in dem der Record liegt. Die aktuelle Position des Streams mu\s innerhalb des Records liegen. */ - +inline SvStream& SfxMiniRecordReader::operator*() const { DBG_ASSERT( _pStream->Tell() < _nEofRec, "read behind record" ); return *_pStream; } -//========================================================================= - -inline sal_uInt32 SfxSingleRecordWriter::Close( bool bSeekToEndOfRec ) - // siehe <SfxMiniRecordWriter::Close(bool)> - +inline sal_uInt32 SfxSingleRecordWriter::Close( bool bSeekToEndOfRec ) { sal_uInt32 nRet = 0; @@ -840,8 +756,6 @@ inline sal_uInt32 SfxSingleRecordWriter::Close( bool bSeekToEndOfRec ) return nRet; } -//------------------------------------------------------------------------- - inline void SfxSingleRecordWriter::Reset() { _pStream->Seek( _nStartPos + SFX_REC_HEADERSIZE_MINI + @@ -849,74 +763,54 @@ inline void SfxSingleRecordWriter::Reset() _bHeaderOk = false; } -//========================================================================= - -inline sal_uInt16 SfxSingleRecordReader::GetTag() const - /* [Beschreibung] Liefert des aus dem Header gelesene Tag f"ur den Gesamt-Record. */ - +inline sal_uInt16 SfxSingleRecordReader::GetTag() const { return _nRecordTag; } -//------------------------------------------------------------------------- - -inline sal_uInt8 SfxSingleRecordReader::GetVersion() const - /* [Beschreibung] Liefert die Version des aus dem Stream gelesenen Records. */ - +inline sal_uInt8 SfxSingleRecordReader::GetVersion() const { return _nRecordVer; } -//------------------------------------------------------------------------- - -inline bool SfxSingleRecordReader::HasVersion( sal_uInt16 nVersion ) const - /* [Beschreibung] Stellt fest, ob der aus dem Stream gelese Record in der Version 'nVersion' oder h"oher vorliegt. */ - +inline bool SfxSingleRecordReader::HasVersion( sal_uInt16 nVersion ) const { return _nRecordVer >= nVersion; } -//========================================================================= - -inline SfxMultiFixRecordWriter::~SfxMultiFixRecordWriter() - /* [Beschreibung] Der Dtor der Klasse <SfxMultiFixRecordWriter> schlie\st den Record automatisch, falls <SfxMutiFixRecordWriter::Close()> nicht bereits explizit gerufen wurde. */ - +inline SfxMultiFixRecordWriter::~SfxMultiFixRecordWriter() { // wurde der Header noch nicht geschrieben oder mu\s er gepr"uft werden if ( !_bHeaderOk ) Close(); } -//------------------------------------------------------------------------- - -inline void SfxMultiFixRecordWriter::NewContent() - /* [Beschreibung] Mit dieser Methode wird in den Record ein neuer Content eingef"ugt. Jeder, auch der 1. Record mu\s durch Aufruf dieser Methode eingeleitet werden. */ - +inline void SfxMultiFixRecordWriter::NewContent() { #ifdef DBG_UTIL sal_uLong nOldStartPos; @@ -939,29 +833,23 @@ inline void SfxMultiFixRecordWriter::NewContent() ++_nContentCount; } -//========================================================================= +/* [Beschreibung] + Legt in 'pStream' einen 'SfxMultiMixRecord' an, f"ur dessen Contents + je eine separate Kennung f"ur Art (Tag) und Version gespeichert wird. + Die Gr"o\sen der einzelnen Contents werden automatisch ermittelt. +*/ inline SfxMultiMixRecordWriter::SfxMultiMixRecordWriter ( SvStream* pStream, // Stream, in dem der Record angelegt wird sal_uInt16 nRecordTag, // Gesamt-Record-Art-Kennung sal_uInt8 nRecordVer // Gesamt-Record-Versions-Kennung ) - -/* [Beschreibung] - - Legt in 'pStream' einen 'SfxMultiMixRecord' an, f"ur dessen Contents - je eine separate Kennung f"ur Art (Tag) und Version gespeichert wird. - Die Gr"o\sen der einzelnen Contents werden automatisch ermittelt. -*/ - : SfxMultiVarRecordWriter( SFX_REC_TYPE_MIXTAGS, pStream, nRecordTag, nRecordVer ) { } -//========================================================================= - inline void SfxMultiFixRecordWriter::Reset() { _pStream->Seek( _nStartPos + SFX_REC_HEADERSIZE_MINI + @@ -970,58 +858,42 @@ inline void SfxMultiFixRecordWriter::Reset() _bHeaderOk = false; } -//========================================================================= - -inline sal_uInt16 SfxMultiRecordReader::GetContentTag() - /* [Beschreibung] Diese Methode liefert die Art-Kennung des zuletzt mit der Methode <SfxMultiRecordReder::GetContent()> ge"offneten Contents. */ - +inline sal_uInt16 SfxMultiRecordReader::GetContentTag() { return _nContentTag; } -//------------------------------------------------------------------------- - -inline sal_uInt8 SfxMultiRecordReader::GetContentVersion() const - /* [Beschreibung] Diese Methode liefert die Version-Kennung des zuletzt mit der Methode <SfxMultiRecordReder::GetContent()> ge"offneten Contents. */ - +inline sal_uInt8 SfxMultiRecordReader::GetContentVersion() const { return _nContentVer; } -//------------------------------------------------------------------------- - -inline bool SfxMultiRecordReader::HasContentVersion( sal_uInt16 nVersion ) const - /* [Beschreibung] Diese Methode stellt fest, ob die Version 'nVersion' in der Version des zuletzt mit der Methode <SfxMultiRecordReder::GetContent()> ge"offneten Contents enthalten ist. */ - +inline bool SfxMultiRecordReader::HasContentVersion( sal_uInt16 nVersion ) const { return _nContentVer >= nVersion; } -//------------------------------------------------------------------------- - -inline sal_uInt32 SfxMultiRecordReader::ContentCount() const - /* [Beschreibung] Diese Methode liefert die Anzahl im Record befindlichen Contents. */ - +inline sal_uInt32 SfxMultiRecordReader::ContentCount() const { return _nContentCount; } |