assembly_data/xml/obj/
sink.rs

1pub 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}