#include "Object.h" #include "Archive.h" std::map> ObjectRegistry::_registry; std::atomic ObjectRegistry::_last_index = 0; Object::Object():_instance_id(-1){ } std::shared_ptr Object::create(){ auto result = std::shared_ptr(new Object()); result->Register(); return result; } Object::~Object(){ ObjectRegistry::remove_object(_instance_id); } void Object::Register(){ _instance_id = ObjectRegistry::add_object(shared_from_this()); } void Object::serialize(Archive& archive) { archive << _name; } ObjectRegistry::instance_id_t ObjectRegistry::add_object(std::shared_ptr object) { auto result = _last_index++; _registry[result] = object; return result; } void ObjectRegistry::remove_object(instance_id_t object) { _registry.erase(object); }