summaryrefslogtreecommitdiffstats
path: root/contrib/gcc/dyn-string.h
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2002-05-09 20:02:13 +0000
committerobrien <obrien@FreeBSD.org>2002-05-09 20:02:13 +0000
commitc8f5fc7032940ad6633f932ac40cade82ec4d0cc (patch)
tree29a0f0a6c79a69ecc64f612947a0fe5904311713 /contrib/gcc/dyn-string.h
parentc9ab9ae440a8066b2c2b85b157b1fdadcf09916a (diff)
downloadFreeBSD-src-c8f5fc7032940ad6633f932ac40cade82ec4d0cc.zip
FreeBSD-src-c8f5fc7032940ad6633f932ac40cade82ec4d0cc.tar.gz
Gcc 3.1.0 pre-release from the FSF anoncvs repo on 9-May-2002 15:57:15 EDT.
Diffstat (limited to 'contrib/gcc/dyn-string.h')
-rw-r--r--contrib/gcc/dyn-string.h92
1 files changed, 76 insertions, 16 deletions
diff --git a/contrib/gcc/dyn-string.h b/contrib/gcc/dyn-string.h
index 9f93308..2a771c7 100644
--- a/contrib/gcc/dyn-string.h
+++ b/contrib/gcc/dyn-string.h
@@ -1,32 +1,92 @@
/* An abstract string datatype.
- Copyright (C) 1998, 1999 Free Software Foundation, Inc.
+ Copyright (C) 1998, 1999, 2000, 2002 Free Software Foundation, Inc.
Contributed by Mark Mitchell (mark@markmitchell.com).
-This file is part of GNU CC.
+This file is part of GCC.
-GNU CC is free software; you can redistribute it and/or modify it
-under the terms of the GNU General Public License as published by
+GCC is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
-GNU CC is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
+GCC is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
You should have received a copy of the GNU General Public License
-along with GNU CC; see the file COPYING. If not, write to
+along with GCC; see the file COPYING. If not, write to
the Free Software Foundation, 59 Temple Place - Suite 330,
Boston, MA 02111-1307, USA. */
+
typedef struct dyn_string
{
- int allocated; /* The amount of space allocated for the string. */
- int length; /* The actual length of the string. */
- char *s; /* The string itself, NUL-terminated. */
+ int allocated; /* The amount of space allocated for the string. */
+ int length; /* The actual length of the string. */
+ char *s; /* The string itself, NUL-terminated. */
}* dyn_string_t;
-extern dyn_string_t dyn_string_new PROTO((int));
-extern void dyn_string_delete PROTO((dyn_string_t));
-extern dyn_string_t dyn_string_append PROTO((dyn_string_t, const char*));
-extern dyn_string_t dyn_string_resize PROTO((dyn_string_t, int));
+/* The length STR, in bytes, not including the terminating NUL. */
+#define dyn_string_length(STR) \
+ ((STR)->length)
+
+/* The NTBS in which the contents of STR are stored. */
+#define dyn_string_buf(STR) \
+ ((STR)->s)
+
+/* Compare DS1 to DS2 with strcmp. */
+#define dyn_string_compare(DS1, DS2) \
+ (strcmp ((DS1)->s, (DS2)->s))
+
+
+/* dyn_string functions are used in the demangling implementation
+ included in the G++ runtime library. To prevent collisions with
+ names in user programs, the functions that are used in the
+ demangler are given implementation-reserved names. */
+
+#if defined(IN_LIBGCC2) || defined(IN_GLIBCPP_V3)
+
+#define dyn_string_init __cxa_dyn_string_init
+#define dyn_string_new __cxa_dyn_string_new
+#define dyn_string_delete __cxa_dyn_string_delete
+#define dyn_string_release __cxa_dyn_string_release
+#define dyn_string_resize __cxa_dyn_string_resize
+#define dyn_string_clear __cxa_dyn_string_clear
+#define dyn_string_copy __cxa_dyn_string_copy
+#define dyn_string_copy_cstr __cxa_dyn_string_copy_cstr
+#define dyn_string_prepend __cxa_dyn_string_prepend
+#define dyn_string_prepend_cstr __cxa_dyn_string_prepend_cstr
+#define dyn_string_insert __cxa_dyn_string_insert
+#define dyn_string_insert_cstr __cxa_dyn_string_insert_cstr
+#define dyn_string_insert_char __cxa_dyn_string_insert_char
+#define dyn_string_append __cxa_dyn_string_append
+#define dyn_string_append_cstr __cxa_dyn_string_append_cstr
+#define dyn_string_append_char __cxa_dyn_string_append_char
+#define dyn_string_substring __cxa_dyn_string_substring
+#define dyn_string_eq __cxa_dyn_string_eq
+
+#endif /* IN_LIBGCC2 || IN_GLIBCPP_V3 */
+
+
+extern int dyn_string_init PARAMS ((struct dyn_string *, int));
+extern dyn_string_t dyn_string_new PARAMS ((int));
+extern void dyn_string_delete PARAMS ((dyn_string_t));
+extern char *dyn_string_release PARAMS ((dyn_string_t));
+extern dyn_string_t dyn_string_resize PARAMS ((dyn_string_t, int));
+extern void dyn_string_clear PARAMS ((dyn_string_t));
+extern int dyn_string_copy PARAMS ((dyn_string_t, dyn_string_t));
+extern int dyn_string_copy_cstr PARAMS ((dyn_string_t, const char *));
+extern int dyn_string_prepend PARAMS ((dyn_string_t, dyn_string_t));
+extern int dyn_string_prepend_cstr PARAMS ((dyn_string_t, const char *));
+extern int dyn_string_insert PARAMS ((dyn_string_t, int,
+ dyn_string_t));
+extern int dyn_string_insert_cstr PARAMS ((dyn_string_t, int,
+ const char *));
+extern int dyn_string_insert_char PARAMS ((dyn_string_t, int, int));
+extern int dyn_string_append PARAMS ((dyn_string_t, dyn_string_t));
+extern int dyn_string_append_cstr PARAMS ((dyn_string_t, const char *));
+extern int dyn_string_append_char PARAMS ((dyn_string_t, int));
+extern int dyn_string_substring PARAMS ((dyn_string_t,
+ dyn_string_t, int, int));
+extern int dyn_string_eq PARAMS ((dyn_string_t, dyn_string_t));
OpenPOWER on IntegriCloud