Commit | Line | Data |
---|---|---|
de719a10 SM |
1 | /* |
2 | * Copyright (c) 2022 EfficiOS, inc. | |
3 | * | |
4 | * SPDX-License-Identifier: MIT | |
5 | */ | |
6 | ||
7 | #ifndef BABELTRACE_CPP_COMMON_GLIB_UP_HPP | |
8 | #define BABELTRACE_CPP_COMMON_GLIB_UP_HPP | |
9 | ||
10 | #include <glib.h> | |
11 | #include <memory> | |
12 | ||
13 | namespace bt2_common { | |
14 | namespace internal { | |
15 | ||
16 | struct GCharDeleter final | |
17 | { | |
18 | void operator()(gchar * const p) noexcept | |
19 | { | |
20 | g_free(p); | |
21 | } | |
22 | }; | |
23 | ||
24 | } /* namespace internal */ | |
25 | ||
26 | using GCharUP = std::unique_ptr<gchar, internal::GCharDeleter>; | |
27 | ||
73f0a623 SM |
28 | namespace internal { |
29 | ||
30 | struct GStringDeleter final | |
31 | { | |
32 | void operator()(GString * const str) | |
33 | { | |
34 | g_string_free(str, TRUE); | |
35 | } | |
36 | }; | |
37 | ||
38 | } /* namespace internal */ | |
39 | ||
40 | using GStringUP = std::unique_ptr<GString, internal::GStringDeleter>; | |
41 | ||
2058f4fb SM |
42 | namespace internal { |
43 | ||
44 | struct GDirDeleter final | |
45 | { | |
46 | void operator()(GDir * const dir) | |
47 | { | |
48 | g_dir_close(dir); | |
49 | } | |
50 | }; | |
51 | ||
52 | } /* namespace internal */ | |
53 | ||
54 | using GDirUP = std::unique_ptr<GDir, internal::GDirDeleter>; | |
55 | ||
2478aa4b SM |
56 | namespace internal { |
57 | ||
58 | struct GMappedFileDeleter final | |
59 | { | |
60 | void operator()(GMappedFile * const f) | |
61 | { | |
62 | g_mapped_file_unref(f); | |
63 | } | |
64 | }; | |
65 | ||
66 | } /* namespace internal */ | |
67 | ||
68 | using GMappedFileUP = std::unique_ptr<GMappedFile, internal::GMappedFileDeleter>; | |
69 | ||
de719a10 SM |
70 | } /* namespace bt2_common */ |
71 | ||
72 | #endif /* BABELTRACE_CPP_COMMON_GLIB_UP_HPP */ |