aboutsummaryrefslogtreecommitdiff
path: root/gdb/location.h
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/location.h')
-rw-r--r--gdb/location.h62
1 files changed, 31 insertions, 31 deletions
diff --git a/gdb/location.h b/gdb/location.h
index e8a3d20..5a5adb5 100644
--- a/gdb/location.h
+++ b/gdb/location.h
@@ -114,11 +114,27 @@ extern char *
extern const char *
event_location_to_string (struct event_location *location);
-/* Create a new linespec location. The return result is malloc'd
- and should be freed with delete_event_location. */
+/* Free an event location and any associated data. */
+
+extern void delete_event_location (struct event_location *location);
+
+/* A deleter for a struct event_location. */
+
+struct event_location_deleter
+{
+ void operator() (event_location *location) const
+ {
+ delete_event_location (location);
+ }
+};
+
+/* A unique pointer for event_location. */
+typedef std::unique_ptr<event_location, event_location_deleter>
+ event_location_up;
+
+/* Create a new linespec location. */
-extern struct event_location *
- new_linespec_location (char **linespec);
+extern event_location_up new_linespec_location (char **linespec);
/* Return the linespec location (a string) of the given event_location
(which must be of type LINESPEC_LOCATION). */
@@ -131,9 +147,9 @@ extern const char *
ADDR_STRING, a string of ADDR_STRING_LEN characters, is
the expression that was parsed to determine the address ADDR. */
-extern struct event_location *
- new_address_location (CORE_ADDR addr, const char *addr_string,
- int addr_string_len);
+extern event_location_up new_address_location (CORE_ADDR addr,
+ const char *addr_string,
+ int addr_string_len);
/* Return the address location (a CORE_ADDR) of the given event_location
(which must be of type ADDRESS_LOCATION). */
@@ -147,11 +163,9 @@ extern CORE_ADDR
extern const char *
get_address_string_location (const struct event_location *location);
-/* Create a new probe location. The return result is malloc'd
- and should be freed with delete_event_location. */
+/* Create a new probe location. */
-extern struct event_location *
- new_probe_location (const char *probe);
+extern event_location_up new_probe_location (const char *probe);
/* Return the probe location (a string) of the given event_location
(which must be of type PROBE_LOCATION). */
@@ -165,12 +179,9 @@ extern void
initialize_explicit_location (struct explicit_location *explicit_loc);
/* Create a new explicit location. If not NULL, EXPLICIT is checked for
- validity. If invalid, an exception is thrown.
+ validity. If invalid, an exception is thrown. */
- The return result is malloc'd and should be freed with
- delete_event_location. */
-
-extern struct event_location *
+extern event_location_up
new_explicit_location (const struct explicit_location *explicit_loc);
/* Return the explicit location of the given event_location
@@ -184,18 +195,9 @@ extern struct explicit_location *
extern const struct explicit_location *
get_explicit_location_const (const struct event_location *location);
-/* Free an event location and any associated data. */
-
-extern void delete_event_location (struct event_location *location);
-
-/* Make a cleanup to free LOCATION. */
-
-extern struct cleanup *
- make_cleanup_delete_event_location (struct event_location *location);
-
/* Return a copy of the given SRC location. */
-extern struct event_location *
+extern event_location_up
copy_event_location (const struct event_location *src);
/* Attempt to convert the input string in *ARGP into an event_location.
@@ -207,21 +209,19 @@ extern struct event_location *
but invalid, input, e.g., if it is called with missing argument parameters
or invalid options.
- The return result must be freed with delete_event_location.
-
This function is intended to be used by CLI commands and will parse
explicit locations in a CLI-centric way. Other interfaces should use
string_to_event_location_basic if they want to maintain support for
legacy specifications of probe, address, and linespec locations. */
-extern struct event_location *
+extern event_location_up
string_to_event_location (char **argp,
const struct language_defn *langauge);
/* Like string_to_event_location, but does not attempt to parse explicit
locations. */
-extern struct event_location *
+extern event_location_up
string_to_event_location_basic (char **argp,
const struct language_defn *language);
@@ -235,7 +235,7 @@ extern struct event_location *
parameters or invalid options. If DONT_THROW is non-zero, this function
will not throw any exceptions. */
-extern struct event_location *
+extern event_location_up
string_to_explicit_location (const char **argp,
const struct language_defn *langauge,
int dont_throw);