[Libreoffice-commits] core.git: 3 commits - writerperfect/source
David Tardon
dtardon at redhat.com
Tue Jan 14 11:50:19 PST 2014
writerperfect/source/common/WPXSvStream.cxx | 37 +++++++++++++++++++++-------
1 file changed, 29 insertions(+), 8 deletions(-)
New commits:
commit 29bd1673e92f1da1c360a77ea3a029db67d7cebe
Author: David Tardon <dtardon at redhat.com>
Date: Tue Jan 14 20:42:12 2014 +0100
add a brief description
Change-Id: I1469910e3c20248133e56145c9ea543cbfdf3c4a
diff --git a/writerperfect/source/common/WPXSvStream.cxx b/writerperfect/source/common/WPXSvStream.cxx
index 48e8192..d705ba5 100644
--- a/writerperfect/source/common/WPXSvStream.cxx
+++ b/writerperfect/source/common/WPXSvStream.cxx
@@ -82,12 +82,34 @@ struct StreamData
explicit StreamData(const rtl::OString &rName);
SotStorageStreamRefWrapper stream;
+
+ /** Name of the stream.
+ *
+ * This is not @c rtl::OUString, because we need to be able to
+ * produce const char* from it.
+ */
rtl::OString name;
};
typedef boost::unordered_map<rtl::OUString, std::size_t, rtl::OUStringHash> NameMap_t;
typedef boost::unordered_map<rtl::OUString, SotStorageRefWrapper, rtl::OUStringHash> OLEStorageMap_t;
+/** Representation of an OLE2 storage.
+ *
+ * This class tries to bring a bit of sanity to use of SotStorage with
+ * respect to the needs of @c librevenge::RVNGInputStream API. It
+ * holds all nested storages for the whole lifetime (more precisely,
+ * since initialization, which is performed by calling @c
+ * initialize()), thus ensuring that no created stream is destroyed
+ * just because its parent storage went out of scope. It also holds a
+ * bidirectional map of stream names to their indexes (index of a
+ * stream is determined by deep-first traversal), which is also
+ * populated during initialization (member variables @c maStreams and
+ * @c maNameMap).
+ *
+ * Streams are created on demand (and saved, for the same reason as
+ * storages).
+ */
struct OLEStorageImpl
{
OLEStorageImpl();
@@ -103,10 +125,10 @@ private:
SotStorageStreamRef createStream(const rtl::OUString &rPath);
public:
- SotStorageRefWrapper mxRootStorage;
- OLEStorageMap_t maStorageMap;
- ::std::vector< StreamData > maStreams;
- NameMap_t maNameMap;
+ SotStorageRefWrapper mxRootStorage; //< root storage of the OLE2
+ OLEStorageMap_t maStorageMap; //< map of all sub storages by name
+ ::std::vector< StreamData > maStreams; //< list of streams and their names
+ NameMap_t maNameMap; //< map of stream names to indexes (into @c maStreams)
bool mbInitialized;
};
commit 6b98b8dc620ae2276e1f3be1b935b6a0db3bc054
Author: David Tardon <dtardon at redhat.com>
Date: Tue Jan 14 20:24:36 2014 +0100
the stream is already owned by the root storage
Change-Id: If4c548c1ed9275f525fe311853545af3f6313f41
diff --git a/writerperfect/source/common/WPXSvStream.cxx b/writerperfect/source/common/WPXSvStream.cxx
index acadd9f..48e8192 100644
--- a/writerperfect/source/common/WPXSvStream.cxx
+++ b/writerperfect/source/common/WPXSvStream.cxx
@@ -103,7 +103,6 @@ private:
SotStorageStreamRef createStream(const rtl::OUString &rPath);
public:
- boost::scoped_ptr<SvStream> mpStream;
SotStorageRefWrapper mxRootStorage;
OLEStorageMap_t maStorageMap;
::std::vector< StreamData > maStreams;
@@ -118,8 +117,7 @@ StreamData::StreamData(const rtl::OString &rName)
}
OLEStorageImpl::OLEStorageImpl()
- : mpStream()
- , mxRootStorage()
+ : mxRootStorage()
, maStorageMap()
, maStreams()
, maNameMap()
@@ -132,7 +130,6 @@ void OLEStorageImpl::initialize(SvStream *const pStream)
if (!pStream)
return;
- mpStream.reset(pStream);
mxRootStorage.ref = new SotStorage( pStream, sal_True );
traverse(mxRootStorage.ref, "");
commit 9abd5653b1a2c1e3357208b28b1d4e2c3120cade
Author: David Tardon <dtardon at redhat.com>
Date: Tue Jan 14 20:10:59 2014 +0100
init members
Change-Id: I3ee5d05142ebd9738e34ea3276932a4f9e3fc43d
diff --git a/writerperfect/source/common/WPXSvStream.cxx b/writerperfect/source/common/WPXSvStream.cxx
index bc9354b..acadd9f 100644
--- a/writerperfect/source/common/WPXSvStream.cxx
+++ b/writerperfect/source/common/WPXSvStream.cxx
@@ -259,6 +259,8 @@ WPXSvInputStreamImpl::WPXSvInputStreamImpl( Reference< XInputStream > xStream )
mxStream(xStream),
mxSeekable(xStream, UNO_QUERY),
maData(0),
+ mpOLEStorage(0),
+ mbCheckedOLE(false),
mnLength(0),
mpReadBuffer(0),
mnReadBufferLength(0),
More information about the Libreoffice-commits
mailing list