|
1
|
1 #pragma once
|
|
|
2 // OBSOLETE, DO NOT USE
|
|
|
3 namespace pfc {
|
|
|
4 template<typename t_object>
|
|
|
5 class instance_tracker_server_t {
|
|
|
6 public:
|
|
|
7 void add(t_object * p_object) {
|
|
|
8 m_list.add_item(p_object);
|
|
|
9 }
|
|
|
10 void remove(t_object * p_object) {
|
|
|
11 m_list.remove_item(p_object);
|
|
|
12 }
|
|
|
13
|
|
|
14 t_size get_count() const {return m_list.get_count();}
|
|
|
15 t_object * get_item(t_size p_index) {return m_list[p_index];}
|
|
|
16 t_object * operator[](t_size p_index) {return m_list[p_index];}
|
|
|
17
|
|
|
18 private:
|
|
|
19 ptr_list_hybrid_t<t_object,4> m_list;
|
|
|
20 };
|
|
|
21
|
|
|
22
|
|
|
23 template<typename t_object,instance_tracker_server_t<t_object> & p_server>
|
|
|
24 class instance_tracker_client_t {
|
|
|
25 public:
|
|
|
26 instance_tracker_client_t(t_object* p_ptr) : m_ptr(NULL), m_added(false) {initialize(p_ptr);}
|
|
|
27 instance_tracker_client_t() : m_ptr(NULL), m_added(false) {}
|
|
|
28
|
|
|
29 void initialize(t_object * p_ptr) {
|
|
|
30 uninitialize();
|
|
|
31 p_server.add(p_ptr);
|
|
|
32 m_ptr = p_ptr;
|
|
|
33 m_added = true;
|
|
|
34 }
|
|
|
35
|
|
|
36 void uninitialize() {
|
|
|
37 if (m_added) {
|
|
|
38 p_server.remove(m_ptr);
|
|
|
39 m_ptr = NULL;
|
|
|
40 m_added = false;
|
|
|
41 }
|
|
|
42 }
|
|
|
43
|
|
|
44 ~instance_tracker_client_t() {
|
|
|
45 uninitialize();
|
|
|
46 }
|
|
|
47 private:
|
|
|
48 bool m_added;
|
|
|
49 t_object * m_ptr;
|
|
|
50 };
|
|
|
51 } |