diff options
author | Dimitri van Heesch <dimitri@stack.nl> | 2001-01-07 17:28:47 (GMT) |
---|---|---|
committer | Dimitri van Heesch <dimitri@stack.nl> | 2001-01-07 17:28:47 (GMT) |
commit | 583cc3299ac171f473e4221b0b535ea616e4db03 (patch) | |
tree | e0730802a8bb7eac348a5e39cffb88118aa42020 /src/bufstr.h | |
parent | 0c9bfb1e7fee31b0f35201e255096df4f6451035 (diff) | |
download | Doxygen-583cc3299ac171f473e4221b0b535ea616e4db03.zip Doxygen-583cc3299ac171f473e4221b0b535ea616e4db03.tar.gz Doxygen-583cc3299ac171f473e4221b0b535ea616e4db03.tar.bz2 |
Release-1.2.4-20010107
Diffstat (limited to 'src/bufstr.h')
-rw-r--r-- | src/bufstr.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/src/bufstr.h b/src/bufstr.h new file mode 100644 index 0000000..576dac7 --- /dev/null +++ b/src/bufstr.h @@ -0,0 +1,61 @@ +/****************************************************************************** + * + * + * + * + * Copyright (C) 1997-2001 by Dimitri van Heesch. + * + * Permission to use, copy, modify, and distribute this software and its + * documentation under the terms of the GNU General Public License is hereby + * granted. No representations are made about the suitability of this software + * for any purpose. It is provided "as is" without express or implied warranty. + * See the GNU General Public License for more details. + * + * Documents produced by Doxygen are derivative works derived from the + * input used in their production; they are not affected by this license. + * + */ +#ifndef _BUFSTR_H +#define _BUFSTR_H + +#include "qtbc.h" + +/*! String that can deal more efficiently with large large numbers + * of resizing. + */ +class BufStr : public QCString +{ + public: + BufStr(int size) : QCString(size), offset(0), spareRoom(10240) {} + void addChar(char c) + { + if (offset>=size()) + { + resize(size()+spareRoom); + } + data()[offset++]=c; + } + void addArray(const char *a,int len) + { + if (offset+len>=size()) + { + resize(size()+len+spareRoom); + } + memcpy(data()+offset,a,len); + offset+=len; + } + uint curPos() { return offset; } + void skip(uint s) + { + if (offset+s>=size()) + { + resize(size()+s+spareRoom); + } + offset+=s; + } + private: + uint offset; + const int spareRoom; // 10Kb extra room to avoid frequent resizing +}; + +#endif |