aboutsummaryrefslogtreecommitdiff
path: root/gdb/gdb_obstack.h
diff options
context:
space:
mode:
authorKeith Seitz <keiths@redhat.com>2017-08-17 13:58:01 -0700
committerKeith Seitz <keiths@redhat.com>2017-08-17 13:58:01 -0700
commitb5f28d7abc02ca509e389fa932d725cf111e4b40 (patch)
tree57a0dc0feaff890630a6ba2c9fab811d56b1f9cf /gdb/gdb_obstack.h
parent2a95a158fae932f758d75a1178a40d4cc4804ff0 (diff)
parent1a457753cfad05989574c671a221ffce2d5df703 (diff)
downloadbinutils-users/pmuldoon/c++compile.zip
binutils-users/pmuldoon/c++compile.tar.gz
binutils-users/pmuldoon/c++compile.tar.bz2
Problems: gdb/compile/compile.c gdb/cp-support.c gdb/cp-support.h gdb/gdbtypes.h gdb/language.c gdb/linespec.c
Diffstat (limited to 'gdb/gdb_obstack.h')
-rw-r--r--gdb/gdb_obstack.h15
1 files changed, 15 insertions, 0 deletions
diff --git a/gdb/gdb_obstack.h b/gdb/gdb_obstack.h
index 3f34d96..b241c82 100644
--- a/gdb/gdb_obstack.h
+++ b/gdb/gdb_obstack.h
@@ -63,4 +63,19 @@ extern char *obconcat (struct obstack *obstackp, ...) ATTRIBUTE_SENTINEL;
extern char *obstack_strdup (struct obstack *obstackp, const char *string);
+/* An obstack that frees itself on scope exit. */
+struct auto_obstack : obstack
+{
+ auto_obstack ()
+ { obstack_init (this); }
+
+ ~auto_obstack ()
+ { obstack_free (this, NULL); }
+
+ /* Free all memory in the obstack but leave it valid for further
+ allocation. */
+ void clear ()
+ { obstack_free (this, obstack_base (this)); }
+};
+
#endif