Use unique_xmalloc_ptr in remote.c
[deliverable/binutils-gdb.git] / gdb / common / cleanups.h
CommitLineData
c27f5738 1/* Cleanups.
42a4f53d 2 Copyright (C) 1986-2019 Free Software Foundation, Inc.
c27f5738
DE
3
4 This file is part of GDB.
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 3 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program. If not, see <http://www.gnu.org/licenses/>. */
18
1a5c2598
TT
19#ifndef COMMON_CLEANUPS_H
20#define COMMON_CLEANUPS_H
c27f5738 21
b10faa68
DE
22/* Outside of cleanups.c, this is an opaque type. */
23struct cleanup;
c27f5738
DE
24
25/* NOTE: cagney/2000-03-04: This typedef is strictly for the
26 make_cleanup function declarations below. Do not use this typedef
27 as a cast when passing functions into the make_cleanup() code.
28 Instead either use a bounce function or add a wrapper function.
29 Calling a f(char*) function with f(void*) is non-portable. */
30typedef void (make_cleanup_ftype) (void *);
31
b10faa68
DE
32/* Function type for the dtor in make_cleanup_dtor. */
33typedef void (make_cleanup_dtor_ftype) (void *);
34
c27f5738
DE
35/* WARNING: The result of the "make cleanup" routines is not the intuitive
36 choice of being a handle on the just-created cleanup. Instead it is an
37 opaque handle of the cleanup mechanism and represents all cleanups created
b10faa68
DE
38 from that point onwards.
39 The result is guaranteed to be non-NULL though. */
c27f5738
DE
40
41extern struct cleanup *make_cleanup (make_cleanup_ftype *, void *);
42
43extern struct cleanup *make_cleanup_dtor (make_cleanup_ftype *, void *,
b10faa68 44 make_cleanup_dtor_ftype *);
c27f5738
DE
45
46extern struct cleanup *make_final_cleanup (make_cleanup_ftype *, void *);
47
c27f5738
DE
48/* A special value to pass to do_cleanups and do_final_cleanups
49 to tell them to do all cleanups. */
b10faa68 50extern struct cleanup *all_cleanups (void);
c27f5738
DE
51
52extern void do_cleanups (struct cleanup *);
53extern void do_final_cleanups (struct cleanup *);
54
55extern void discard_cleanups (struct cleanup *);
56extern void discard_final_cleanups (struct cleanup *);
c27f5738
DE
57
58extern struct cleanup *save_cleanups (void);
59extern struct cleanup *save_final_cleanups (void);
c27f5738
DE
60
61extern void restore_cleanups (struct cleanup *);
62extern void restore_final_cleanups (struct cleanup *);
c27f5738
DE
63
64/* A no-op cleanup.
65 This is useful when you want to establish a known reference point
66 to pass to do_cleanups. */
67extern void null_cleanup (void *);
68
1a5c2598 69#endif /* COMMON_CLEANUPS_H */
This page took 0.470374 seconds and 4 git commands to generate.