lib: added some useful methods in counter
[nit.git] / c_src / serialization_phase.sep.1.c
1 #include "serialization_phase.sep.0.h"
2 /* method serialization_phase#ToolContext#serialization_phase for (self: ToolContext): Phase */
3 val* serialization_phase__ToolContext__serialization_phase(val* self) {
4 val* var /* : Phase */;
5 val* var1 /* : Phase */;
6 var1 = self->attrs[COLOR_serialization_phase__ToolContext___64dserialization_phase].val; /* @serialization_phase on <self:ToolContext> */
7 if (var1 == NULL) {
8 fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @serialization_phase");
9 fprintf(stderr, " (%s:%d)\n", "src/serialization_phase.nit", 26);
10 show_backtrace(1);
11 }
12 var = var1;
13 RET_LABEL:;
14 return var;
15 }
16 /* method serialization_phase#ToolContext#serialization_phase for (self: Object): Phase */
17 val* VIRTUAL_serialization_phase__ToolContext__serialization_phase(val* self) {
18 val* var /* : Phase */;
19 val* var1 /* : Phase */;
20 var1 = serialization_phase__ToolContext__serialization_phase(self);
21 var = var1;
22 RET_LABEL:;
23 return var;
24 }
25 /* method serialization_phase#ToolContext#serialization_phase= for (self: ToolContext, Phase) */
26 void serialization_phase__ToolContext__serialization_phase_61d(val* self, val* p0) {
27 self->attrs[COLOR_serialization_phase__ToolContext___64dserialization_phase].val = p0; /* @serialization_phase on <self:ToolContext> */
28 RET_LABEL:;
29 }
30 /* method serialization_phase#ToolContext#serialization_phase= for (self: Object, Phase) */
31 void VIRTUAL_serialization_phase__ToolContext__serialization_phase_61d(val* self, val* p0) {
32 serialization_phase__ToolContext__serialization_phase_61d(self, p0);
33 RET_LABEL:;
34 }
35 /* method serialization_phase#SerializationPhase#process_annotated_node for (self: SerializationPhase, ANode, AAnnotation) */
36 void serialization_phase__SerializationPhase__process_annotated_node(val* self, val* p0, val* p1) {
37 val* var_nclassdef /* var nclassdef: ANode */;
38 val* var_nat /* var nat: AAnnotation */;
39 val* var /* : AAtid */;
40 val* var1 /* : Token */;
41 val* var2 /* : String */;
42 static val* varonce;
43 val* var3 /* : String */;
44 char* var4 /* : NativeString */;
45 long var5 /* : Int */;
46 val* var6 /* : String */;
47 short int var7 /* : Bool */;
48 short int var8 /* : Bool */;
49 int cltype;
50 int idtype;
51 short int var9 /* : Bool */;
52 val* var10 /* : ToolContext */;
53 val* var11 /* : Location */;
54 static val* varonce12;
55 val* var13 /* : String */;
56 char* var14 /* : NativeString */;
57 long var15 /* : Int */;
58 val* var16 /* : String */;
59 var_nclassdef = p0;
60 var_nat = p1;
61 var = ((val* (*)(val*))(var_nat->class->vft[COLOR_parser_nodes__AAnnotation__n_atid]))(var_nat) /* n_atid on <var_nat:AAnnotation>*/;
62 var1 = ((val* (*)(val*))(var->class->vft[COLOR_parser_nodes__AAtid__n_id]))(var) /* n_id on <var:AAtid>*/;
63 var2 = ((val* (*)(val*))(var1->class->vft[COLOR_parser_nodes__Token__text]))(var1) /* text on <var1:Token>*/;
64 if (varonce) {
65 var3 = varonce;
66 } else {
67 var4 = "auto_serializable";
68 var5 = 17;
69 var6 = string__NativeString__to_s_with_length(var4, var5);
70 var3 = var6;
71 varonce = var3;
72 }
73 var7 = ((short int (*)(val*, val*))(var2->class->vft[COLOR_kernel__Object___33d_61d]))(var2, var3) /* != on <var2:String>*/;
74 if (var7){
75 goto RET_LABEL;
76 } else {
77 }
78 /* <var_nclassdef:ANode> isa AStdClassdef */
79 cltype = type_parser_nodes__AStdClassdef.color;
80 idtype = type_parser_nodes__AStdClassdef.id;
81 if(cltype >= var_nclassdef->type->table_size) {
82 var8 = 0;
83 } else {
84 var8 = var_nclassdef->type->type_table[cltype] == idtype;
85 }
86 var9 = !var8;
87 if (var9){
88 var10 = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on <self:SerializationPhase>*/;
89 var11 = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__ANode__location]))(var_nclassdef) /* location on <var_nclassdef:ANode>*/;
90 if (varonce12) {
91 var13 = varonce12;
92 } else {
93 var14 = "Syntax error: only a concrete class can be automatically serialized.";
94 var15 = 68;
95 var16 = string__NativeString__to_s_with_length(var14, var15);
96 var13 = var16;
97 varonce12 = var13;
98 }
99 ((void (*)(val*, val*, val*))(var10->class->vft[COLOR_toolcontext__ToolContext__error]))(var10, var11, var13) /* error on <var10:ToolContext>*/;
100 goto RET_LABEL;
101 } else {
102 }
103 ((void (*)(val*, val*))(self->class->vft[COLOR_serialization_phase__SerializationPhase__generate_serialization_method]))(self, var_nclassdef) /* generate_serialization_method on <self:SerializationPhase>*/;
104 RET_LABEL:;
105 }
106 /* method serialization_phase#SerializationPhase#process_annotated_node for (self: Object, ANode, AAnnotation) */
107 void VIRTUAL_serialization_phase__SerializationPhase__process_annotated_node(val* self, val* p0, val* p1) {
108 serialization_phase__SerializationPhase__process_annotated_node(self, p0, p1);
109 RET_LABEL:;
110 }
111 /* method serialization_phase#SerializationPhase#generate_serialization_method for (self: SerializationPhase, AClassdef) */
112 void serialization_phase__SerializationPhase__generate_serialization_method(val* self, val* p0) {
113 val* var_nclassdef /* var nclassdef: AClassdef */;
114 val* var /* : ANodes[APropdef] */;
115 val* var_npropdefs /* var npropdefs: ANodes[APropdef] */;
116 val* var1 /* : Array[String] */;
117 val* var_code /* var code: Array[String] */;
118 static val* varonce;
119 val* var2 /* : String */;
120 char* var3 /* : NativeString */;
121 long var4 /* : Int */;
122 val* var5 /* : String */;
123 static val* varonce6;
124 val* var7 /* : String */;
125 char* var8 /* : NativeString */;
126 long var9 /* : Int */;
127 val* var10 /* : String */;
128 static val* varonce11;
129 val* var12 /* : String */;
130 char* var13 /* : NativeString */;
131 long var14 /* : Int */;
132 val* var15 /* : String */;
133 val* var16 /* : Iterator[nullable Object] */;
134 short int var17 /* : Bool */;
135 val* var18 /* : nullable Object */;
136 val* var_attribute /* var attribute: APropdef */;
137 short int var19 /* : Bool */;
138 int cltype;
139 int idtype;
140 val* var20 /* : nullable TAttrid */;
141 val* var21 /* : null */;
142 short int var22 /* : Bool */;
143 val* var23 /* : nullable TId */;
144 val* var24 /* : String */;
145 val* var_name /* var name: nullable Object */;
146 val* var25 /* : nullable TAttrid */;
147 val* var26 /* : String */;
148 static val* varonce27;
149 val* var28 /* : String */;
150 char* var29 /* : NativeString */;
151 long var30 /* : Int */;
152 val* var31 /* : String */;
153 static val* varonce32;
154 val* var33 /* : String */;
155 char* var34 /* : NativeString */;
156 long var35 /* : Int */;
157 val* var36 /* : String */;
158 static val* varonce37;
159 val* var38 /* : String */;
160 char* var39 /* : NativeString */;
161 long var40 /* : Int */;
162 val* var41 /* : String */;
163 val* var42 /* : Array[Object] */;
164 long var43 /* : Int */;
165 val* var44 /* : NativeArray[Object] */;
166 val* var45 /* : String */;
167 static val* varonce46;
168 val* var47 /* : String */;
169 char* var48 /* : NativeString */;
170 long var49 /* : Int */;
171 val* var50 /* : String */;
172 val* var51 /* : ToolContext */;
173 static val* varonce52;
174 val* var53 /* : String */;
175 char* var54 /* : NativeString */;
176 long var55 /* : Int */;
177 val* var56 /* : String */;
178 val* var57 /* : String */;
179 val* var58 /* : APropdef */;
180 var_nclassdef = p0;
181 var = ((val* (*)(val*))(var_nclassdef->class->vft[COLOR_parser_nodes__AClassdef__n_propdefs]))(var_nclassdef) /* n_propdefs on <var_nclassdef:AClassdef>*/;
182 var_npropdefs = var;
183 var1 = NEW_array__Array(&type_array__Arraystring__String);
184 ((void (*)(val*))(var1->class->vft[COLOR_array__Array__init]))(var1) /* init on <var1:Array[String]>*/;
185 var_code = var1;
186 if (varonce) {
187 var2 = varonce;
188 } else {
189 var3 = "redef fun core_serialize_to(v)";
190 var4 = 30;
191 var5 = string__NativeString__to_s_with_length(var3, var4);
192 var2 = var5;
193 varonce = var2;
194 }
195 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var2) /* add on <var_code:Array[String]>*/;
196 if (varonce6) {
197 var7 = varonce6;
198 } else {
199 var8 = "do";
200 var9 = 2;
201 var10 = string__NativeString__to_s_with_length(var8, var9);
202 var7 = var10;
203 varonce6 = var7;
204 }
205 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var7) /* add on <var_code:Array[String]>*/;
206 if (varonce11) {
207 var12 = varonce11;
208 } else {
209 var13 = "\11super";
210 var14 = 6;
211 var15 = string__NativeString__to_s_with_length(var13, var14);
212 var12 = var15;
213 varonce11 = var12;
214 }
215 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var12) /* add on <var_code:Array[String]>*/;
216 var16 = ((val* (*)(val*))(var_npropdefs->class->vft[COLOR_abstract_collection__Collection__iterator]))(var_npropdefs) /* iterator on <var_npropdefs:ANodes[APropdef]>*/;
217 for(;;) {
218 var17 = ((short int (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__is_ok]))(var16) /* is_ok on <var16:Iterator[nullable Object]>*/;
219 if(!var17) break;
220 var18 = ((val* (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__item]))(var16) /* item on <var16:Iterator[nullable Object]>*/;
221 var_attribute = var18;
222 /* <var_attribute:APropdef> isa AAttrPropdef */
223 cltype = type_parser_nodes__AAttrPropdef.color;
224 idtype = type_parser_nodes__AAttrPropdef.id;
225 if(cltype >= var_attribute->type->table_size) {
226 var19 = 0;
227 } else {
228 var19 = var_attribute->type->type_table[cltype] == idtype;
229 }
230 if (var19){
231 var20 = ((val* (*)(val*))(var_attribute->class->vft[COLOR_parser_nodes__AAttrPropdef__n_id]))(var_attribute) /* n_id on <var_attribute:APropdef(AAttrPropdef)>*/;
232 var21 = NULL;
233 if (var20 == NULL) {
234 var22 = 1; /* is null */
235 } else {
236 var22 = 0; /* arg is null but recv is not */
237 }
238 if (var22){
239 var23 = ((val* (*)(val*))(var_attribute->class->vft[COLOR_parser_nodes__AAttrPropdef__n_id2]))(var_attribute) /* n_id2 on <var_attribute:APropdef(AAttrPropdef)>*/;
240 if (var23 == NULL) {
241 fprintf(stderr, "Runtime error: %s", "Reciever is null");
242 fprintf(stderr, " (%s:%d)\n", "src/serialization_phase.nit", 59);
243 show_backtrace(1);
244 } else {
245 var24 = ((val* (*)(val*))(var23->class->vft[COLOR_parser_nodes__Token__text]))(var23) /* text on <var23:nullable TId>*/;
246 }
247 var_name = var24;
248 } else {
249 var25 = ((val* (*)(val*))(var_attribute->class->vft[COLOR_parser_nodes__AAttrPropdef__n_id]))(var_attribute) /* n_id on <var_attribute:APropdef(AAttrPropdef)>*/;
250 if (var25 == NULL) {
251 fprintf(stderr, "Runtime error: %s", "Reciever is null");
252 fprintf(stderr, " (%s:%d)\n", "src/serialization_phase.nit", 60);
253 show_backtrace(1);
254 } else {
255 var26 = ((val* (*)(val*))(var25->class->vft[COLOR_parser_nodes__Token__text]))(var25) /* text on <var25:nullable TAttrid>*/;
256 }
257 var_name = var26;
258 }
259 if (varonce27) {
260 var28 = varonce27;
261 } else {
262 var29 = "\11v.serialize_attribute(\"";
263 var30 = 24;
264 var31 = string__NativeString__to_s_with_length(var29, var30);
265 var28 = var31;
266 varonce27 = var28;
267 }
268 if (varonce32) {
269 var33 = varonce32;
270 } else {
271 var34 = "\", ";
272 var35 = 3;
273 var36 = string__NativeString__to_s_with_length(var34, var35);
274 var33 = var36;
275 varonce32 = var33;
276 }
277 if (varonce37) {
278 var38 = varonce37;
279 } else {
280 var39 = ")";
281 var40 = 1;
282 var41 = string__NativeString__to_s_with_length(var39, var40);
283 var38 = var41;
284 varonce37 = var38;
285 }
286 var42 = NEW_array__Array(&type_array__Arraykernel__Object);
287 { /* var42 = array_instance Array[Object] */
288 var43 = 5;
289 var44 = NEW_array__NativeArray(var43, &type_array__NativeArraykernel__Object);
290 ((struct instance_array__NativeArray*)var44)->values[0] = (val*) var28;
291 ((struct instance_array__NativeArray*)var44)->values[1] = (val*) var_name;
292 ((struct instance_array__NativeArray*)var44)->values[2] = (val*) var33;
293 ((struct instance_array__NativeArray*)var44)->values[3] = (val*) var_name;
294 ((struct instance_array__NativeArray*)var44)->values[4] = (val*) var38;
295 ((void (*)(val*, val*, long))(var42->class->vft[COLOR_array__Array__with_native]))(var42, var44, var43) /* with_native on <var42:Array[Object]>*/;
296 }
297 var45 = ((val* (*)(val*))(var42->class->vft[COLOR_string__Object__to_s]))(var42) /* to_s on <var42:Array[Object]>*/;
298 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var45) /* add on <var_code:Array[String]>*/;
299 } else {
300 }
301 CONTINUE_label: (void)0;
302 ((void (*)(val*))(var16->class->vft[COLOR_abstract_collection__Iterator__next]))(var16) /* next on <var16:Iterator[nullable Object]>*/;
303 }
304 BREAK_label: (void)0;
305 if (varonce46) {
306 var47 = varonce46;
307 } else {
308 var48 = "end";
309 var49 = 3;
310 var50 = string__NativeString__to_s_with_length(var48, var49);
311 var47 = var50;
312 varonce46 = var47;
313 }
314 ((void (*)(val*, val*))(var_code->class->vft[COLOR_abstract_collection__SimpleCollection__add]))(var_code, var47) /* add on <var_code:Array[String]>*/;
315 var51 = ((val* (*)(val*))(self->class->vft[COLOR_phase__Phase__toolcontext]))(self) /* toolcontext on <self:SerializationPhase>*/;
316 if (varonce52) {
317 var53 = varonce52;
318 } else {
319 var54 = "\n";
320 var55 = 1;
321 var56 = string__NativeString__to_s_with_length(var54, var55);
322 var53 = var56;
323 varonce52 = var53;
324 }
325 var57 = ((val* (*)(val*, val*))(var_code->class->vft[COLOR_string__Collection__join]))(var_code, var53) /* join on <var_code:Array[String]>*/;
326 var58 = ((val* (*)(val*, val*))(var51->class->vft[COLOR_parser_util__ToolContext__parse_propdef]))(var51, var57) /* parse_propdef on <var51:ToolContext>*/;
327 ((void (*)(val*, val*))(var_npropdefs->class->vft[COLOR_abstract_collection__Sequence__push]))(var_npropdefs, var58) /* push on <var_npropdefs:ANodes[APropdef]>*/;
328 RET_LABEL:;
329 }
330 /* method serialization_phase#SerializationPhase#generate_serialization_method for (self: Object, AClassdef) */
331 void VIRTUAL_serialization_phase__SerializationPhase__generate_serialization_method(val* self, val* p0) {
332 serialization_phase__SerializationPhase__generate_serialization_method(self, p0);
333 RET_LABEL:;
334 }