assembly_data/xml/obj/
sink.rs1pub trait ObjectDataSink {
2 type V: ObjectDataSink;
3 type B: BuffDataSink;
4 type D: DestructibleDataSink;
5 type I: InventoryDataSink;
6 type M: MinifigDataSink;
7
8 fn push_attr_v(self, v: u32) -> Self::V;
9 fn start_buff(self) -> Self::B;
10 fn start_dest(self) -> Self::D;
11 fn start_inv(self) -> Self::I;
12 fn start_mf(self) -> Self::M;
13}
14
15pub trait BuffDataSink {
16 type E: ObjectDataSink;
17 fn end_buff(self) -> Self::E;
18}
19
20pub trait DestructibleDataSink {
21 type E: ObjectDataSink;
22 fn end_dest(self) -> Self::E;
23
24 fn push_attr_ac(self, v: u32) -> Self;
25 fn push_attr_am(self, v: u32) -> Self;
26 fn push_attr_d(self, v: bool) -> Self;
27 fn push_attr_hc(self, v: u32) -> Self;
28 fn push_attr_hm(self, v: u32) -> Self;
29 fn push_attr_ic(self, v: u32) -> Self;
30 fn push_attr_im(self, v: u32) -> Self;
31 fn push_attr_imm(self, v: u32) -> Self;
32 fn push_attr_rsh(self, v: u32) -> Self;
33 fn push_attr_rsi(self, v: u32) -> Self;
34}
35
36pub trait InventoryDataSink {
37 type E: ObjectDataSink;
38 type IB: InventoryBagsDataSink;
39 type IG: InventoryGroupsDataSink;
40 type II: InventoryItemsDataSink;
41
42 fn end_inv(self) -> Self::E;
43 fn push_attr_csl(self, csl: u32) -> Self;
44 fn start_bag(self) -> Self::IB;
45 fn start_grps(self) -> Self::IG;
46 fn start_items(self) -> Self::II;
47}
48
49pub trait InventoryBagsDataSink {
50 type E: InventoryDataSink;
51 type B: InventoryBagDataSink;
52 fn end_bag(self) -> Self::E;
53 fn start_b(self) -> Self::B;
54}
55
56pub trait InventoryBagDataSink {
57 type E: InventoryBagsDataSink;
58 fn push_attr_t(self, v: u32) -> Self;
59 fn push_attr_m(self, v: u32) -> Self;
60 fn end_b(self) -> Self::E;
61}
62
63pub trait InventoryGroupsDataSink {
64 type E: InventoryDataSink;
65 type G: InventoryGroupDataSink;
66
67 fn end_grps(self) -> Self::E;
68 fn start_grp(self) -> Self::G;
69}
70
71pub trait InventoryGroupDataSink {
72 type E: InventoryGroupsDataSink;
73
74 fn end_grp(self) -> Self::E;
75 fn push_attr_id(self, v: String) -> Self;
76 fn push_attr_l(self, v: String) -> Self;
77 fn push_attr_n(self, v: String) -> Self;
78 fn push_attr_t(self, v: u32) -> Self;
79 fn push_attr_u(self, v: String) -> Self;
80}
81
82pub trait InventoryItemsDataSink {
83 type E: InventoryDataSink;
84 type I: InventoryItemBagDataSink;
85
86 fn push_attr_nn(self, v: String) -> Self;
87 fn start_in(self) -> Self::I;
88 fn end_items(self) -> Self::E;
89}
90
91pub trait InventoryItemBagDataSink {
92 type E: InventoryItemsDataSink;
93 type I: InventoryItemDataSink;
94
95 fn push_attr_t(self, v: u32) -> Self;
96 fn end_in(self) -> Self::E;
97 fn start_i(self) -> Self::I;
98}
99
100pub trait InventoryItemDataSink {
101 type E: InventoryItemBagDataSink;
102 type X: InventoryItemExtraDataSink;
103
104 fn end_i(self) -> Self::E;
105
106 fn push_attr_b(self, v: bool) -> Self;
107 fn push_attr_c(self, v: u32) -> Self;
108 fn push_attr_eq(self, v: bool) -> Self;
109 fn push_attr_id(self, v: u64) -> Self;
110 fn push_attr_l(self, v: u32) -> Self;
111 fn push_attr_s(self, v: u32) -> Self;
112 fn push_attr_sk(self, v: u32) -> Self;
113
114 fn start_x(self) -> Self::X;
115}
116
117pub trait InventoryItemExtraDataSink {
118 type E: InventoryItemDataSink;
119
120 fn end_x(self) -> Self::E;
121
122 fn push_attr_b(self, v: String) -> Self;
123 fn push_attr_ma(self, v: String) -> Self;
124 fn push_attr_ub(self, v: String) -> Self;
125 fn push_attr_ud(self, v: String) -> Self;
126 fn push_attr_ui(self, v: String) -> Self;
127 fn push_attr_um(self, v: String) -> Self;
128 fn push_attr_un(self, v: String) -> Self;
129 fn push_attr_uo(self, v: String) -> Self;
130 fn push_attr_up(self, v: String) -> Self;
131}
132
133pub trait MinifigDataSink {
134 type E: ObjectDataSink;
135
136 fn end_mf(self) -> Self::E;
137
138 fn push_attr_cd(self, v: u32) -> Self;
139 fn push_attr_es(self, v: u32) -> Self;
140 fn push_attr_ess(self, v: u32) -> Self;
141 fn push_attr_hc(self, v: u32) -> Self;
142 fn push_attr_hd(self, v: u32) -> Self;
143 fn push_attr_hdc(self, v: u32) -> Self;
144 fn push_attr_hs(self, v: u32) -> Self;
145 fn push_attr_l(self, v: u32) -> Self;
146 fn push_attr_lh(self, v: u32) -> Self;
147 fn push_attr_ms(self, v: u32) -> Self;
148 fn push_attr_rh(self, v: u32) -> Self;
149 fn push_attr_t(self, v: u32) -> Self;
150}