Mercurial > foo_out_sdl
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 } |
