blob: 502ecf4a02519489681e8230f74520b5e19a5515 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
#pragma once
#include "common.hpp"
#include "../level-0/concept.hpp"
namespace intellect {
namespace level2 {
// this class is returned by some of the baseref operators.
// its purpose is to evaluate code when it goes out of
// scope, so as to facilitate syntactic behavior.
struct statementref
{
statementref(ref r);
statementref(statementref const &) = delete;
~statementref();
operator ref();
static statementref makebinary(
ref lhs, ref kind, ref rhs,
std::function<ref(ref)> expraction = {},
std::function<void(ref)> stmtaction = {}
);
private:
level0::concept * r;
};
}
}
|