comparison foosdk/sdk/pfc/instance_tracker_legacy.h @ 1:20d02a178406 default tip

*: check in everything else yay
author Paper <paper@tflc.us>
date Mon, 05 Jan 2026 02:15:46 -0500
parents
children
comparison
equal deleted inserted replaced
0:e9bb126753e7 1:20d02a178406
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 }