CMS 3D CMS Logo

ReadWriteBuffer.h

Go to the documentation of this file.
00001 #ifndef CLASSLIB_READ_WRITE_BUFFER_H
00002 # define CLASSLIB_READ_WRITE_BUFFER_H
00003 
00004 //<<<<<< INCLUDES                                                       >>>>>>
00005 
00006 # include "classlib/sysapi/system.h"
00007 # include "classlib/sysapi/IOTypes.h"
00008 
00009 namespace lat {
00010 //<<<<<< PUBLIC DEFINES                                                 >>>>>>
00011 //<<<<<< PUBLIC CONSTANTS                                               >>>>>>
00012 //<<<<<< PUBLIC TYPES                                                   >>>>>>
00013 //<<<<<< PUBLIC VARIABLES                                               >>>>>>
00014 //<<<<<< PUBLIC FUNCTIONS                                               >>>>>>
00015 //<<<<<< CLASS DECLARATIONS                                             >>>>>>
00016 
00068 class ReadWriteBuffer
00069 {
00070 public:
00071     enum { DEFAULT_SIZE = 4096 };  //< Default buffer size
00072 
00073     ReadWriteBuffer (IOSize busize = DEFAULT_SIZE);
00074     ReadWriteBuffer (const ReadWriteBuffer &x);
00075     ReadWriteBuffer &operator= (const ReadWriteBuffer &x);
00076     ~ReadWriteBuffer (void);
00077 
00078     IOSize              left (void) const;
00079     IOSize              capacity (void) const;
00080     ptrdiff_t           offset (void) const; 
00081     //int /* ptrdiff_t */       offset (void) const; // FIXME!
00082 
00083     unsigned char *     pback (void) const;
00084     unsigned char *     dirty (void) const;
00085     unsigned char *     buffer (void) const;
00086     unsigned char *     current (void) const;
00087     unsigned char *     end (void) const;
00088     unsigned char *     limit (void) const;
00089     unsigned char *     reference (void) const;
00090 
00091     void                reset (void);
00092 
00093     void                bump (IOSize n);
00094     void                put (const void *data, IOSize n);
00095     void                taken (IOSize n);
00096 
00097     void                filled (IOSize n);
00098     void                skip (IOSize n);
00099     void                get (void *data, IOSize n);
00100     void                unget (const void *data, IOSize n);
00101 
00102 private:
00103     unsigned char       *m_buffer;      //< Start of allocated buffer.
00104     unsigned char       *m_current;     //< Current read/write position.
00105     unsigned char       *m_end;         //< End of buffered data.
00106     unsigned char       *m_limit;       //< One past end of allocated buffer.
00107     unsigned char       *m_reference;   //< External file pointer location.
00108     unsigned char       *m_pback;       //< Null or records end of push-back area.
00109     unsigned char       *m_dirty;       //< Null or records start of dirty data.
00110 };
00111 
00112 //<<<<<< INLINE PUBLIC FUNCTIONS                                        >>>>>>
00113 //<<<<<< INLINE MEMBER FUNCTIONS                                        >>>>>>
00114 
00115 } // namespace lat
00116 #endif // CLASSLIB_READ_WRITE_BUFFER_H

Generated on Tue Jun 9 17:38:52 2009 for CMSSW by  doxygen 1.5.4