19 #include <co/object.h> 
   20 #include <co/objectVersion.h> 
   30     const uint64_t nElems = str.length();
 
   31     _write( &nElems, 
sizeof( nElems ));
 
   33         _write( str.c_str(), nElems );
 
   48 template< 
class T > 
inline 
   49 DataOStream& DataOStream::operator << ( const lunchbox::RefPtr< T >& ptr )
 
   51     return *
this << ptr.get();
 
   54 template< 
class T > 
inline 
   55 DataOStream& DataOStream::operator << ( const lunchbox::Buffer< T >& buffer )
 
   57     return (*
this) << buffer.getSize()
 
   58                    << Array< const T >( buffer.getData(), buffer.getSize());
 
   61 template< 
class T > 
inline 
   62 DataOStream& DataOStream::operator << ( const std::vector< T >& value )
 
   64     const uint64_t nElems = value.size();
 
   66     for( uint64_t i = 0; i < nElems; ++i )
 
   71 template< 
class K, 
class V > 
inline 
   72 DataOStream& DataOStream::operator << ( const std::map< K, V >& value )
 
   74     const uint64_t nElems = value.size();
 
   76     for( 
typename std::map< K, V >::const_iterator it = value.begin();
 
   77          it != value.end(); ++it )
 
   79         *
this << it->first << it->second;
 
   84 template< 
class T > 
inline 
   85 DataOStream& DataOStream::operator << ( const std::set< T >& value )
 
   87     const uint64_t nElems = value.size();
 
   89     for( 
typename std::set< T >::const_iterator it = value.begin();
 
   90          it != value.end(); ++it )
 
   97 template< 
class K, 
class V > 
inline 
   98 DataOStream& DataOStream::operator << ( const stde::hash_map< K, V >& value )
 
  100     const uint64_t nElems = value.size();
 
  102     for( 
typename stde::hash_map< K, V >::const_iterator it = value.begin();
 
  103          it != value.end(); ++it )
 
  105         *
this << it->first << it->second;
 
  110 template< 
class T > 
inline 
  111 DataOStream& DataOStream::operator << ( const stde::hash_set< T >& value )
 
  113     const uint64_t nElems = value.size();
 
  115     for( 
typename stde::hash_set< T >::const_iterator it = value.begin();
 
  116          it != value.end(); ++it )
 
  123 template< 
typename C > 
inline 
  124 void DataOStream::serializeChildren( 
const std::vector<C*>& children )
 
  126     const uint64_t nElems = children.size();
 
  129     for( 
typename std::vector< C* >::const_iterator i = children.begin();
 
  130          i != children.end(); ++i )
 
  133         (*this) << ObjectVersion( child );
 
  134         LBASSERTINFO( !child || child->isAttached(),
 
  135                       "Found unmapped object during serialization" );
 
  142 DataOStream& DataOStream::operator << ( const std::vector< uint8_t >& value )
 
  143 { 
return _writeFlatVector( value ); }
 
  147 DataOStream& DataOStream::operator << ( const std::vector< uint16_t >& value )
 
  148 { 
return _writeFlatVector( value ); }
 
  152 DataOStream& DataOStream::operator << ( const std::vector< int16_t >& value )
 
  153 { 
return _writeFlatVector( value ); }
 
  157 DataOStream& DataOStream::operator << ( const std::vector< uint32_t >& value )
 
  158 { 
return _writeFlatVector( value ); }
 
  162 DataOStream& DataOStream::operator << ( const std::vector< int32_t >& value )
 
  163 { 
return _writeFlatVector( value ); }
 
  167 DataOStream& DataOStream::operator << ( const std::vector< uint64_t >& value )
 
  168 { 
return _writeFlatVector( value ); }
 
  172 DataOStream& DataOStream::operator << ( const std::vector< int64_t >& value )
 
  173 { 
return _writeFlatVector( value ); }
 
  177 DataOStream& DataOStream::operator << ( const std::vector< float >& value )
 
  178 { 
return _writeFlatVector( value ); }
 
  182 DataOStream& DataOStream::operator << ( const std::vector< double >& value )
 
  183 { 
return _writeFlatVector( value ); }
 
  187 DataOStream::operator << ( const std::vector< ObjectVersion >& value )
 
  188 { 
return _writeFlatVector( value ); }
 
DataOStream & operator<<(const T &value)
Write a plain data item by copying it to the stream. 
 
A helper struct bundling an object identifier and version. 
 
CO_API bool isAttached() const 
 
A std::ostream-like interface for object serialization. 
 
Object-oriented network library.