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__LIST_HPP )
00033 #define OESS_1__IO__CUSTOM__STL__LIST_HPP
00034
00035 #include <list>
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::list< T > & o )
00054 {
00055 oess_1::defs::quantity_t q;
00056 s >> q;
00057 std::list< T > tmp_list;
00058 for( oess_1::uint_t c = q.value(); c; --c )
00059 {
00060 T next;
00061 s >> next;
00062 tmp_list.push_back( next );
00063 }
00064
00065 tmp_list.swap( o );
00066
00067 return s;
00068 }
00069
00074 template< class T >
00075 oess_1::io::ostream_t &
00076 operator<<( oess_1::io::ostream_t & s, const std::list< T > & o )
00077 {
00078 oess_1::defs::quantity_t q( o.size() );
00079 s << q;
00080 for( typename std::list< T >::const_iterator i = o.begin(), end = o.end();
00081 i != end; ++i )
00082 {
00083 s << *i;
00084 }
00085 return s;
00086 }
00087
00088 }
00089
00090 }
00091
00092 #endif
00093