#include "pichunkstream.h" /*! \class PIChunkStream * \brief Class for binary serialization * * \section PIChunkStream_sec0 Synopsis * This class provides very handly mechanism to store and restore values to and from * \a PIByteArray. The main advantage of using this class is that your binary data * become independent from order and collection of your values. * * \section PIChunkStream_sec1 Mechanism * %PIChunkStream works with items called "chunk". Chunk is an ID and any value that * can be stored and restored to \a PIByteArray with stream operators << and >>. * You can place chunks to stream and read chunks from stream. * * To construct %PIChunkStream for writing data use any constructor. Empty constructor * creates internal empty buffer that can be accessed by function \a data(). * Non-empty constructor works with given byte array. * * To read chunks from byte array use function \a read() that returns ID of * next chunk. Then you can get value of this chunk with function \a getData(), * but you should definitely know type of this value. You can read from byte array * while \a atEnd() if false. * * \section PIChunkStream_ex0 Example * Prepare your structs to work with %PIChunkStream * \snippet pichunkstream.cpp struct * Writing to %PIChunkStream * \snippet pichunkstream.cpp write * Reading from %PIChunkStream * \snippet pichunkstream.cpp read */ void PIChunkStream::setSource(const PIByteArray & data) { data_ = const_cast(&data); _init(); } void PIChunkStream::setSource(PIByteArray * data) { data_ = (data ? data : &tmp_data); _init(); } PIChunkStream::~PIChunkStream() { } void PIChunkStream::_init() { last_id = -1; last_data.clear(); }