summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--deimos/core/allocator.cpp9
-rw-r--r--deimos/core/allocator.h9
-rw-r--r--deimos/core/api_registry.cpp2
3 files changed, 19 insertions, 1 deletions
diff --git a/deimos/core/allocator.cpp b/deimos/core/allocator.cpp
index f7217c8..642afb8 100644
--- a/deimos/core/allocator.cpp
+++ b/deimos/core/allocator.cpp
@@ -43,6 +43,15 @@ public:
{
system = &m_system;
}
+
+ Allocator* CreateChild(Allocator* parent, const char* /* description */) override
+ {
+ return parent;
+ }
+
+ void DestroyChild(Allocator*) override
+ {
+ }
};
AllocatorApi* BootstrapAllocatorApi()
diff --git a/deimos/core/allocator.h b/deimos/core/allocator.h
index b156620..911f8e7 100644
--- a/deimos/core/allocator.h
+++ b/deimos/core/allocator.h
@@ -128,9 +128,18 @@ public:
class AllocatorApi
{
public:
+ AllocatorApi() = default;
+
+ deimos_NO_COPY_MOVE(AllocatorApi);
+
+ virtual ~AllocatorApi() = default;
+
static constexpr IdName kApiName{"deimos::AllocatorApi"};
Allocator* system{};
+
+ virtual Allocator* CreateChild(Allocator* parent, const char* description) = 0;
+ virtual void DestroyChild(Allocator*) = 0;
};
} // namespace deimos
diff --git a/deimos/core/api_registry.cpp b/deimos/core/api_registry.cpp
index a070473..873d72d 100644
--- a/deimos/core/api_registry.cpp
+++ b/deimos/core/api_registry.cpp
@@ -40,7 +40,7 @@ ApiRegistry* InitializeGlobalApiRegistry()
{
g_allocator_api = BootstrapAllocatorApi();
- Allocator* allocator = g_allocator_api->system;
+ Allocator* allocator = g_allocator_api->CreateChild(g_allocator_api->system, "API Registry");
ApiRegistry* api_registry = allocator->New<ApiRegistryImpl>(allocator);
api_registry->Set(g_allocator_api);