-
Notifications
You must be signed in to change notification settings - Fork 0
/
bindings.h
69 lines (52 loc) · 989 Bytes
/
bindings.h
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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
#include <cstdint>
#include <cstdlib>
union COptionU32 {
enum class Tag : uint32_t {
Some,
None,
};
struct Some_Body {
Tag tag;
uint32_t _0;
};
struct {
Tag tag;
};
Some_Body some;
static COptionU32 Some(uint32_t const& a0) {
COptionU32 result;
result.some._0 = a0;
result.tag = Tag::Some;
return result;
}
static COptionU32 None() {
COptionU32 result;
result.tag = Tag::None;
return result;
}
bool IsSome() const {
return tag == Tag::Some;
}
bool IsNone() const {
return tag == Tag::None;
}
};
struct MyStruct {
uint32_t a;
bool b;
};
struct MyTuple {
uint8_t _0;
MyStruct _1;
};
template<typename T>
struct MyGenericStruct {
T vals[16];
};
using Weight = float;
extern "C" {
void double_it(uint32_t *input);
COptionU32 double_it_by_val(COptionU32 input);
void dummy(MyTuple _x, MyGenericStruct<uint8_t> _y, Weight _z);
void maybe_double_it(uint32_t *input);
} // extern "C"