MythTV master
cleanup.cpp
Go to the documentation of this file.
1// C++ headers
2#include <algorithm>
3#include <list>
4
5#include "cleanup.h"
6
8{
9 private:
10 using clean_list = std::list<CleanupProc *>;
11
12 private:
14
15 public:
16 void addHook(CleanupProc *clean_proc)
17 {
18 m_cleanList.push_back(clean_proc);
19 }
20
21 void removeHook(CleanupProc *clean_proc)
22 {
23 auto p = std::ranges::find(m_cleanList, clean_proc);
24 if (p != m_cleanList.end())
25 {
26 m_cleanList.erase(p);
27 }
28 }
29
30 void cleanup()
31 {
32 for (auto & item : m_cleanList)
33 item->doClean();
34 m_cleanList.clear();
35 }
36};
37
38namespace
39{
41}
42
44{
45 if (!g_cleanup_hooks)
46 {
48 }
49 return g_cleanup_hooks;
50}
51
53{
54 m_imp->addHook(clean_proc);
55}
56
58{
59 m_imp->removeHook(clean_proc);
60}
61
63{
64 m_imp->cleanup();
65 delete g_cleanup_hooks;
66 g_cleanup_hooks = nullptr;
67}
68
70 : m_imp(new CleanupHooksImp())
71{
72}
73
75{
76 delete m_imp;
77}
void addHook(CleanupProc *clean_proc)
Definition: cleanup.cpp:16
void removeHook(CleanupProc *clean_proc)
Definition: cleanup.cpp:21
clean_list m_cleanList
Definition: cleanup.cpp:13
void cleanup()
Definition: cleanup.cpp:30
std::list< CleanupProc * > clean_list
Definition: cleanup.cpp:10
class CleanupHooksImp * m_imp
Definition: cleanup.h:26
void addHook(CleanupProc *clean_proc)
Definition: cleanup.cpp:52
static CleanupHooks * getInstance()
Definition: cleanup.cpp:43
void cleanup()
Definition: cleanup.cpp:62
void removeHook(CleanupProc *clean_proc)
Definition: cleanup.cpp:57
static pid_list_t::iterator find(const PIDInfoMap &map, pid_list_t &list, pid_list_t::iterator begin, pid_list_t::iterator end, bool find_open)
CleanupHooks * g_cleanup_hooks
Definition: cleanup.cpp:40