loom

Форк
0
/
HardModule.cpp 
41 строка · 1.2 Кб
1
/*
2
MIT License
3

4
Copyright (c) 2021 МГТУ им. Н.Э. Баумана, кафедра ИУ-6, Михаил Фетисов,
5

6
https://bmstu.codes/lsx/simodo/stars
7
*/
8

9
#include "simodo/module/HardModule.h"
10

11
#include <cassert>
12

13
namespace simodo::module
14
{
15
    HardModule::HardModule(std::function<ExtModuleFactory_t> creator, interpret::Interpret_interface * interpret)
16
    : _creator(creator) 
17
    , _interpret(interpret)
18
    {
19
        assert(creator);
20
        _modules.push_back(creator(interpret));
21
        assert(_modules.back());
22
    }
23

24
    version_t HardModule::version() const 
25
    { 
26
        return _modules[0]->version(); 
27
    }
28

29
    variable::Object HardModule::instantiate(std::shared_ptr<Module_interface> /*module_object*/)
30
    {
31
        if (_modules.size() == 1) {
32
            _modules.push_back(std::shared_ptr<Module_interface>());
33
            return _modules[0]->instantiate(_modules[0]);
34
        }
35

36
        size_t last_module_index = _modules.size() - 1;
37
        _modules[last_module_index] = _creator(_interpret);
38
        _modules.push_back(std::shared_ptr<Module_interface>());
39
        return _modules[last_module_index]->instantiate(_modules[last_module_index]);
40
    }
41
}
42

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.