00001 /* 00002 * 00003 * Copyright (C) 1994-2005, OFFIS 00004 * 00005 * This software and supporting documentation were developed by 00006 * 00007 * Kuratorium OFFIS e.V. 00008 * Healthcare Information and Communication Systems 00009 * Escherweg 2 00010 * D-26121 Oldenburg, Germany 00011 * 00012 * THIS SOFTWARE IS MADE AVAILABLE, AS IS, AND OFFIS MAKES NO WARRANTY 00013 * REGARDING THE SOFTWARE, ITS PERFORMANCE, ITS MERCHANTABILITY OR 00014 * FITNESS FOR ANY PARTICULAR USE, FREEDOM FROM ANY COMPUTER DISEASES OR 00015 * ITS CONFORMITY TO ANY SPECIFICATION. THE ENTIRE RISK AS TO QUALITY AND 00016 * PERFORMANCE OF THE SOFTWARE IS WITH THE USER. 00017 * 00018 * Module: dcmdata 00019 * 00020 * Author: Marco Eichelberg 00021 * 00022 * Purpose: DcmOutputBufferStream and related classes, 00023 * implements output to blocks of memory as needed in the dcmnet module. 00024 * 00025 * Last Update: $Author: meichel $ 00026 * Update Date: $Date: 2005/12/08 16:28:25 $ 00027 * Source File: $Source: /share/dicom/cvs-depot/dcmtk/dcmdata/include/dcmtk/dcmdata/dcostrmb.h,v $ 00028 * CVS/RCS Revision: $Revision: 1.2 $ 00029 * Status: $State: Exp $ 00030 * 00031 * CVS/RCS Log at end of file 00032 * 00033 */ 00034 00035 #ifndef DCOSTRMB_H 00036 #define DCOSTRMB_H 00037 00038 #include "dcmtk/config/osconfig.h" 00039 #include "dcmtk/dcmdata/dcostrma.h" 00040 00044 class DcmBufferConsumer: public DcmConsumer 00045 { 00046 public: 00047 00053 DcmBufferConsumer(void *buf, Uint32 bufLen); 00054 00056 virtual ~DcmBufferConsumer(); 00057 00062 virtual OFBool good() const; 00063 00068 virtual OFCondition status() const; 00069 00075 virtual OFBool isFlushed() const; 00076 00084 virtual Uint32 avail() const; 00085 00091 virtual Uint32 write(const void *buf, Uint32 buflen); 00092 00098 virtual void flush(); 00099 00107 virtual void flushBuffer(void *& buffer, Uint32& length); 00108 00109 private: 00110 00112 DcmBufferConsumer(const DcmBufferConsumer&); 00113 00115 DcmBufferConsumer& operator=(const DcmBufferConsumer&); 00116 00118 unsigned char *buffer_; 00119 00121 Uint32 bufSize_; 00122 00124 Uint32 filled_; 00125 00127 OFCondition status_; 00128 }; 00129 00130 00134 class DcmOutputBufferStream: public DcmOutputStream 00135 { 00136 public: 00142 DcmOutputBufferStream(void *buf, Uint32 bufLen); 00143 00145 virtual ~DcmOutputBufferStream(); 00146 00154 virtual void flushBuffer(void *& buffer, Uint32& length); 00155 00156 private: 00157 00159 DcmOutputBufferStream(const DcmOutputBufferStream&); 00160 00162 DcmOutputBufferStream& operator=(const DcmOutputBufferStream&); 00163 00165 DcmBufferConsumer consumer_; 00166 00167 }; 00168 00169 00170 #endif 00171 00172 /* 00173 * CVS/RCS Log: 00174 * $Log: dcostrmb.h,v $ 00175 * Revision 1.2 2005/12/08 16:28:25 meichel 00176 * Changed include path schema for all DCMTK header files 00177 * 00178 * Revision 1.1 2002/08/27 16:55:36 meichel 00179 * Initial release of new DICOM I/O stream classes that add support for stream 00180 * compression (deflated little endian explicit VR transfer syntax) 00181 * 00182 * 00183 */