summaryrefslogtreecommitdiff
path: root/tools/inc/tools/pstm.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'tools/inc/tools/pstm.hxx')
-rw-r--r--tools/inc/tools/pstm.hxx74
1 files changed, 36 insertions, 38 deletions
diff --git a/tools/inc/tools/pstm.hxx b/tools/inc/tools/pstm.hxx
index c74c108c2cff..3a209687d137 100644
--- a/tools/inc/tools/pstm.hxx
+++ b/tools/inc/tools/pstm.hxx
@@ -155,46 +155,45 @@ typedef std::map<SvPersistBase*, sal_uIntPtr> PersistBaseMap;
//=========================================================================
class SvStream;
-class TOOLS_DLLPUBLIC SvPersistStream : public SvStream
-/* [Beschreibung]
-
- Mit dieser Klasse k"onnen Laufzeit Objektstrukturen gespeichert
- und geladen werden. Es m"ussen immer alle beteiligten Objekte
- gespeichert oder geladen werden. Um die Objekte automatisch
- laden zu k"onnen, wird eine Factory f"ur jede Klasse von Objekten,
- die im Stream vorkommen k"onnen, ben"otigt. Die Liste aller Klassen
- wird in einem <SvClassManager> Objekt gespeichert und dem
- SvPersistStream "ubergeben, wenn er erzeugt wird.
- Weiterhin wird die M"oglichkeit geboten sal_uInt32 Werte komprimiert
- zu schreiben und zu lesen (<SvPersistStream::WriteCompressed>,
- <SvPersistStream::ReadCompressed>).
- Es gibt auch die drei Hilfsmethoden <SvPersistStream::WriteDummyLen>,
- <SvPersistStream::WriteLen> und <SvPersistStream::ReadLen> um eine
- L"ange vor das Objekt zu schreiben.
-
- [Beispiel]
-
- Ein konkretes Beispiel ist im Konstruktor beschrieben.
- Objekt A verweist auf B, dieses auf C und das wieder auf A.
- C verweist auf D.
-
- Die Reihenfolge beim Speichern und Laden ist egal, sie muss nur
- gleich sein:
- Speichern: Laden:
- A,B,C,D A,B,C,D richtig
- B,A,C,D B,A,C,D richtig
- C,A,B,D A,B,C,D falsch
- A,B,C,D A,B,C falsch
-
- [Anmerkung]
-
- Das Dateiformat zwischen DBG_UTIL und !DBG_UTIL ist unterschiedlich,
- kann aber von beiden Versionen gelesen werden.
+
+/** Persistent Stream
+
+ This class provides accessor to storing and loading runtime objects.
+ All dependent objects have to be stored as well.
+ In order to load objects automatically, every object class must
+ provide a Factory method to read an object from stream.
+ The list of all classes is stored in a <SvClassManager> object
+ and is sent to SvPersistStream upon initialization.
+ By using the Method SvPersistStream::WriteCompressed and
+ SvPersistStream::ReadCompressed, compressed sal_uInt32 values may be
+ written to / read from the Stream.
+ Several helper methods exists for writing and reading
+ object lengths to the stream: SvPersistStream::WriteDummyLen,
+ SvPersistStream::WriteLen and SvPersistStream::ReadLen.
+
+ [Example]
+
+ One example is described in the constructor.
+ Assume a ring-like dependency, where A referenes B,
+ B itself references C, and C references to both D and A.
+
+ The order of the objects upon saving and loading does not matter,
+ as long objects are loaded in the same order they were stored.
+
+ Saving: Loading:
+ A,B,C,D A,B,C,D correct
+ B,A,C,D B,A,C,D correct
+ C,A,B,D A,B,C,D wrong
+ A,B,C,D A,B,C wrong
+
+ @note The file formats DBG_UTIL and !DBG_UTIL differ, but we can read from
+ both versions.
*/
+class TOOLS_DLLPUBLIC SvPersistStream : public SvStream
{
SvClassManager & rClassMgr;
SvStream * pStm;
- PersistBaseMap aPTable; // Pointer und Key gedreht
+ PersistBaseMap aPTable; // reversed pointer and key
SvPersistUIdx aPUIdx;
sal_uIntPtr nStartIdx;
const SvPersistStream * pRefStm;
@@ -239,8 +238,7 @@ public:
TOOLS_DLLPUBLIC friend SvPersistStream& operator << (SvPersistStream &, SvPersistBase *);
TOOLS_DLLPUBLIC friend SvPersistStream& operator >> (SvPersistStream &, SvPersistBase * &);
- // Objekte halten ihre Id's w"ahrend geladen und
- // gespeichert werden.
+ // Objects maintain their IDs while storing and loading to/from stream
friend SvStream& operator >> ( SvStream &, SvPersistStream & );
friend SvStream& operator << ( SvStream &, SvPersistStream & );
};