aboutsummaryrefslogtreecommitdiffstats
path: root/src/ObjectManager.cpp
blob: 19f862d4b223383ee157013b6632f513e7176e74 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
#include "ObjectManager.h"

namespace nt
{
    void ObjectManager::Register(std::vector<std::string> path,
                                 std::unique_ptr<IObject> object,
                                 std::unique_ptr<object_type> type)
    {
        auto head = std::make_unique<registry_head>();
        head->reference_count = 0;
        head->handle_count = 0;
        head->path = std::move(path);
        head->type = std::move(type);

        auto entry = std::make_unique<registry>();
        entry->head = std::move(head);
        entry->object = std::move(object);
        entry->next = std::move(entries);
        entries = std::move(entry);
    }

    ObjectManager::registry* ObjectManager::Find(const std::vector<std::string> object_path)
    {
        registry* current = entries.get();
        while (current != nullptr)
        {
            if (current->head->path == object_path)
                return current;
            current = current->next.get();
        }
        return nullptr;
    }
}