loom

Форк
0
/
Variable.cpp 
53 строки · 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
using 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 = std::get<VariableRef>(_value.variant()).origin();
33

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

36
    return o;
37
}
38

39
Variable Variable::copyVariable() const
40
{
41
    return { _name, _value.copy(), _location, 
42
             _spec.isNull() 
43
                    ? Specification {} 
44
                    : Specification { spec().object()->copy() } };
45
}
46

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

52
    return VariableRef {*this};
53
}
54

55

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

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

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

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