instruction.hpp 706 Bytes
Newer Older
Paul's avatar
Paul committed
1
#ifndef RTG_GUARD_RTGLIB_INSTRUCTION_HPP
Paul's avatar
Paul committed
2
#define RTG_GUARD_RTGLIB_INSTRUCTION_HPP
Paul's avatar
Paul committed
3

Paul's avatar
Paul committed
4
#include <rtg/literal.hpp>
Paul's avatar
Paul committed
5
#include <rtg/shape.hpp>
Paul's avatar
Paul committed
6
#include <rtg/builtin.hpp>
Paul's avatar
Paul committed
7
#include <rtg/instruction_ref.hpp>
Paul's avatar
Paul committed
8
#include <string>
Paul's avatar
Paul committed
9
10
11
12
13

namespace rtg {

struct instruction
{
Paul's avatar
Paul committed
14
15
    instruction() {}

Paul's avatar
Paul committed
16
    instruction(operation o, shape r, std::vector<instruction_ref> args)
Paul's avatar
Paul committed
17
        : op(std::move(o)), result(std::move(r)), arguments(std::move(args))
Paul's avatar
Paul committed
18
19
    {
    }
Paul's avatar
Paul committed
20

Paul's avatar
Paul committed
21
    instruction(literal l) : op(builtin::literal{}), result(l.get_shape()), lit(std::move(l)) {}
Paul's avatar
Paul committed
22

Paul's avatar
Paul committed
23
    operation op;
Paul's avatar
Paul committed
24
    shape result;
Paul's avatar
Paul committed
25
    std::vector<instruction_ref> output;
Paul's avatar
Paul committed
26
    std::vector<instruction_ref> arguments;
Paul's avatar
Paul committed
27
    literal lit;
Paul's avatar
Paul committed
28
29
};

Paul's avatar
Paul committed
30
} // namespace rtg
Paul's avatar
Paul committed
31
32

#endif