loom

Форк
0
/
Variable.cpp 
57 строк · 1.1 Кб
1
/*
2
MIT License
3

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

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

9
#include "simodo/variable/Variable.h"
10

11
#include <cassert>
12

13
namespace simodo::variable
14
{
15
    const Variable & Variable::origin() const
16
    {
17
        if (type() != ValueType::Ref)
18
            return *this;
19

20
        const Variable & o = _value.getRef().origin();
21

22
        assert(o.type() != ValueType::Ref);
23

24
        return o;
25
    }
26

27
    Variable & Variable::origin()
28
    {
29
        if (type() != ValueType::Ref)
30
            return *this;
31

32
        Variable & o = _value.getRef().origin();
33

34
        assert(o.type() != ValueType::Ref);
35

36
        return o;
37
    }
38

39
    Variable Variable::copyVariable() const
40
    {
41
        Specification spec;
42

43
        if (!_spec.isNull())
44
            spec.clone(_spec);
45

46
        return { _name, _value.copy(), _location, spec };
47
    }
48

49
    VariableRef Variable::makeReference() const
50
    {
51
        if (type() == ValueType::Ref)
52
            return std::get<VariableRef>(variant());
53

54
        return VariableRef {*this};
55
    }
56

57
}
58

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

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

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

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