1*c87b03e5Sespie /* A "buffer" utility type. 2*c87b03e5Sespie Copyright (C) 1998, 2000 Free Software Foundation, Inc. 3*c87b03e5Sespie 4*c87b03e5Sespie This file is part of GNU CC. 5*c87b03e5Sespie 6*c87b03e5Sespie GNU CC is free software; you can redistribute it and/or modify 7*c87b03e5Sespie it under the terms of the GNU General Public License as published by 8*c87b03e5Sespie the Free Software Foundation; either version 2, or (at your option) 9*c87b03e5Sespie any later version. 10*c87b03e5Sespie 11*c87b03e5Sespie GNU CC is distributed in the hope that it will be useful, 12*c87b03e5Sespie but WITHOUT ANY WARRANTY; without even the implied warranty of 13*c87b03e5Sespie MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14*c87b03e5Sespie GNU General Public License for more details. 15*c87b03e5Sespie 16*c87b03e5Sespie You should have received a copy of the GNU General Public License 17*c87b03e5Sespie along with GNU CC; see the file COPYING. If not, write to 18*c87b03e5Sespie the Free Software Foundation, 59 Temple Place - Suite 330, 19*c87b03e5Sespie Boston, MA 02111-1307, USA. */ 20*c87b03e5Sespie 21*c87b03e5Sespie /* Written by Per Bothner <bothner@cygnus.com>, July 1998. */ 22*c87b03e5Sespie 23*c87b03e5Sespie /* A simple data structure for an expandable buffer. */ 24*c87b03e5Sespie 25*c87b03e5Sespie struct buffer 26*c87b03e5Sespie { 27*c87b03e5Sespie /* The start of the actual data buffer. */ 28*c87b03e5Sespie unsigned char *data; 29*c87b03e5Sespie 30*c87b03e5Sespie /* Where to write next in the buffer. */ 31*c87b03e5Sespie unsigned char *ptr; 32*c87b03e5Sespie 33*c87b03e5Sespie /* The end of the allocated data buffer. */ 34*c87b03e5Sespie unsigned char *limit; 35*c87b03e5Sespie }; 36*c87b03e5Sespie 37*c87b03e5Sespie #define NULL_BUFFER { (void*) 0, (void*) 0, (void*) 0 } 38*c87b03e5Sespie 39*c87b03e5Sespie #define BUFFER_INIT(BUFP) \ 40*c87b03e5Sespie ((BUFP)->data = NULL, (BUFP)->ptr = NULL, (BUFP)->limit = NULL) 41*c87b03e5Sespie 42*c87b03e5Sespie #define BUFFER_LENGTH(BUFP) ((BUFP)->ptr - (BUFP)->data) 43*c87b03e5Sespie 44*c87b03e5Sespie #define BUFFER_RESET(BUFP) ((BUFP)->ptr = (BUFP)->data) 45*c87b03e5Sespie 46*c87b03e5Sespie extern void buffer_grow PARAMS ((struct buffer*, int)); 47