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
00026
00027 #ifndef CEYLAN_OUTPUT_STREAM_H_
00028 #define CEYLAN_OUTPUT_STREAM_H_
00029
00030
00031 #include "CeylanStream.h"
00032 #include "CeylanTypes.h"
00033
00034
00035
00036
00037 namespace Ceylan
00038 {
00039
00040
00041 namespace System
00042 {
00043
00044
00045
00057 class CEYLAN_DLL OutputStream : public virtual Stream
00058 {
00059
00060
00061 public:
00062
00063
00064
00070 class OutputStreamException : public StreamException
00071 {
00072 public:
00073
00074 explicit OutputStreamException(
00075 const std::string & reason ) :
00076 StreamException( reason )
00077 {
00078
00079 }
00080
00081 } ;
00082
00083
00084
00086 class WriteFailedException: public OutputStreamException
00087 {
00088 public:
00089
00090 explicit WriteFailedException(
00091 const std::string & reason ) :
00092 OutputStreamException( reason )
00093 {
00094
00095 }
00096
00097 } ;
00098
00099
00100
00109 explicit OutputStream( bool blocking = true ) ;
00110
00111
00112
00114 virtual ~OutputStream() throw() ;
00115
00116
00117
00126 virtual StreamID getOutputStreamID() const = 0 ;
00127
00128
00129
00130
00131
00132
00133
00134
00151 virtual Size write( const std::string & message ) ;
00152
00153
00154
00176 virtual Size write( const Ceylan::Byte * buffer, Size length ) ;
00177
00178
00179
00180
00181
00182
00183
00190 virtual void writeSint8( Ceylan::Sint8 toWrite ) ;
00191
00192
00193
00200 virtual void writeUint8( Ceylan::Uint8 toWrite ) ;
00201
00202
00203
00210 virtual void writeSint16( Ceylan::Sint16 toWrite ) ;
00211
00212
00213
00220 virtual void writeUint16( Ceylan::Uint16 toWrite ) ;
00221
00222
00223
00230 virtual void writeSint32( Ceylan::Sint32 toWrite ) ;
00231
00232
00233
00240 virtual void writeUint32( Ceylan::Uint32 toWrite ) ;
00241
00242
00243
00244
00245
00246
00247
00248
00249
00256 virtual void writeFloat32( Ceylan::Float32 toWrite ) ;
00257
00258
00259
00266 virtual void writeFloat64( Ceylan::Float64 toWrite ) ;
00267
00268
00269
00281 virtual void writeString( const std::string & toWrite ) ;
00282
00283
00284
00297 virtual const std::string toString(
00298 Ceylan::VerbosityLevels level = Ceylan::high ) const ;
00299
00300
00301
00302
00303 private:
00304
00305
00306
00315 OutputStream( const OutputStream & source ) ;
00316
00317
00318
00327 OutputStream & operator = ( const OutputStream & source ) ;
00328
00329
00330
00331 } ;
00332
00333 }
00334
00335 }
00336
00337
00338
00339 #endif // CEYLAN_OUTPUT_STREAM_H_
00340