1 module dpp2.sea.type;
2 
3 
4 import dpp.from;
5 
6 
7 alias Type = from!"dpp2.sum".Sum!(
8     Void, NullPointerT,
9     Bool,
10     UnsignedChar, SignedChar, Char, Wchar, Char16, Char32,
11     Short, UnsignedShort, Int, UnsignedInt, Long, UnsignedLong, LongLong, UnsignedLongLong, Int128, UnsignedInt128,
12     Half, Float, Double, LongDouble,
13     Pointer,
14     ConstantArray,
15     UserDefinedType,
16 );
17 
18 
19 struct Void {}
20 struct NullPointerT {}
21 
22 struct Bool {}
23 
24 struct UnsignedChar {}
25 struct SignedChar {}
26 struct Char {}
27 struct Wchar {}
28 struct Char16 {}
29 struct Char32 {}
30 
31 struct Short {}
32 struct UnsignedShort {}
33 struct Int {}
34 struct UnsignedInt {}
35 struct Long {}
36 struct UnsignedLong {}
37 struct LongLong {}
38 struct UnsignedLongLong {}
39 struct Int128 {}
40 struct UnsignedInt128 {}
41 
42 struct Half {}
43 struct Float {}
44 struct Double {}
45 struct LongDouble {}
46 
47 
48 struct Pointer {
49     Type* pointeeType;
50 }
51 
52 
53 struct ConstantArray {
54     Type* elementType;
55     int length;
56 }
57 
58 struct UserDefinedType {
59     string spelling;
60 }