Rudiments
/home/dmuse/src/rudiments/include/rudiments/variablebuffer.h
00001 // Copyright (c) 2002 David Muse
00002 // See the COPYING file for more information.
00003 
00004 #ifndef RUDIMENTS_VARIABLEBUFFER_H
00005 #define RUDIMENTS_VARIABLEBUFFER_H
00006 
00007 #include <rudiments/private/variablebufferincludes.h>
00008 
00009 #ifdef RUDIMENTS_NAMESPACE
00010 namespace rudiments {
00011 #endif
00012 
00013 class variablebufferprivate;
00014 
00031 class RUDIMENTS_DLLSPEC variablebuffer {
00032         public:
00033 
00036                 variablebuffer(size_t initialsize, size_t increment);
00037 
00044                 variablebuffer(unsigned char *initialcontents,
00045                                         size_t initialsize, size_t increment);
00046 
00049                 variablebuffer(const variablebuffer &v);
00050 
00053                 variablebuffer  &operator=(const variablebuffer &v);
00054 
00056                 virtual ~variablebuffer();
00057 
00063                 void    setPosition(size_t pos);
00064 
00067                 size_t  getPosition();
00068 
00077                 variablebuffer  *write(const unsigned char *data, size_t size);
00078 
00086                 variablebuffer  *write(const char *string);
00087 
00096                 variablebuffer  *write(const char *string, size_t size);
00097 
00105                 variablebuffer  *write(char character);
00106 
00114                 variablebuffer  *write(int16_t number);
00115 
00123                 variablebuffer  *write(int32_t number);
00124 
00132                 variablebuffer  *write(int64_t number);
00133 
00141                 variablebuffer  *write(unsigned char character);
00142 
00150                 variablebuffer  *write(uint16_t number);
00151 
00159                 variablebuffer  *write(uint32_t number);
00160 
00168                 variablebuffer  *write(uint64_t number);
00169 
00177                 variablebuffer  *write(float number);
00178 
00186                 variablebuffer  *write(double number);
00187 
00194                 variablebuffer  *append(const unsigned char *data, size_t size);
00195 
00201                 variablebuffer  *append(const char *string);
00202 
00209                 variablebuffer  *append(const char *string, size_t size);
00210 
00216                 variablebuffer  *append(char character);
00217 
00223                 variablebuffer  *append(int16_t number);
00224 
00230                 variablebuffer  *append(int32_t number);
00231 
00237                 variablebuffer  *append(int64_t number);
00238 
00244                 variablebuffer  *append(unsigned char character);
00245 
00251                 variablebuffer  *append(uint16_t number);
00252 
00258                 variablebuffer  *append(uint32_t number);
00259 
00265                 variablebuffer  *append(uint64_t number);
00266 
00272                 variablebuffer  *append(float number);
00273 
00279                 variablebuffer  *append(double number);
00280 
00284                 ssize_t read(unsigned char *data, size_t size);
00285 
00287                 void    clear();
00288 
00290                 const unsigned char     *getBuffer();
00291 
00294                 size_t          getSize();
00295 
00298                 size_t          getEnd();
00299 
00303                 size_t          getActualSize();
00304 
00312                 unsigned char   *detachBuffer();
00313 
00314         #include <rudiments/private/variablebuffer.h>
00315 };
00316 
00317 #ifdef RUDIMENTS_NAMESPACE
00318 }
00319 #endif
00320 
00321 #endif