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
00028
00029
00030
00031
00032
00033
00034 #ifndef DCOSTRMA_H
00035 #define DCOSTRMA_H
00036
00037 #include "osconfig.h"
00038 #include "oftypes.h"
00039 #include "ofcond.h"
00040 #include "dcxfer.h"
00041
00042
00046 class DcmConsumer
00047 {
00048 public:
00049
00051 virtual ~DcmConsumer()
00052 {
00053 }
00054
00059 virtual OFBool good() const = 0;
00060
00065 virtual OFCondition status() const = 0;
00066
00072 virtual OFBool isFlushed() const = 0;
00073
00081 virtual Uint32 avail() const = 0;
00082
00088 virtual Uint32 write(const void *buf, Uint32 buflen) = 0;
00089
00095 virtual void flush() = 0;
00096 };
00097
00098
00102 class DcmOutputFilter: public DcmConsumer
00103 {
00104 public:
00105
00107 virtual ~DcmOutputFilter()
00108 {
00109 }
00110
00117 virtual void append(DcmConsumer& consumer) = 0;
00118 };
00119
00120
00124 class DcmOutputStream
00125 {
00126 public:
00127
00129 virtual ~DcmOutputStream();
00130
00135 virtual OFBool good() const;
00136
00141 virtual OFCondition status() const;
00142
00148 virtual OFBool isFlushed() const;
00149
00157 virtual Uint32 avail() const;
00158
00164 virtual Uint32 write(const void *buf, Uint32 buflen);
00165
00171 virtual void flush();
00172
00176 virtual Uint32 tell() const;
00177
00185 virtual OFCondition installCompressionFilter(E_StreamCompression filterType);
00186
00187 protected:
00188
00195 DcmOutputStream(DcmConsumer *initial);
00196
00197 private:
00198
00200 DcmOutputStream(const DcmOutputStream&);
00201
00203 DcmOutputStream& operator=(const DcmOutputStream&);
00204
00206 DcmConsumer *current_;
00207
00209 DcmOutputFilter *compressionFilter_;
00210
00212 Uint32 tell_;
00213 };
00214
00215
00216
00217 #endif
00218
00219
00220
00221
00222
00223
00224
00225
00226
00227
00228