aboutsummaryrefslogtreecommitdiff
path: root/hobgoblin/src/patio/values.hob
blob: 0e14cf355e6df4b1b5ad48a2d2ab4f9d0fbe15aa (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
32
33
34
35
36
37
38
39
40
41
42
43
import {PatioDataLayout} from ./types;

// == Data ptr values ==

sum PatioDataPtrValue {
    variant PatioDataPtrValueDataElement;
    variant PatioDataPtrValueNull;
}

struct PatioDataPtrValueDataElement {
    field name: String;
}

struct PatioDataPtrValueNull {
}

// == Int values ==

/// An int value that is a constant in the compiled program, but may differ
/// across targets.
sum PatioIntValue {
    variant PatioIntValueByteOffsetOf;
    variant PatioIntValueByteSizeOf;
    variant PatioIntValueLiteral;
}

/// The offset, in bytes, of an offset in a data layout.
struct PatioIntValueByteOffsetOf {
    field layout: PatioDataLayout;
    field elementOffsets: List[Int32];
}

/// The size, in bytes, of a data layout.
struct PatioIntValueByteSizeOf {
    field layout: PatioDataLayout;
}

/// An int value that is the same across all targets.
struct PatioIntValueLiteral {
    field value: Int32;
}