loom

Форк
0
63 строки · 1.7 Кб
1
/*
2
MIT License
3

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

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

9
#include "simodo/interpret/SemanticModuleFactory_interface.h"
10
#include "ScriptAnalyzer.h"
11
#include "ScriptPreview.h"
12

13
// #include "simodo/inout/convert/functions.h"
14
// #include <iostream>
15

16
#include <memory>
17
#include <cassert>
18

19
#ifdef CROSS_WIN
20
// MinGW related workaround
21
#define BOOST_DLL_FORCE_ALIAS_INSTANTIATION
22
#endif
23

24
#include <boost/dll/alias.hpp>
25

26
using namespace simodo;
27

28
class ScriptInterpret : public interpret::SemanticModuleFactory_interface
29
{
30
    interpret::ModuleManagement_interface & _mm;
31

32
public:
33
    ScriptInterpret(interpret::ModuleManagement_interface & module_management)
34
        : _mm(module_management)
35
    {
36
    }
37

38
    virtual version_t version() const override { return lib_version(); }
39

40
    virtual interpret::SemanticModule_interface *
41
                                    create(interpret::Interpret_interface & inter) const override 
42
    {
43
        switch(inter.type())
44
        {
45
        case interpret::InterpretType::Analyzer:
46
            return new interpret::ScriptAnalyzer(_mm, _mm.semantic_data());
47
        case interpret::InterpretType::Preview:
48
            return new interpret::ScriptPreview(_mm);
49
        default:
50
            return nullptr;
51
        }
52
    }
53

54
    // Self factory method
55
    static std::shared_ptr<SemanticModuleFactory_interface> self_create(interpret::ModuleManagement_interface & module_management) {
56
        return std::make_shared<ScriptInterpret>(module_management);
57
        }
58
};
59

60
BOOST_DLL_ALIAS(
61
    ScriptInterpret::self_create,   // <-- this function is exported with...
62
    create_simodo_interpret         // <-- ...this alias name
63
)
64

65

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

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

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

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