dyn-string.h revision 130803
1130803Smarcel/* An abstract string datatype. 2130803Smarcel Copyright (C) 1998, 1999, 2000, 2002, 2004 Free Software Foundation, Inc. 3130803Smarcel Contributed by Mark Mitchell (mark@markmitchell.com). 4130803Smarcel 5130803SmarcelThis file is part of GCC. 6130803Smarcel 7130803SmarcelGCC is free software; you can redistribute it and/or modify 8130803Smarcelit under the terms of the GNU General Public License as published by 9130803Smarcelthe Free Software Foundation; either version 2, or (at your option) 10130803Smarcelany later version. 11130803Smarcel 12130803SmarcelGCC is distributed in the hope that it will be useful, 13130803Smarcelbut WITHOUT ANY WARRANTY; without even the implied warranty of 14130803SmarcelMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15130803SmarcelGNU General Public License for more details. 16130803Smarcel 17130803SmarcelYou should have received a copy of the GNU General Public License 18130803Smarcelalong with GCC; see the file COPYING. If not, write to 19130803Smarcelthe Free Software Foundation, 59 Temple Place - Suite 330, 20130803SmarcelBoston, MA 02111-1307, USA. */ 21130803Smarcel 22130803Smarcel 23130803Smarceltypedef struct dyn_string 24130803Smarcel{ 25130803Smarcel int allocated; /* The amount of space allocated for the string. */ 26130803Smarcel int length; /* The actual length of the string. */ 27130803Smarcel char *s; /* The string itself, NUL-terminated. */ 28130803Smarcel}* dyn_string_t; 29130803Smarcel 30130803Smarcel/* The length STR, in bytes, not including the terminating NUL. */ 31130803Smarcel#define dyn_string_length(STR) \ 32130803Smarcel ((STR)->length) 33130803Smarcel 34130803Smarcel/* The NTBS in which the contents of STR are stored. */ 35130803Smarcel#define dyn_string_buf(STR) \ 36130803Smarcel ((STR)->s) 37130803Smarcel 38130803Smarcel/* Compare DS1 to DS2 with strcmp. */ 39130803Smarcel#define dyn_string_compare(DS1, DS2) \ 40130803Smarcel (strcmp ((DS1)->s, (DS2)->s)) 41130803Smarcel 42130803Smarcel 43130803Smarcelextern int dyn_string_init PARAMS ((struct dyn_string *, int)); 44130803Smarcelextern dyn_string_t dyn_string_new PARAMS ((int)); 45130803Smarcelextern void dyn_string_delete PARAMS ((dyn_string_t)); 46130803Smarcelextern char *dyn_string_release PARAMS ((dyn_string_t)); 47130803Smarcelextern dyn_string_t dyn_string_resize PARAMS ((dyn_string_t, int)); 48130803Smarcelextern void dyn_string_clear PARAMS ((dyn_string_t)); 49130803Smarcelextern int dyn_string_copy PARAMS ((dyn_string_t, dyn_string_t)); 50130803Smarcelextern int dyn_string_copy_cstr PARAMS ((dyn_string_t, const char *)); 51130803Smarcelextern int dyn_string_prepend PARAMS ((dyn_string_t, dyn_string_t)); 52130803Smarcelextern int dyn_string_prepend_cstr PARAMS ((dyn_string_t, const char *)); 53130803Smarcelextern int dyn_string_insert PARAMS ((dyn_string_t, int, 54130803Smarcel dyn_string_t)); 55130803Smarcelextern int dyn_string_insert_cstr PARAMS ((dyn_string_t, int, 56130803Smarcel const char *)); 57130803Smarcelextern int dyn_string_insert_char PARAMS ((dyn_string_t, int, int)); 58130803Smarcelextern int dyn_string_append PARAMS ((dyn_string_t, dyn_string_t)); 59130803Smarcelextern int dyn_string_append_cstr PARAMS ((dyn_string_t, const char *)); 60130803Smarcelextern int dyn_string_append_char PARAMS ((dyn_string_t, int)); 61130803Smarcelextern int dyn_string_substring PARAMS ((dyn_string_t, 62130803Smarcel dyn_string_t, int, int)); 63130803Smarcelextern int dyn_string_eq PARAMS ((dyn_string_t, dyn_string_t)); 64