Re: Serialization
Larry Evans <cppljevans@suddenlink.net> writes:
On 11/04/10 12:28, Andrea Crotti wrote:
I'm doing a very complicated structure for serialize/deserialize
objects,
[snip]
Hi Andrea,
I've never used it, but boost has a serialization library:
http://www.boost.org/doc/libs/1_44_0/libs/serialization/doc/index.html
which you may find useful.
-regards,
Larry
Yes it does look very nice, but the problem is that I can't really use
it.
Or well I can use it for testing and other things but in "production" I
must be able to disable it, and then it's a bit problematic.
I'm not expert in this field at all, I'm looking around and what I only
need is just for example
- take a std::vector<string> var;
- write it in a portable manner
- send and reconstruct
So now suppose that
coord_t = int
and
stream_t = char
--8<---------------cut here---------------start------------->8---
For one of the types I did this
Stream PadCoordinate::toStream()
{
// the stream should also accept a vector of something else
// or a generic iterator, to make life easier to the other part of the code
vector<stream_t> vec;
for (size_t i=0; i < coord.size(); ++i) {
vec.push_back((stream_t) coord[i]);
}
Stream st(vec);
return st;
}
// maybe this conversion is not really a good idea
PadCoordinate PadCoordinate::parseStream(const Stream& raw)
{
// instead of pushing I have to set the values!!
PadCoordinate pc;
for (int i=0; i < raw.getSize(); ++i) {
pc.coord[i] = (coord_t) raw[i];
}
return pc;
}
--8<---------------cut here---------------end--------------->8---
where Stream is this thing in the end
--8<---------------cut here---------------start------------->8---
class Stream
{
private:
bool stream_is_const;
std::vector<stream_t> stream;
void setStream(stream_t *buf, const int);
...
--8<---------------cut here---------------end--------------->8---
because in the end the data to the other layers must go in
(char *buffer, int *size) format.
But here it was easy since it's easily convertible (even if probably
wrong already since int is much larger).
But what if I have a bigger type?
Does it make sense to use the vector of chars there at all?
Any example of a simple serialization in c++?