00001 // XDRStreamMarshaller.h 00002 00003 #ifndef I_XDRStreamMarshaller_h 00004 #define I_XDRStreamMarshaller_h 1 00005 00006 #include <iostream> 00007 00008 using std::ostream ; 00009 using std::cout ; 00010 00011 #include "Marshaller.h" 00012 #include "XDRUtils.h" 00013 00014 class XDRStreamMarshaller : public Marshaller 00015 { 00016 private: 00017 static char * _buf ; 00018 XDR * _sink ; 00019 ostream & _out ; 00020 XDRStreamMarshaller() 00021 : _sink( 0 ), _out( cout ) {} ; 00022 public: 00023 XDRStreamMarshaller( ostream &out ) ; 00024 virtual ~XDRStreamMarshaller() ; 00025 00026 virtual void put_byte( dods_byte val ) ; 00027 00028 virtual void put_int16( dods_int16 val ) ; 00029 virtual void put_int32( dods_int32 val ) ; 00030 00031 virtual void put_float32( dods_float32 val ) ; 00032 virtual void put_float64( dods_float64 val ) ; 00033 00034 virtual void put_uint16( dods_uint16 val ) ; 00035 virtual void put_uint32( dods_uint32 val ) ; 00036 00037 virtual void put_str( const string &val ) ; 00038 virtual void put_url( const string &val ) ; 00039 00040 virtual void put_opaque( char *val, unsigned int len ) ; 00041 virtual void put_int( int val ) ; 00042 00043 virtual void put_vector( char *val, int num, 00044 Vector &vec ) ; 00045 virtual void put_vector( char *val, int num, int width, 00046 Vector &vec ) ; 00047 00048 virtual void dump(ostream &strm) const ; 00049 } ; 00050 00051 #endif // I_XDRStreamMarshaller_h 00052