summaryrefslogtreecommitdiff
path: root/vsproject/tu_test/main.cpp
blob: 1ba0839302fd1205d96d342444b03e62e5b7ce99 (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
44
45
46
47
48
49
50
51
52
53
54
55
56

#include "../../src/include/tagged_union.hpp"

TAGGED_UNION_EX(TestTu, (), Foo, (
	(Foo, struct {
		}),
	(Bar, struct {
		}),
	(Baz, unsigned int)
	),
	(), (), ()
	);
TAGGED_UNION(TestTu2, Foo,
	(Foo, struct {
		}),
	(Bar, struct {
		}),
	(Baz, unsigned int)
	);

int main()
{
	TestTu	tmp;

	tmp = TestTu(123);

	TestTu	tmp2 = TestTu::make_Bar({});

	TU_MATCHA( (tmp), (e),
	(Foo,
		),
	(Bar,
		),
	(Baz,
		)
	)

	TU_MATCHA((tmp,tmp2), (e,e2),
	(Foo,
		),
	(Bar,
		),
	(Baz,
		)
	)

#if 1
    switch(tmp.tag())
    {
    TU_ARM(tmp, Baz, e) {
        } break;
    TU_ARM(tmp, Bar, e) {
        } break;
    }
#endif
}