1 /* This C file is generated by NIT to compile module metamodel___virtualtype. */
2 #include "metamodel___virtualtype._sep.h"
3 val_t
metamodel___virtualtype___MMGlobalProperty___is_virtual_type(val_t p0
){
4 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
7 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
8 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
10 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMGlobalProperty___is_virtual_type
;
13 fra
.me
.REG
[0] = NIT_NULL
;
14 fra
.me
.REG
[1] = NIT_NULL
;
16 /* ./metamodel//virtualtype.nit:25 */
17 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMGlobalProperty___intro(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
18 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[1], COLOR_metamodel___virtualtype___MMTypeProperty
, ID_metamodel___virtualtype___MMTypeProperty
)) /*cast MMTypeProperty*/;
21 stack_frame_head
= fra
.me
.prev
;
24 val_t
metamodel___virtualtype___MMTypeProperty___stype_for(val_t p0
, val_t p1
){
25 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
28 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
29 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
31 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMTypeProperty___stype_for
;
34 fra
.me
.REG
[0] = NIT_NULL
;
35 fra
.me
.REG
[1] = NIT_NULL
;
36 fra
.me
.REG
[2] = NIT_NULL
;
37 fra
.me
.REG
[3] = NIT_NULL
;
40 /* ./metamodel//virtualtype.nit:34 */
41 fra
.me
.REG
[2] = CALL_metamodel___static_type___MMType___local_class(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
42 fra
.me
.REG
[3] = CALL_metamodel___abstractmetamodel___MMLocalProperty___global(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
43 fra
.me
.REG
[3] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
44 /* ./metamodel//virtualtype.nit:35 */
45 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[3], COLOR_metamodel___virtualtype___MMTypeProperty
, ID_metamodel___virtualtype___MMTypeProperty
)) /*cast MMTypeProperty*/;
46 if (UNTAG_Bool(REGB0
)) {
48 nit_abort("Assert failed", NULL
, LOCATE_metamodel___virtualtype
, 35);
50 /* ./metamodel//virtualtype.nit:36 */
51 fra
.me
.REG
[1] = CALL_metamodel___virtualtype___MMTypeProperty___real_stype_for(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
54 stack_frame_head
= fra
.me
.prev
;
57 val_t
metamodel___virtualtype___MMTypeProperty___real_stype_for(val_t p0
, val_t p1
){
58 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
62 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
63 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
65 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMTypeProperty___real_stype_for
;
68 fra
.me
.REG
[0] = NIT_NULL
;
69 fra
.me
.REG
[1] = NIT_NULL
;
70 fra
.me
.REG
[2] = NIT_NULL
;
71 fra
.me
.REG
[3] = NIT_NULL
;
74 /* ./metamodel//virtualtype.nit:45 */
75 fra
.me
.REG
[2] = CALL_metamodel___static_type___MMLocalProperty___signature(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
76 REGB0
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
77 if (UNTAG_Bool(REGB0
)) {
79 REGB1
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
80 if (UNTAG_Bool(REGB1
)) {
81 REGB1
= TAG_Bool(false);
84 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[2])(fra
.me
.REG
[2], NIT_NULL
);
88 if (UNTAG_Bool(REGB0
)) {
89 fra
.me
.REG
[2] = NIT_NULL
;
92 /* ./metamodel//virtualtype.nit:47 */
93 REGB0
= TAG_Bool(ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra
.me
.REG
[0])!=NIT_NULL
);
94 if (UNTAG_Bool(REGB0
)) {
96 nit_abort("Uninitialized attribute %s", "_stypes_cache", LOCATE_metamodel___virtualtype
, 47);
98 fra
.me
.REG
[3] = ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra
.me
.REG
[0]);
99 REGB0
= CALL_standard___collection___abstract_collection___MapRead___has_key(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
100 if (UNTAG_Bool(REGB0
)) {
101 REGB0
= TAG_Bool(ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra
.me
.REG
[0])!=NIT_NULL
);
102 if (UNTAG_Bool(REGB0
)) {
104 nit_abort("Uninitialized attribute %s", "_stypes_cache", LOCATE_metamodel___virtualtype
, 47);
106 fra
.me
.REG
[3] = ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra
.me
.REG
[0]);
107 fra
.me
.REG
[3] = CALL_standard___collection___abstract_collection___MapRead_____bra(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
108 fra
.me
.REG
[2] = fra
.me
.REG
[3];
111 /* ./metamodel//virtualtype.nit:49 */
112 fra
.me
.REG
[3] = NEW_MMVirtualType_metamodel___virtualtype___MMVirtualType___init(fra
.me
.REG
[0], fra
.me
.REG
[1]);
113 /* ./metamodel//virtualtype.nit:50 */
114 REGB0
= TAG_Bool(ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra
.me
.REG
[0])!=NIT_NULL
);
115 if (UNTAG_Bool(REGB0
)) {
117 nit_abort("Uninitialized attribute %s", "_stypes_cache", LOCATE_metamodel___virtualtype
, 50);
119 fra
.me
.REG
[0] = ATTR_metamodel___virtualtype___MMTypeProperty____stypes_cache(fra
.me
.REG
[0]);
120 CALL_standard___collection___abstract_collection___Map_____braeq(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1], fra
.me
.REG
[3]);
121 /* ./metamodel//virtualtype.nit:52 */
122 fra
.me
.REG
[2] = fra
.me
.REG
[3];
125 stack_frame_head
= fra
.me
.prev
;
126 return fra
.me
.REG
[2];
128 val_t
metamodel___virtualtype___MMVirtualType___property(val_t p0
){
129 struct {struct stack_frame_t me
;} fra
;
132 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
133 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
135 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMVirtualType___property
;
136 fra
.me
.has_broke
= 0;
138 fra
.me
.REG
[0] = NIT_NULL
;
140 /* ./metamodel//virtualtype.nit:58 */
141 REGB0
= TAG_Bool(ATTR_metamodel___virtualtype___MMVirtualType____property(fra
.me
.REG
[0])!=NIT_NULL
);
142 if (UNTAG_Bool(REGB0
)) {
144 nit_abort("Uninitialized attribute %s", "_property", LOCATE_metamodel___virtualtype
, 58);
146 fra
.me
.REG
[0] = ATTR_metamodel___virtualtype___MMVirtualType____property(fra
.me
.REG
[0]);
147 stack_frame_head
= fra
.me
.prev
;
148 return fra
.me
.REG
[0];
150 val_t
metamodel___virtualtype___MMVirtualType___recv(val_t p0
){
151 struct {struct stack_frame_t me
;} fra
;
154 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
155 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
157 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMVirtualType___recv
;
158 fra
.me
.has_broke
= 0;
160 fra
.me
.REG
[0] = NIT_NULL
;
162 /* ./metamodel//virtualtype.nit:61 */
163 REGB0
= TAG_Bool(ATTR_metamodel___virtualtype___MMVirtualType____recv(fra
.me
.REG
[0])!=NIT_NULL
);
164 if (UNTAG_Bool(REGB0
)) {
166 nit_abort("Uninitialized attribute %s", "_recv", LOCATE_metamodel___virtualtype
, 61);
168 fra
.me
.REG
[0] = ATTR_metamodel___virtualtype___MMVirtualType____recv(fra
.me
.REG
[0]);
169 stack_frame_head
= fra
.me
.prev
;
170 return fra
.me
.REG
[0];
172 void metamodel___virtualtype___MMVirtualType___init(val_t p0
, val_t p1
, val_t p2
, int* init_table
){
173 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_metamodel___virtualtype___MMVirtualType
].i
;
174 struct {struct stack_frame_t me
; val_t MORE_REG
[5];} fra
;
176 if (init_table
[itpos0
]) return;
177 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
178 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
180 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMVirtualType___init
;
181 fra
.me
.has_broke
= 0;
183 fra
.me
.REG
[0] = NIT_NULL
;
184 fra
.me
.REG
[1] = NIT_NULL
;
185 fra
.me
.REG
[2] = NIT_NULL
;
186 fra
.me
.REG
[3] = NIT_NULL
;
187 fra
.me
.REG
[4] = NIT_NULL
;
188 fra
.me
.REG
[5] = NIT_NULL
;
192 /* ./metamodel//virtualtype.nit:64 */
193 fra
.me
.REG
[3] = fra
.me
.REG
[0];
194 /* ./metamodel//virtualtype.nit:66 */
195 fra
.me
.REG
[4] = CALL_metamodel___abstractmetamodel___MMLocalProperty___name(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
196 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMLocalProperty___signature_for(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
197 fra
.me
.REG
[5] = CALL_metamodel___static_type___MMSignature___return_type(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
198 CALL_metamodel___type_formal___MMTypeFormal___init(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[4], fra
.me
.REG
[5], init_table
);
199 /* ./metamodel//virtualtype.nit:67 */
200 ATTR_metamodel___virtualtype___MMVirtualType____property(fra
.me
.REG
[3]) = fra
.me
.REG
[1];
201 /* ./metamodel//virtualtype.nit:68 */
202 ATTR_metamodel___virtualtype___MMVirtualType____recv(fra
.me
.REG
[3]) = fra
.me
.REG
[2];
203 stack_frame_head
= fra
.me
.prev
;
204 init_table
[itpos0
] = 1;
207 val_t
metamodel___virtualtype___MMVirtualType___mmmodule(val_t p0
){
208 struct {struct stack_frame_t me
;} fra
;
211 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
212 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
214 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMVirtualType___mmmodule
;
215 fra
.me
.has_broke
= 0;
217 fra
.me
.REG
[0] = NIT_NULL
;
219 /* ./metamodel//virtualtype.nit:71 */
220 REGB0
= TAG_Bool(ATTR_metamodel___virtualtype___MMVirtualType____recv(fra
.me
.REG
[0])!=NIT_NULL
);
221 if (UNTAG_Bool(REGB0
)) {
223 nit_abort("Uninitialized attribute %s", "_recv", LOCATE_metamodel___virtualtype
, 71);
225 fra
.me
.REG
[0] = ATTR_metamodel___virtualtype___MMVirtualType____recv(fra
.me
.REG
[0]);
226 fra
.me
.REG
[0] = CALL_metamodel___static_type___MMType___mmmodule(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
229 stack_frame_head
= fra
.me
.prev
;
230 return fra
.me
.REG
[0];
232 val_t
metamodel___virtualtype___MMVirtualType___for_module(val_t p0
, val_t p1
){
233 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
237 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
238 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
240 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMVirtualType___for_module
;
241 fra
.me
.has_broke
= 0;
243 fra
.me
.REG
[0] = NIT_NULL
;
244 fra
.me
.REG
[1] = NIT_NULL
;
245 fra
.me
.REG
[2] = NIT_NULL
;
246 fra
.me
.REG
[3] = NIT_NULL
;
249 /* ./metamodel//virtualtype.nit:75 */
250 fra
.me
.REG
[2] = CALL_metamodel___static_type___MMType___mmmodule(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
251 REGB0
= TAG_Bool(IS_EQUAL_OO(fra
.me
.REG
[1],fra
.me
.REG
[2]));
252 if (UNTAG_Bool(REGB0
)) {
254 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
257 if (UNTAG_Bool(REGB0
)) {
258 fra
.me
.REG
[2] = fra
.me
.REG
[0];
261 /* ./metamodel//virtualtype.nit:76 */
262 fra
.me
.REG
[3] = CALL_metamodel___virtualtype___MMVirtualType___recv(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
263 fra
.me
.REG
[1] = CALL_metamodel___static_type___MMType___for_module(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
264 fra
.me
.REG
[1] = CALL_metamodel___static_type___MMType___adapt_to(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
265 fra
.me
.REG
[2] = fra
.me
.REG
[1];
268 stack_frame_head
= fra
.me
.prev
;
269 return fra
.me
.REG
[2];
271 val_t
metamodel___virtualtype___MMVirtualType___not_for_self(val_t p0
){
272 struct {struct stack_frame_t me
;} fra
;
274 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
275 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
277 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMVirtualType___not_for_self
;
278 fra
.me
.has_broke
= 0;
280 fra
.me
.REG
[0] = NIT_NULL
;
282 /* ./metamodel//virtualtype.nit:81 */
283 fra
.me
.REG
[0] = CALL_metamodel___type_formal___MMTypeFormal___bound(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
284 fra
.me
.REG
[0] = CALL_metamodel___static_type___MMType___not_for_self(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
287 stack_frame_head
= fra
.me
.prev
;
288 return fra
.me
.REG
[0];
290 val_t
metamodel___virtualtype___MMVirtualType___adapt_to(val_t p0
, val_t p1
){
291 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
294 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
295 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
297 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMVirtualType___adapt_to
;
298 fra
.me
.has_broke
= 0;
300 fra
.me
.REG
[0] = NIT_NULL
;
301 fra
.me
.REG
[1] = NIT_NULL
;
302 fra
.me
.REG
[2] = NIT_NULL
;
305 /* ./metamodel//virtualtype.nit:84 */
306 fra
.me
.REG
[2] = fra
.me
.REG
[0];
307 /* ./metamodel//virtualtype.nit:86 */
308 fra
.me
.REG
[2] = CALL_metamodel___virtualtype___MMVirtualType___property(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
309 fra
.me
.REG
[1] = CALL_metamodel___virtualtype___MMTypeProperty___stype_for(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[1]);
310 REGB0
= TAG_Bool(fra
.me
.REG
[1]!=NIT_NULL
);
311 if (UNTAG_Bool(REGB0
)) {
313 nit_abort("Cast failed", NULL
, LOCATE_metamodel___virtualtype
, 86);
317 stack_frame_head
= fra
.me
.prev
;
318 return fra
.me
.REG
[1];
320 val_t
metamodel___virtualtype___MMLocalClass___virtual_type(val_t p0
, val_t p1
){
321 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
324 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
325 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
327 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMLocalClass___virtual_type
;
328 fra
.me
.has_broke
= 0;
330 fra
.me
.REG
[0] = NIT_NULL
;
331 fra
.me
.REG
[1] = NIT_NULL
;
334 /* ./metamodel//virtualtype.nit:93 */
335 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMLocalClass___get_property_by_name(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
336 /* ./metamodel//virtualtype.nit:94 */
337 REGB0
= CALL_metamodel___virtualtype___MMGlobalProperty___is_virtual_type(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
338 if (UNTAG_Bool(REGB0
)) {
339 /* ./metamodel//virtualtype.nit:95 */
342 /* ./metamodel//virtualtype.nit:97 */
343 nit_abort("Aborted", NULL
, LOCATE_metamodel___virtualtype
, 97);
345 stack_frame_head
= fra
.me
.prev
;
346 return fra
.me
.REG
[1];
348 val_t
metamodel___virtualtype___MMLocalClass___select_virtual_type(val_t p0
, val_t p1
){
349 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
352 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
353 fra
.me
.file
= LOCATE_metamodel___virtualtype
;
355 fra
.me
.meth
= LOCATE_metamodel___virtualtype___MMLocalClass___select_virtual_type
;
356 fra
.me
.has_broke
= 0;
358 fra
.me
.REG
[0] = NIT_NULL
;
359 fra
.me
.REG
[1] = NIT_NULL
;
362 /* ./metamodel//virtualtype.nit:103 */
363 fra
.me
.REG
[1] = CALL_metamodel___virtualtype___MMLocalClass___virtual_type(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
364 /* ./metamodel//virtualtype.nit:104 */
365 fra
.me
.REG
[1] = CALL_metamodel___abstractmetamodel___MMLocalClass_____bra(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
366 /* ./metamodel//virtualtype.nit:105 */
367 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[1], COLOR_metamodel___virtualtype___MMTypeProperty
, ID_metamodel___virtualtype___MMTypeProperty
)) /*cast MMTypeProperty*/;
368 if (UNTAG_Bool(REGB0
)) {
370 nit_abort("Assert failed", NULL
, LOCATE_metamodel___virtualtype
, 105);
372 /* ./metamodel//virtualtype.nit:106 */
375 stack_frame_head
= fra
.me
.prev
;
376 return fra
.me
.REG
[1];