00001 #ifndef CLASSLIB_READ_BUFFER_H 00002 # define CLASSLIB_READ_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 00031 class ReadBuffer 00032 { 00033 public: 00034 enum { DEFAULT_SIZE = 4096 }; //< Default buffer size. 00035 ReadBuffer (IOSize bufsize = DEFAULT_SIZE); 00036 ReadBuffer (const ReadBuffer &x); 00037 ReadBuffer &operator= (const ReadBuffer &x); 00038 ~ReadBuffer (void); 00039 00040 IOSize left (void) const; 00041 IOSize capacity (void) const; 00042 00043 unsigned char * pback (void) const; 00044 unsigned char * buffer (void) const; 00045 unsigned char * current (void) const; 00046 unsigned char * end (void) const; 00047 unsigned char * limit (void) const; 00048 00049 void reset (void); 00050 00051 void filled (IOSize n); 00052 void skip (IOSize n); 00053 void get (void *data, IOSize n); 00054 void unget (const void *data, IOSize n); 00055 00056 private: 00057 unsigned char *m_buffer; 00058 unsigned char *m_current; 00059 unsigned char *m_end; 00060 unsigned char *m_limit; 00061 unsigned char *m_pback; 00062 }; 00063 00064 //<<<<<< INLINE PUBLIC FUNCTIONS >>>>>> 00065 //<<<<<< INLINE MEMBER FUNCTIONS >>>>>> 00066 00067 } // namespace lat 00068 #endif // CLASSLIB_READ_BUFFER_H