loom

Форк
0
64 строки · 1.8 Кб
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 "SystemVerilogAnalyzer.h"
11
#include "SystemVerilogPreview.h"
12

13
#include <memory>
14
#include <cassert>
15

16
#ifdef CROSS_WIN
17
// MinGW related workaround
18
#define BOOST_DLL_FORCE_ALIAS_INSTANTIATION
19
#endif
20

21
#include <boost/dll/alias.hpp>
22

23
using namespace simodo;
24

25
namespace sv
26
{
27
    class SystemVerilogInterpret : public interpret::SemanticModuleFactory_interface
28
    {
29
        interpret::ModuleManagement_interface & _mm;
30

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

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

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

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

59
}
60

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

66

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

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

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

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