1 /* This C file is generated by NIT to compile module virtualtype. */
2 #include "virtualtype._sep.h"
3 val_t
virtualtype___MMGlobalProperty___is_virtual_type(val_t p0
){
4 struct {struct stack_frame_t me
;} fra
;
7 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
8 fra
.me
.file
= LOCATE_virtualtype
;
10 fra
.me
.meth
= LOCATE_virtualtype___MMGlobalProperty___is_virtual_type
;
13 fra
.me
.REG
[0] = NIT_NULL
;
15 /* ./metamodel//virtualtype.nit:25 */
16 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMGlobalProperty___intro(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
17 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_MMTypeProperty
, ID_MMTypeProperty
)) /*cast MMTypeProperty*/;
20 stack_frame_head
= fra
.me
.prev
;
23 val_t
virtualtype___MMTypeProperty___stype_for(val_t p0
, val_t p1
){
24 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
27 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
28 fra
.me
.file
= LOCATE_virtualtype
;
30 fra
.me
.meth
= LOCATE_virtualtype___MMTypeProperty___stype_for
;
33 fra
.me
.REG
[0] = NIT_NULL
;
34 fra
.me
.REG
[1] = NIT_NULL
;
35 fra
.me
.REG
[2] = NIT_NULL
;
38 /* ./metamodel//virtualtype.nit:34 */
39 fra
.me
.REG
[2] = CALL_static_type___MMType___local_class(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
40 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMLocalProperty___global(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
41 fra
.me
.REG
[0] = CALL_abstractmetamodel___MMLocalClass_____bra(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[0]);
42 /* ./metamodel//virtualtype.nit:35 */
43 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[0], COLOR_MMTypeProperty
, ID_MMTypeProperty
)) /*cast MMTypeProperty*/;
44 if (UNTAG_Bool(REGB0
)) {
46 nit_abort("Assert failed", NULL
, LOCATE_virtualtype
, 35);
48 /* ./metamodel//virtualtype.nit:36 */
49 fra
.me
.REG
[1] = CALL_virtualtype___MMTypeProperty___real_stype_for(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
52 stack_frame_head
= fra
.me
.prev
;
55 val_t
virtualtype___MMTypeProperty___real_stype_for(val_t p0
, val_t p1
){
56 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
60 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
61 fra
.me
.file
= LOCATE_virtualtype
;
63 fra
.me
.meth
= LOCATE_virtualtype___MMTypeProperty___real_stype_for
;
66 fra
.me
.REG
[0] = NIT_NULL
;
67 fra
.me
.REG
[1] = NIT_NULL
;
68 fra
.me
.REG
[2] = NIT_NULL
;
69 fra
.me
.REG
[3] = NIT_NULL
;
72 /* ./metamodel//virtualtype.nit:45 */
73 fra
.me
.REG
[2] = CALL_static_type___MMLocalProperty___signature(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
74 REGB0
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
75 if (UNTAG_Bool(REGB0
)) {
77 REGB1
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
78 if (UNTAG_Bool(REGB1
)) {
79 REGB1
= TAG_Bool(false);
82 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[2])(fra
.me
.REG
[2], NIT_NULL
);
86 if (UNTAG_Bool(REGB0
)) {
87 fra
.me
.REG
[2] = NIT_NULL
;
90 /* ./metamodel//virtualtype.nit:47 */
91 REGB0
= TAG_Bool(ATTR_virtualtype___MMTypeProperty____stypes_cache(fra
.me
.REG
[0])!=NIT_NULL
);
92 if (UNTAG_Bool(REGB0
)) {
94 nit_abort("Uninitialized attribute %s", "_stypes_cache", LOCATE_virtualtype
, 47);
96 fra
.me
.REG
[3] = ATTR_virtualtype___MMTypeProperty____stypes_cache(fra
.me
.REG
[0]);
97 REGB0
= CALL_abstract_collection___MapRead___has_key(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
98 if (UNTAG_Bool(REGB0
)) {
99 REGB0
= TAG_Bool(ATTR_virtualtype___MMTypeProperty____stypes_cache(fra
.me
.REG
[0])!=NIT_NULL
);
100 if (UNTAG_Bool(REGB0
)) {
102 nit_abort("Uninitialized attribute %s", "_stypes_cache", LOCATE_virtualtype
, 47);
104 fra
.me
.REG
[3] = ATTR_virtualtype___MMTypeProperty____stypes_cache(fra
.me
.REG
[0]);
105 fra
.me
.REG
[3] = CALL_abstract_collection___MapRead_____bra(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
106 fra
.me
.REG
[2] = fra
.me
.REG
[3];
109 /* ./metamodel//virtualtype.nit:49 */
110 fra
.me
.REG
[3] = NEW_MMVirtualType_virtualtype___MMVirtualType___init(fra
.me
.REG
[0], fra
.me
.REG
[1]);
111 /* ./metamodel//virtualtype.nit:50 */
112 REGB0
= TAG_Bool(ATTR_virtualtype___MMTypeProperty____stypes_cache(fra
.me
.REG
[0])!=NIT_NULL
);
113 if (UNTAG_Bool(REGB0
)) {
115 nit_abort("Uninitialized attribute %s", "_stypes_cache", LOCATE_virtualtype
, 50);
117 fra
.me
.REG
[0] = ATTR_virtualtype___MMTypeProperty____stypes_cache(fra
.me
.REG
[0]);
118 CALL_abstract_collection___Map_____braeq(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1], fra
.me
.REG
[3]);
119 /* ./metamodel//virtualtype.nit:52 */
120 fra
.me
.REG
[2] = fra
.me
.REG
[3];
123 stack_frame_head
= fra
.me
.prev
;
124 return fra
.me
.REG
[2];
126 val_t
virtualtype___MMVirtualType___property(val_t p0
){
127 struct {struct stack_frame_t me
;} fra
;
130 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
131 fra
.me
.file
= LOCATE_virtualtype
;
133 fra
.me
.meth
= LOCATE_virtualtype___MMVirtualType___property
;
134 fra
.me
.has_broke
= 0;
136 fra
.me
.REG
[0] = NIT_NULL
;
138 /* ./metamodel//virtualtype.nit:58 */
139 REGB0
= TAG_Bool(ATTR_virtualtype___MMVirtualType____property(fra
.me
.REG
[0])!=NIT_NULL
);
140 if (UNTAG_Bool(REGB0
)) {
142 nit_abort("Uninitialized attribute %s", "_property", LOCATE_virtualtype
, 58);
144 fra
.me
.REG
[0] = ATTR_virtualtype___MMVirtualType____property(fra
.me
.REG
[0]);
145 stack_frame_head
= fra
.me
.prev
;
146 return fra
.me
.REG
[0];
148 val_t
virtualtype___MMVirtualType___recv(val_t p0
){
149 struct {struct stack_frame_t me
;} fra
;
152 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
153 fra
.me
.file
= LOCATE_virtualtype
;
155 fra
.me
.meth
= LOCATE_virtualtype___MMVirtualType___recv
;
156 fra
.me
.has_broke
= 0;
158 fra
.me
.REG
[0] = NIT_NULL
;
160 /* ./metamodel//virtualtype.nit:61 */
161 REGB0
= TAG_Bool(ATTR_virtualtype___MMVirtualType____recv(fra
.me
.REG
[0])!=NIT_NULL
);
162 if (UNTAG_Bool(REGB0
)) {
164 nit_abort("Uninitialized attribute %s", "_recv", LOCATE_virtualtype
, 61);
166 fra
.me
.REG
[0] = ATTR_virtualtype___MMVirtualType____recv(fra
.me
.REG
[0]);
167 stack_frame_head
= fra
.me
.prev
;
168 return fra
.me
.REG
[0];
170 void virtualtype___MMVirtualType___init(val_t p0
, val_t p1
, val_t p2
, int* init_table
){
171 int itpos0
= VAL2OBJ(p0
)->vft
[INIT_TABLE_POS_MMVirtualType
].i
;
172 struct {struct stack_frame_t me
; val_t MORE_REG
[5];} fra
;
174 if (init_table
[itpos0
]) return;
175 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
176 fra
.me
.file
= LOCATE_virtualtype
;
178 fra
.me
.meth
= LOCATE_virtualtype___MMVirtualType___init
;
179 fra
.me
.has_broke
= 0;
181 fra
.me
.REG
[0] = NIT_NULL
;
182 fra
.me
.REG
[1] = NIT_NULL
;
183 fra
.me
.REG
[2] = NIT_NULL
;
184 fra
.me
.REG
[3] = NIT_NULL
;
185 fra
.me
.REG
[4] = NIT_NULL
;
186 fra
.me
.REG
[5] = NIT_NULL
;
190 /* ./metamodel//virtualtype.nit:64 */
191 fra
.me
.REG
[3] = fra
.me
.REG
[0];
192 /* ./metamodel//virtualtype.nit:66 */
193 fra
.me
.REG
[4] = CALL_abstractmetamodel___MMLocalProperty___name(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
194 fra
.me
.REG
[5] = CALL_static_type___MMLocalProperty___signature_for(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
195 fra
.me
.REG
[5] = CALL_static_type___MMSignature___return_type(fra
.me
.REG
[5])(fra
.me
.REG
[5]);
196 CALL_type_formal___MMTypeFormal___init(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[4], fra
.me
.REG
[5], init_table
);
197 /* ./metamodel//virtualtype.nit:67 */
198 ATTR_virtualtype___MMVirtualType____property(fra
.me
.REG
[3]) = fra
.me
.REG
[1];
199 /* ./metamodel//virtualtype.nit:68 */
200 ATTR_virtualtype___MMVirtualType____recv(fra
.me
.REG
[3]) = fra
.me
.REG
[2];
201 stack_frame_head
= fra
.me
.prev
;
202 init_table
[itpos0
] = 1;
205 val_t
virtualtype___MMVirtualType___mmmodule(val_t p0
){
206 struct {struct stack_frame_t me
;} fra
;
209 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
210 fra
.me
.file
= LOCATE_virtualtype
;
212 fra
.me
.meth
= LOCATE_virtualtype___MMVirtualType___mmmodule
;
213 fra
.me
.has_broke
= 0;
215 fra
.me
.REG
[0] = NIT_NULL
;
217 /* ./metamodel//virtualtype.nit:71 */
218 REGB0
= TAG_Bool(ATTR_virtualtype___MMVirtualType____recv(fra
.me
.REG
[0])!=NIT_NULL
);
219 if (UNTAG_Bool(REGB0
)) {
221 nit_abort("Uninitialized attribute %s", "_recv", LOCATE_virtualtype
, 71);
223 fra
.me
.REG
[0] = ATTR_virtualtype___MMVirtualType____recv(fra
.me
.REG
[0]);
224 fra
.me
.REG
[0] = CALL_static_type___MMType___mmmodule(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
227 stack_frame_head
= fra
.me
.prev
;
228 return fra
.me
.REG
[0];
230 val_t
virtualtype___MMVirtualType___for_module(val_t p0
, val_t p1
){
231 struct {struct stack_frame_t me
; val_t MORE_REG
[3];} fra
;
235 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
236 fra
.me
.file
= LOCATE_virtualtype
;
238 fra
.me
.meth
= LOCATE_virtualtype___MMVirtualType___for_module
;
239 fra
.me
.has_broke
= 0;
241 fra
.me
.REG
[0] = NIT_NULL
;
242 fra
.me
.REG
[1] = NIT_NULL
;
243 fra
.me
.REG
[2] = NIT_NULL
;
244 fra
.me
.REG
[3] = NIT_NULL
;
247 /* ./metamodel//virtualtype.nit:75 */
248 fra
.me
.REG
[2] = CALL_static_type___MMType___mmmodule(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
249 REGB0
= TAG_Bool(IS_EQUAL_OO(fra
.me
.REG
[1],fra
.me
.REG
[2]));
250 if (UNTAG_Bool(REGB0
)) {
252 REGB1
= CALL_kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
255 if (UNTAG_Bool(REGB0
)) {
256 fra
.me
.REG
[2] = fra
.me
.REG
[0];
259 /* ./metamodel//virtualtype.nit:76 */
260 fra
.me
.REG
[3] = CALL_virtualtype___MMVirtualType___recv(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
261 fra
.me
.REG
[1] = CALL_static_type___MMType___for_module(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[1]);
262 fra
.me
.REG
[1] = CALL_static_type___MMType___adapt_to(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
263 fra
.me
.REG
[2] = fra
.me
.REG
[1];
266 stack_frame_head
= fra
.me
.prev
;
267 return fra
.me
.REG
[2];
269 val_t
virtualtype___MMVirtualType___not_for_self(val_t p0
){
270 struct {struct stack_frame_t me
;} fra
;
272 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
273 fra
.me
.file
= LOCATE_virtualtype
;
275 fra
.me
.meth
= LOCATE_virtualtype___MMVirtualType___not_for_self
;
276 fra
.me
.has_broke
= 0;
278 fra
.me
.REG
[0] = NIT_NULL
;
280 /* ./metamodel//virtualtype.nit:81 */
281 fra
.me
.REG
[0] = CALL_type_formal___MMTypeFormal___bound(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
282 fra
.me
.REG
[0] = CALL_static_type___MMType___not_for_self(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
285 stack_frame_head
= fra
.me
.prev
;
286 return fra
.me
.REG
[0];
288 val_t
virtualtype___MMVirtualType___adapt_to(val_t p0
, val_t p1
){
289 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
292 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
293 fra
.me
.file
= LOCATE_virtualtype
;
295 fra
.me
.meth
= LOCATE_virtualtype___MMVirtualType___adapt_to
;
296 fra
.me
.has_broke
= 0;
298 fra
.me
.REG
[0] = NIT_NULL
;
299 fra
.me
.REG
[1] = NIT_NULL
;
302 /* ./metamodel//virtualtype.nit:86 */
303 fra
.me
.REG
[0] = CALL_virtualtype___MMVirtualType___property(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
304 fra
.me
.REG
[1] = CALL_virtualtype___MMTypeProperty___stype_for(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
305 REGB0
= TAG_Bool(fra
.me
.REG
[1]!=NIT_NULL
);
306 if (UNTAG_Bool(REGB0
)) {
308 nit_abort("Cast failed", NULL
, LOCATE_virtualtype
, 86);
312 stack_frame_head
= fra
.me
.prev
;
313 return fra
.me
.REG
[1];
315 val_t
virtualtype___MMLocalClass___virtual_type(val_t p0
, val_t p1
){
316 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
319 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
320 fra
.me
.file
= LOCATE_virtualtype
;
322 fra
.me
.meth
= LOCATE_virtualtype___MMLocalClass___virtual_type
;
323 fra
.me
.has_broke
= 0;
325 fra
.me
.REG
[0] = NIT_NULL
;
326 fra
.me
.REG
[1] = NIT_NULL
;
329 /* ./metamodel//virtualtype.nit:93 */
330 fra
.me
.REG
[1] = CALL_abstractmetamodel___MMLocalClass___get_property_by_name(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
331 /* ./metamodel//virtualtype.nit:94 */
332 REGB0
= CALL_virtualtype___MMGlobalProperty___is_virtual_type(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
333 if (UNTAG_Bool(REGB0
)) {
334 /* ./metamodel//virtualtype.nit:95 */
337 /* ./metamodel//virtualtype.nit:97 */
338 nit_abort("Aborted", NULL
, LOCATE_virtualtype
, 97);
340 stack_frame_head
= fra
.me
.prev
;
341 return fra
.me
.REG
[1];
343 val_t
virtualtype___MMLocalClass___select_virtual_type(val_t p0
, val_t p1
){
344 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
347 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
348 fra
.me
.file
= LOCATE_virtualtype
;
350 fra
.me
.meth
= LOCATE_virtualtype___MMLocalClass___select_virtual_type
;
351 fra
.me
.has_broke
= 0;
353 fra
.me
.REG
[0] = NIT_NULL
;
354 fra
.me
.REG
[1] = NIT_NULL
;
357 /* ./metamodel//virtualtype.nit:103 */
358 fra
.me
.REG
[1] = CALL_virtualtype___MMLocalClass___virtual_type(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
359 /* ./metamodel//virtualtype.nit:104 */
360 fra
.me
.REG
[1] = CALL_abstractmetamodel___MMLocalClass_____bra(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
361 /* ./metamodel//virtualtype.nit:105 */
362 REGB0
= TAG_Bool(VAL_ISA(fra
.me
.REG
[1], COLOR_MMTypeProperty
, ID_MMTypeProperty
)) /*cast MMTypeProperty*/;
363 if (UNTAG_Bool(REGB0
)) {
365 nit_abort("Assert failed", NULL
, LOCATE_virtualtype
, 105);
367 /* ./metamodel//virtualtype.nit:106 */
370 stack_frame_head
= fra
.me
.prev
;
371 return fra
.me
.REG
[1];