in-memory stream, binary archive,serialization
Hello, I need to serialize into and from a memory buffer using boost::archive::binary_oarchive and binary_iarchive. Using std::stringstream does not work (it does work with text_oarchive and text_iarchive in memory and using files). I found a mention in the archives about similar need here: http://lists.boost.org/boost-users/2007/10/31580.php But I cannot figure it out. I am trying to flesh out the two operations marshall() and unmarshall() below, such that an instance of STORAGE_TYPE will hold the resulting bytes of an archival operation of a class of type T, or the inverse where I have the STORAGE_TYPE and want to create a new T from an oarchive operation. #include <string> #include <vector> #include <sstream> #ifdef USE_TEXT typedef std::string STORAGE_TYPE; #else typedef std::vector<unsigned char> STORAGE_TYPE; #endif template<typename T> void marshall(const T& storeObj, STORAGE_TYPE& store) { } and it's compliment: template<typename T> void unmarshall(T& restoredObj, const STORAGE_TYPE& store) { } Help getting the STORAGE_TYPE and memory stream would be greatly appreciated. Thanks, Vic
On 12 May 2008, at 01:20, Victor Whiskey Yankee wrote:
Hello,
I need to serialize into and from a memory buffer using boost::archive::binary_oarchive and binary_iarchive.
Using std::stringstream does not work (it does work with text_oarchive and text_iarchive in memory and using files).
I found a mention in the archives about similar need here: http://lists.boost.org/boost-users/2007/10/31580.php
But I cannot figure it out.
Have you tried using the Boost IO Stream library to create a stream that buffers in memory and use that with a binary archive? Matthias
On 12 May 2008, at 17:14, Victor Whiskey Yankee wrote:
Matthias Troyer wrote:
On 12 May 2008, at 01:20, Victor Whiskey Yankee wrote:
Hello,
I need to serialize into and from a memory buffer using boost::archive::binary_oarchive and binary_iarchive.
Using std::stringstream does not work (it does work with text_oarchive and text_iarchive in memory and using files).
I found a mention in the archives about similar need here: http://lists.boost.org/boost-users/2007/10/31580.php
But I cannot figure it out.
Have you tried using the Boost IO Stream library to create a stream that buffers in memory and use that with a binary archive?
The posting I mentioned above suggests the same thing. As I said, I did try for several hours, but the iostreams documentation is so difficult I could not figure it out.
I have a working version that I could send. It is just a few lines of code. Matthias
On 14 May 2008, at 22:17, Victor Whiskey Yankee wrote:
Could you just post it to the list?
Here is an example program:
#include
participants (2)
-
Matthias Troyer
-
Victor Whiskey Yankee