diff 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
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/foosdk/sdk/pfc/instance_tracker_legacy.h	Mon Jan 05 02:15:46 2026 -0500
@@ -0,0 +1,51 @@
+#pragma once
+// OBSOLETE, DO NOT USE
+namespace pfc {
+	template<typename t_object>
+	class instance_tracker_server_t {
+	public:
+		void add(t_object * p_object) {
+			m_list.add_item(p_object);
+		}
+		void remove(t_object * p_object) {
+			m_list.remove_item(p_object);
+		}
+
+		t_size get_count() const {return m_list.get_count();}
+		t_object * get_item(t_size p_index) {return m_list[p_index];}
+		t_object * operator[](t_size p_index) {return m_list[p_index];}
+
+	private:
+		ptr_list_hybrid_t<t_object,4> m_list;
+	};
+
+
+	template<typename t_object,instance_tracker_server_t<t_object> & p_server>
+	class instance_tracker_client_t {
+	public:
+		instance_tracker_client_t(t_object* p_ptr) : m_ptr(NULL), m_added(false) {initialize(p_ptr);}
+		instance_tracker_client_t() : m_ptr(NULL), m_added(false) {}
+
+		void initialize(t_object * p_ptr) {
+			uninitialize();
+			p_server.add(p_ptr);
+			m_ptr = p_ptr;
+			m_added = true;
+		}
+
+		void uninitialize() {
+			if (m_added) {
+				p_server.remove(m_ptr);
+				m_ptr = NULL;
+				m_added = false;
+			}
+		}
+
+		~instance_tracker_client_t() {
+			uninitialize();
+		}
+	private:
+		bool m_added;
+		t_object * m_ptr;
+	};
+}
\ No newline at end of file