Rudiments
|
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