00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018 #ifndef _DECAF_IO_OUTPUTSTREAMWRITER_H_
00019 #define _DECAF_IO_OUTPUTSTREAMWRITER_H_
00020
00021 #include <decaf/util/Config.h>
00022 #include <decaf/io/Writer.h>
00023
00024 namespace decaf {
00025 namespace io {
00026
00027 class OutputStream;
00028
00036 class DECAF_API OutputStreamWriter: public Writer {
00037 private:
00038
00039
00040 OutputStream* stream;
00041
00042
00043 bool own;
00044
00045
00046 volatile bool closed;
00047
00048 private:
00049
00050 OutputStreamWriter(const OutputStreamWriter&);
00051 OutputStreamWriter& operator=(const OutputStreamWriter&);
00052
00053 public:
00054
00066 OutputStreamWriter(OutputStream* stream, bool own = false);
00067
00068 virtual ~OutputStreamWriter();
00069
00070 virtual void close();
00071
00072 virtual void flush();
00073
00074 protected:
00075
00076 virtual void doWriteArrayBounded(const char* buffer, int size, int offset, int length);
00077
00078
00079 virtual void checkClosed() const;
00080
00081 };
00082
00083 }}
00084
00085 #endif