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: DcmOutputFileStream and related classes, 00023 * implements streamed output to files. 00024 * 00025 * Last Update: $Author: meichel $ 00026 * Update Date: $Date: 2005/12/08 16:28:26 $ 00027 * Source File: $Source: /share/dicom/cvs-depot/dcmtk/dcmdata/include/dcmtk/dcmdata/dcostrmf.h,v $ 00028 * CVS/RCS Revision: $Revision: 1.4 $ 00029 * Status: $State: Exp $ 00030 * 00031 * CVS/RCS Log at end of file 00032 * 00033 */ 00034 00035 #ifndef DCOSTRMF_H 00036 #define DCOSTRMF_H 00037 00038 #include "dcmtk/config/osconfig.h" 00039 #include "dcmtk/dcmdata/dcostrma.h" 00040 00041 #define INCLUDE_CSTDIO 00042 #include "dcmtk/ofstd/ofstdinc.h" 00043 00044 00047 class DcmFileConsumer: public DcmConsumer 00048 { 00049 public: 00053 DcmFileConsumer(const char *filename); 00054 00058 DcmFileConsumer(FILE *file); 00059 00061 virtual ~DcmFileConsumer(); 00062 00067 virtual OFBool good() const; 00068 00073 virtual OFCondition status() const; 00074 00080 virtual OFBool isFlushed() const; 00081 00089 virtual Uint32 avail() const; 00090 00096 virtual Uint32 write(const void *buf, Uint32 buflen); 00097 00103 virtual void flush(); 00104 00105 private: 00106 00108 DcmFileConsumer(const DcmFileConsumer&); 00109 00111 DcmFileConsumer& operator=(const DcmFileConsumer&); 00112 00114 FILE *file_; 00115 00117 OFCondition status_; 00118 }; 00119 00120 00123 class DcmOutputFileStream: public DcmOutputStream 00124 { 00125 public: 00129 DcmOutputFileStream(const char *filename); 00130 00134 DcmOutputFileStream(FILE *file); 00135 00137 virtual ~DcmOutputFileStream(); 00138 00139 private: 00140 00142 DcmOutputFileStream(const DcmOutputFileStream&); 00143 00145 DcmOutputFileStream& operator=(const DcmOutputFileStream&); 00146 00148 DcmFileConsumer consumer_; 00149 00150 }; 00151 00152 00153 #endif 00154 00155 /* 00156 * CVS/RCS Log: 00157 * $Log: dcostrmf.h,v $ 00158 * Revision 1.4 2005/12/08 16:28:26 meichel 00159 * Changed include path schema for all DCMTK header files 00160 * 00161 * Revision 1.3 2003/11/07 13:49:08 meichel 00162 * Added constructor taking an open FILE* instead of a file name string 00163 * 00164 * Revision 1.2 2002/11/27 12:07:22 meichel 00165 * Adapted module dcmdata to use of new header file ofstdinc.h 00166 * 00167 * Revision 1.1 2002/08/27 16:55:37 meichel 00168 * Initial release of new DICOM I/O stream classes that add support for stream 00169 * compression (deflated little endian explicit VR transfer syntax) 00170 * 00171 * 00172 */