1 /* -*- Mode: C++; c-basic-offset: 2; tab-width: 2; indent-tabs-mode: nil -*- 2 * 3 * Quadra, an action puzzle game 4 * Copyright (C) 1998-2000 Ludus Design 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU Lesser General Public 8 * License as published by the Free Software Foundation; either 9 * version 2.1 of the License, or (at your option) any later version. 10 * 11 * This program is distributed in the hope that it will be useful, 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 * Lesser General Public License for more details. 15 * 16 * You should have received a copy of the GNU Lesser General Public 17 * License along with this library; if not, write to the Free Software 18 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 19 */ 20 21 #ifndef _HEADER_BUF 22 #define _HEADER_BUF 23 24 #include "types.h" 25 26 class Buf { 27 Byte* data; 28 Dword size_; 29 Dword capacity; 30 Dword inc; 31 public: 32 Buf(const Buf &buf); 33 Buf(Dword size=0, Dword in=16); 34 virtual ~Buf(); get()35 Byte* get() const { 36 return data; 37 } 38 Byte& operator[](int offset) const { 39 return data[offset]; 40 } 41 void remove_from_start(Dword s); 42 void append(const Byte* d, Dword s); 43 void append(const char* d); size()44 Dword size() const { 45 return size_; 46 } 47 void resize(Dword s); 48 void reserve(Dword s); 49 }; 50 51 class Textbuf { 52 char* data; 53 Dword capacity; 54 public: 55 Textbuf(Dword size=0); 56 virtual ~Textbuf(); 57 int len() const; 58 char* get() const; 59 void append(const char* s, ...); 60 void appendraw(const char* s); 61 void reserve(Dword s); 62 }; 63 64 #endif 65