00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00032 #if !defined( OESS_1__IO__CUSTOM__STL__VECTOR_HPP )
00033 #define OESS_1__IO__CUSTOM__STL__VECTOR_HPP
00034
00035 #include <vector>
00036
00037 #include <oess_1/defs/h/quantity.hpp>
00038
00039 #include <oess_1/io/h/stream.hpp>
00040
00041 namespace oess_1
00042 {
00043
00044 namespace io
00045 {
00046
00051 template< class T >
00052 oess_1::io::istream_t &
00053 operator>>( oess_1::io::istream_t & s, std::vector< T > & o )
00054 {
00055 oess_1::defs::quantity_t q;
00056 s >> q;
00057 std::vector< T > tmp;
00058 if( q.value() )
00059 {
00060 tmp.reserve( q.value() );
00061 for( oess_1::uint_t c = q.value(); c; --c )
00062 {
00063 T next;
00064 s >> next;
00065 tmp.push_back( next );
00066 }
00067 }
00068
00069 tmp.swap( o );
00070
00071 return s;
00072 }
00073
00078 template< class T >
00079 oess_1::io::ostream_t &
00080 operator<<( oess_1::io::ostream_t & s, const std::vector< T > & o )
00081 {
00082 oess_1::defs::quantity_t q( o.size() );
00083 s << q;
00084 for( typename std::vector< T >::const_iterator i = o.begin(), end = o.end();
00085 i != end; ++i )
00086 {
00087 s << *i;
00088 }
00089 return s;
00090 }
00091
00092 }
00093
00094 }
00095
00096 #endif
00097