dcmdata/include/dcmtk/dcmdata/dcistrmb.h

00001 /*
00002  *
00003  *  Copyright (C) 1994-2010, OFFIS e.V.
00004  *  All rights reserved.  See COPYRIGHT file for details.
00005  *
00006  *  This software and supporting documentation were developed by
00007  *
00008  *    OFFIS e.V.
00009  *    R&D Division Health
00010  *    Escherweg 2
00011  *    D-26121 Oldenburg, Germany
00012  *
00013  *
00014  *  Module:  dcmdata
00015  *
00016  *  Author:  Marco Eichelberg
00017  *
00018  *  Purpose: DcmInputBufferStream and related classes,
00019  *    implements input to blocks of memory as needed in the dcmnet module.
00020  *
00021  *  Last Update:      $Author: joergr $
00022  *  Update Date:      $Date: 2010-10-14 13:15:41 $
00023  *  CVS/RCS Revision: $Revision: 1.6 $
00024  *  Status:           $State: Exp $
00025  *
00026  *  CVS/RCS Log at end of file
00027  *
00028  */
00029 
00030 #ifndef DCISTRMB_H
00031 #define DCISTRMB_H
00032 
00033 #include "dcmtk/config/osconfig.h"
00034 #include "dcmtk/dcmdata/dcistrma.h"
00035 
00036 
00040 class DcmBufferProducer: public DcmProducer
00041 {
00042 public:
00045   DcmBufferProducer();
00046 
00048   virtual ~DcmBufferProducer();
00049 
00054   virtual OFBool good() const;
00055 
00060   virtual OFCondition status() const;
00061 
00065   virtual OFBool eos();
00066 
00074   virtual offile_off_t avail();
00075 
00081   virtual offile_off_t read(void *buf, offile_off_t buflen);
00082 
00087   virtual offile_off_t skip(offile_off_t skiplen);
00088 
00093   virtual void putback(offile_off_t num);
00094 
00100   virtual void setBuffer(const void *buf, offile_off_t buflen);
00101 
00108   virtual void releaseBuffer();
00109 
00113   virtual void setEos();
00114 
00115 private:
00116 
00118   DcmBufferProducer(const DcmBufferProducer&);
00119 
00121   DcmBufferProducer& operator=(const DcmBufferProducer&);
00122 
00124   unsigned char *buffer_;
00125 
00127   unsigned char *backup_;
00128 
00130   offile_off_t bufSize_;
00131 
00133   offile_off_t bufIndex_;
00134 
00136   offile_off_t backupIndex_;
00137 
00139   offile_off_t backupStart_;
00140 
00142   OFCondition status_;
00143 
00145   OFBool eosflag_;
00146 
00147 };
00148 
00149 
00153 class DcmInputBufferStream: public DcmInputStream
00154 {
00155 public:
00158   DcmInputBufferStream();
00159 
00161   virtual ~DcmInputBufferStream();
00162 
00172   virtual DcmInputStreamFactory *newFactory() const;
00173 
00179   virtual void setBuffer(const void *buf, offile_off_t buflen);
00180 
00187   virtual void releaseBuffer();
00188 
00192   virtual void setEos();
00193 
00194 private:
00195 
00197   DcmInputBufferStream(const DcmInputBufferStream&);
00198 
00200   DcmInputBufferStream& operator=(const DcmInputBufferStream&);
00201 
00203   DcmBufferProducer producer_;
00204 
00205 };
00206 
00207 
00208 #endif
00209 
00210 /*
00211  * CVS/RCS Log:
00212  * $Log: dcistrmb.h,v $
00213  * Revision 1.6  2010-10-14 13:15:41  joergr
00214  * Updated copyright header. Added reference to COPYRIGHT file.
00215  *
00216  * Revision 1.5  2008-06-23 12:09:13  joergr
00217  * Fixed inconsistencies in Doxygen API documentation.
00218  *
00219  * Revision 1.4  2007/02/19 15:45:41  meichel
00220  * Class DcmInputStream and related classes are now safe for use with
00221  *   large files (2 GBytes or more) if supported by compiler and operating system.
00222  *
00223  * Revision 1.3  2005/12/08 16:28:16  meichel
00224  * Changed include path schema for all DCMTK header files
00225  *
00226  * Revision 1.2  2003/06/12 13:34:36  joergr
00227  * Fixed inconsistent API documentation reported by Doxygen.
00228  *
00229  * Revision 1.1  2002/08/27 16:55:33  meichel
00230  * Initial release of new DICOM I/O stream classes that add support for stream
00231  *   compression (deflated little endian explicit VR transfer syntax)
00232  *
00233  *
00234  */


Generated on 6 Jan 2011 for OFFIS DCMTK Version 3.6.0 by Doxygen 1.5.1