#include "deimos/core/api_registry.h" #include "deimos/core/allocator.h" static deimos::AllocatorApi* g_allocator_api; namespace deimos { AllocatorApi* BootstrapAllocatorApi(); struct ApiEntry { const ApiEntry* next{}; IdName name; void* impl; ApiEntry(const IdName& name_, void* impl_) : name{name_}, impl{impl_} {} }; class ApiRegistryImpl: public ApiRegistry { Allocator* m_allocator; public: explicit ApiRegistryImpl(Allocator* allocator) : m_allocator{allocator} {} void Set(const IdName& name, void* impl) final { (void)name; (void)impl; (void)m_allocator; } }; ApiRegistry* InitializeGlobalApiRegistry() { g_allocator_api = BootstrapAllocatorApi(); Allocator* allocator = g_allocator_api->system; ApiRegistry* api_registry = allocator->New(allocator); api_registry->Set(g_allocator_api); return api_registry; } } // namespace deimos