jigdo API

serialize.hh File Reference

Convert objects into byte streams and vice versa. More...

#include <bstream.hh>
#include <config.h>

Go to the source code of this file.


Classes

class  SerialIstreamIterator
 Slight variation (and simplification) of std::istream_iterator and std::ostream_iterator. More...
class  SerialOstreamIterator

Functions

template<class Object, class Iterator>
Iterator serialize (const Object &o, Iterator i)
 Store serialized object via iterator.
template<class Object, class ConstIterator>
ConstIterator unserialize (Object &o, ConstIterator i)
 Assign the contents of the byte stream pointed to by i to the object.
template<class Object>
size_t serialSizeOf (const Object &o)
 Return number of bytes needed by this object when serialized.
Numeric types - append the number of bytes to use (e.g.

4 for 32-bit)

template<class NumType, class Iterator>
Iterator serialize1 (NumType x, Iterator i)
template<class NumType, class ConstIterator>
ConstIterator unserialize1 (NumType &x, ConstIterator i)
template<class NumType, class Iterator>
Iterator serialize2 (NumType x, Iterator i)
template<class NumType, class ConstIterator>
ConstIterator unserialize2 (NumType &x, ConstIterator i)
template<class NumType, class Iterator>
Iterator serialize4 (NumType x, Iterator i)
template<class NumType, class ConstIterator>
ConstIterator unserialize4 (NumType &x, ConstIterator i)
template<class NumType, class Iterator>
Iterator serialize6 (NumType x, Iterator i)
template<class NumType, class ConstIterator>
ConstIterator unserialize6 (NumType &x, ConstIterator i)
template<class NumType, class Iterator>
Iterator serialize8 (NumType x, Iterator i)
template<class NumType, class ConstIterator>
ConstIterator unserialize8 (NumType &x, ConstIterator i)

Detailed Description

Convert objects into byte streams and vice versa.

Classes that support serialization should implement the indicated member functions; serialize(), unserialize() and serialSizeOf(). It is assumed that 'byte' has been typdef'd to an unsigned type which represents one byte.

  MyClass {
    template<class Iterator>
    inline Iterator serialize(Iterator i) const;
    template<class ConstIterator>
    inline ConstIterator unserialize(ConstIterator i);
    inline size_t serialSizeOf() const;
  };

Function Documentation

template<class Object, class Iterator>
Iterator serialize ( const Object &  o,
Iterator  i 
) [inline]

Store serialized object via iterator.

The iterator could be byte* or vector<byte>::iterator or SerialOstreamIterator - anything in which you can store bytes. There must be enough room to store serialSizeOf() bytes, implementers of serialize() need not check this.

The implementation of serialize() must both modify i and return its value after the last modification.

Referenced by FilePart::SerializeCacheEntry::operator()().

template<class NumType, class Iterator>
Iterator serialize1 ( NumType  x,
Iterator  i 
) [inline]

template<class NumType, class Iterator>
Iterator serialize2 ( NumType  x,
Iterator  i 
) [inline]

template<class NumType, class Iterator>
Iterator serialize4 ( NumType  x,
Iterator  i 
) [inline]

template<class NumType, class Iterator>
Iterator serialize6 ( NumType  x,
Iterator  i 
) [inline]

template<class NumType, class Iterator>
Iterator serialize8 ( NumType  x,
Iterator  i 
) [inline]

template<class Object>
size_t serialSizeOf ( const Object &  o  )  [inline]

Return number of bytes needed by this object when serialized.

If a whole tree of objects is serialized, this may include the accumulated serialized sizes of the child objects, too.

template<class Object, class ConstIterator>
ConstIterator unserialize ( Object &  o,
ConstIterator  i 
) [inline]

Assign the contents of the byte stream pointed to by i to the object.

template<class Object, class ConstIterator>

Referenced by JigdoDescVec::get().

template<class NumType, class ConstIterator>
ConstIterator unserialize1 ( NumType &  x,
ConstIterator  i 
) [inline]

template<class NumType, class ConstIterator>
ConstIterator unserialize2 ( NumType &  x,
ConstIterator  i 
) [inline]

template<class NumType, class ConstIterator>
ConstIterator unserialize4 ( NumType &  x,
ConstIterator  i 
) [inline]

template<class NumType, class ConstIterator>
ConstIterator unserialize6 ( NumType &  x,
ConstIterator  i 
) [inline]

template<class NumType, class ConstIterator>
ConstIterator unserialize8 ( NumType &  x,
ConstIterator  i 
) [inline]


Generated on Tue Sep 23 14:27:42 2008 for jigdo by  doxygen 1.5.6