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