00001 /*MT* 00002 00003 MediaTomb - http://www.mediatomb.cc/ 00004 00005 stringbuffer.h - this file is part of MediaTomb. 00006 00007 Copyright (C) 2005 Gena Batyan <bgeradz@mediatomb.cc>, 00008 Sergey 'Jin' Bostandzhyan <jin@mediatomb.cc> 00009 00010 Copyright (C) 2006-2010 Gena Batyan <bgeradz@mediatomb.cc>, 00011 Sergey 'Jin' Bostandzhyan <jin@mediatomb.cc>, 00012 Leonhard Wimmer <leo@mediatomb.cc> 00013 00014 MediaTomb is free software; you can redistribute it and/or modify 00015 it under the terms of the GNU General Public License version 2 00016 as published by the Free Software Foundation. 00017 00018 MediaTomb is distributed in the hope that it will be useful, 00019 but WITHOUT ANY WARRANTY; without even the implied warranty of 00020 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00021 GNU General Public License for more details. 00022 00023 You should have received a copy of the GNU General Public License 00024 version 2 along with MediaTomb; if not, write to the Free Software 00025 Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. 00026 00027 $Id: stringbuffer.h 2081 2010-03-23 20:18:00Z lww $ 00028 */ 00029 00031 00032 #ifndef __ZMM_STRINGBUFFER_H__ 00033 #define __ZMM_STRINGBUFFER_H__ 00034 00035 #include "strings.h" 00036 00037 #define DEFAULT_STRINGBUFFER_CAPACITY 16 00038 #define STRINGBUFFER_CAPACITY_INCREMENT (1.25) 00039 00040 namespace zmm 00041 { 00042 00043 class StringBuffer : public Object 00044 { 00045 protected: 00046 char *data; 00047 int capacity; 00048 int len; 00049 public: 00050 StringBuffer(); 00051 StringBuffer(int capacity); 00052 virtual ~StringBuffer(); 00053 00054 StringBuffer &operator<<(String other); 00055 StringBuffer &operator<<(Ref<StringBuffer> other); 00056 StringBuffer &operator<<(const char *str); 00057 StringBuffer &operator<<(signed char *str); 00058 StringBuffer &operator<<(signed char chr); 00059 StringBuffer &operator<<(char chr); 00060 StringBuffer &operator<<(int x); 00061 StringBuffer &operator<<(unsigned int x); 00062 void concat(Ref<StringBuffer> other, int offset = 0); 00063 void concat(char *str, int length); 00064 00065 int length(); 00066 int getCapacity() { return capacity; } 00067 void setLength(int newLength); 00068 char *c_str(int offset = 0); 00069 String toString(); 00070 String toString(int offset); 00071 void clear(); 00072 void ensureCapacity(int neededCapacity); 00073 void setCharAt(int index, char c); 00074 00075 protected: 00076 inline void addCapacity(int increment) { ensureCapacity(len + increment); } 00077 }; 00078 00079 } // namespace 00080 00081 #endif // __ZMM_STRINGBUFFER_H__
1.6.1