diff options
Diffstat (limited to 'deimos/core/api_registry.cpp')
-rw-r--r-- | deimos/core/api_registry.cpp | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/deimos/core/api_registry.cpp b/deimos/core/api_registry.cpp new file mode 100644 index 0000000..aa993e0 --- /dev/null +++ b/deimos/core/api_registry.cpp @@ -0,0 +1,47 @@ +#include "deimos/core/api_registry.h"
+#include "deimos/core/allocator.h"
+#include "deimos/core/hash.h"
+
+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
+{
+ IAllocator* m_allocator;
+
+public:
+ explicit ApiRegistryImpl(IAllocator* allocator) :
+ m_allocator{allocator}
+ {}
+
+ void Set(const IdName& name, void* impl) final
+ {
+ }
+};
+
+ApiRegistry* InitializeGlobalApiRegistry()
+{
+ AllocatorApi* allocator_api = BootstrapAllocatorApi();
+ IAllocator* allocator = allocator_api->system;
+ ApiRegistry* api_registry = allocator->New<ApiRegistryImpl>();
+
+ api_registry->Set(allocator_api);
+
+ return api_registry;
+}
+
+} // namespace deimos
+
|