1 /* This C file is generated by NIT to compile module ffi___c. */
2 #include "ffi___c._sep.h"
3 static const char LOCATE_ffi___c___ExternCode___is_c
[] = "c::ExternCode::is_c";
4 val_t
ffi___c___ExternCode___is_c(val_t p0
){
5 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
10 static val_t once_value_1
; /* Once value */
11 static val_t once_value_2
; /* Once value */
12 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
13 fra
.me
.file
= LOCATE_ffi___c
;
15 fra
.me
.meth
= LOCATE_ffi___c___ExternCode___is_c
;
18 fra
.me
.nitni_local_ref_head
= NULL
;
19 fra
.me
.REG
[0] = NIT_NULL
;
20 fra
.me
.REG
[1] = NIT_NULL
;
21 fra
.me
.REG
[2] = NIT_NULL
;
24 fra
.me
.REG
[1] = CALL_syntax___extern_inline___ExternCode___language(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
25 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
26 if (UNTAG_Bool(REGB0
)) {
28 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
29 if (UNTAG_Bool(REGB1
)) {
33 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
37 if (UNTAG_Bool(REGB0
)) {
41 fra
.me
.REG
[1] = CALL_ffi___ffi_base___ExternCode___language_lowered(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
43 fra
.me
.REG
[2] = BOX_NativeString("c");
45 fra
.me
.REG
[2] = CALL_standard___string___NativeString___to_s_with_length(fra
.me
.REG
[2])(fra
.me
.REG
[2], REGB1
);
46 once_value_1
= fra
.me
.REG
[2];
47 register_static_object(&once_value_1
);
48 } else fra
.me
.REG
[2] = once_value_1
;
49 fra
.me
.REG
[2] = fra
.me
.REG
[2];
50 REGB1
= TAG_Bool(IS_EQUAL_ON(fra
.me
.REG
[2],fra
.me
.REG
[1]));
51 if (UNTAG_Bool(REGB1
)) {
53 REGB2
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
54 if (UNTAG_Bool(REGB2
)) {
58 REGB2
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
65 if (UNTAG_Bool(REGB0
)) {
69 fra
.me
.REG
[0] = CALL_ffi___ffi_base___ExternCode___language_lowered(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
71 fra
.me
.REG
[2] = BOX_NativeString("c ");
73 fra
.me
.REG
[2] = CALL_standard___string___NativeString___to_s_with_length(fra
.me
.REG
[2])(fra
.me
.REG
[2], REGB1
);
74 once_value_2
= fra
.me
.REG
[2];
75 register_static_object(&once_value_2
);
76 } else fra
.me
.REG
[2] = once_value_2
;
77 fra
.me
.REG
[2] = fra
.me
.REG
[2];
78 REGB1
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
79 if (UNTAG_Bool(REGB1
)) {
80 nit_abort("Reciever is null", NULL
, LOCATE_ffi___c
, 25);
82 REGB1
= CALL_standard___string___AbstractString___has_prefix(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[2]);
88 stack_frame_head
= fra
.me
.prev
;
91 static const char LOCATE_ffi___c___ExternCode___is_c_body
[] = "c::ExternCode::is_c_body";
92 val_t
ffi___c___ExternCode___is_c_body(val_t p0
){
93 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
98 static val_t once_value_1
; /* Once value */
99 static val_t once_value_2
; /* Once value */
100 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
101 fra
.me
.file
= LOCATE_ffi___c
;
103 fra
.me
.meth
= LOCATE_ffi___c___ExternCode___is_c_body
;
104 fra
.me
.has_broke
= 0;
106 fra
.me
.nitni_local_ref_head
= NULL
;
107 fra
.me
.REG
[0] = NIT_NULL
;
108 fra
.me
.REG
[1] = NIT_NULL
;
109 fra
.me
.REG
[2] = NIT_NULL
;
112 fra
.me
.REG
[1] = CALL_syntax___extern_inline___ExternCode___language(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
113 REGB0
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
114 if (UNTAG_Bool(REGB0
)) {
116 REGB1
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
117 if (UNTAG_Bool(REGB1
)) {
121 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], NIT_NULL
);
125 if (UNTAG_Bool(REGB0
)) {
129 fra
.me
.REG
[1] = CALL_ffi___ffi_base___ExternCode___language_lowered(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
131 fra
.me
.REG
[2] = BOX_NativeString("c");
133 fra
.me
.REG
[2] = CALL_standard___string___NativeString___to_s_with_length(fra
.me
.REG
[2])(fra
.me
.REG
[2], REGB1
);
134 once_value_1
= fra
.me
.REG
[2];
135 register_static_object(&once_value_1
);
136 } else fra
.me
.REG
[2] = once_value_1
;
137 fra
.me
.REG
[2] = fra
.me
.REG
[2];
138 REGB1
= TAG_Bool(IS_EQUAL_ON(fra
.me
.REG
[2],fra
.me
.REG
[1]));
139 if (UNTAG_Bool(REGB1
)) {
141 REGB2
= TAG_Bool(fra
.me
.REG
[1]==NIT_NULL
);
142 if (UNTAG_Bool(REGB2
)) {
146 REGB2
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
153 if (UNTAG_Bool(REGB0
)) {
157 fra
.me
.REG
[0] = CALL_ffi___ffi_base___ExternCode___language_lowered(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
159 fra
.me
.REG
[2] = BOX_NativeString("c body");
161 fra
.me
.REG
[2] = CALL_standard___string___NativeString___to_s_with_length(fra
.me
.REG
[2])(fra
.me
.REG
[2], REGB1
);
162 once_value_2
= fra
.me
.REG
[2];
163 register_static_object(&once_value_2
);
164 } else fra
.me
.REG
[2] = once_value_2
;
165 fra
.me
.REG
[2] = fra
.me
.REG
[2];
166 REGB1
= TAG_Bool(IS_EQUAL_ON(fra
.me
.REG
[2],fra
.me
.REG
[0]));
167 if (UNTAG_Bool(REGB1
)) {
169 REGB2
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
170 if (UNTAG_Bool(REGB2
)) {
174 REGB2
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[2]);
183 stack_frame_head
= fra
.me
.prev
;
186 static const char LOCATE_ffi___c___ExternCode___is_c_header
[] = "c::ExternCode::is_c_header";
187 val_t
ffi___c___ExternCode___is_c_header(val_t p0
){
188 struct {struct stack_frame_t me
; val_t MORE_REG
[1];} fra
;
192 static val_t once_value_1
; /* Once value */
193 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
194 fra
.me
.file
= LOCATE_ffi___c
;
196 fra
.me
.meth
= LOCATE_ffi___c___ExternCode___is_c_header
;
197 fra
.me
.has_broke
= 0;
199 fra
.me
.nitni_local_ref_head
= NULL
;
200 fra
.me
.REG
[0] = NIT_NULL
;
201 fra
.me
.REG
[1] = NIT_NULL
;
204 fra
.me
.REG
[0] = CALL_ffi___ffi_base___ExternCode___language_lowered(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
206 fra
.me
.REG
[1] = BOX_NativeString("c header");
208 fra
.me
.REG
[1] = CALL_standard___string___NativeString___to_s_with_length(fra
.me
.REG
[1])(fra
.me
.REG
[1], REGB0
);
209 once_value_1
= fra
.me
.REG
[1];
210 register_static_object(&once_value_1
);
211 } else fra
.me
.REG
[1] = once_value_1
;
212 fra
.me
.REG
[1] = fra
.me
.REG
[1];
213 REGB0
= TAG_Bool(IS_EQUAL_ON(fra
.me
.REG
[1],fra
.me
.REG
[0]));
214 if (UNTAG_Bool(REGB0
)) {
216 REGB1
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
217 if (UNTAG_Bool(REGB1
)) {
221 REGB1
= CALL_standard___kernel___Object_____eqeq(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
227 stack_frame_head
= fra
.me
.prev
;
230 static const char LOCATE_ffi___c___ExternCode___accept_ffi_visitor
[] = "c::ExternCode::(ffi_base::FFIVisited::accept_ffi_visitor)";
231 void ffi___c___ExternCode___accept_ffi_visitor(val_t p0
, val_t p1
){
232 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_ffi___c
;
238 fra
.me
.meth
= LOCATE_ffi___c___ExternCode___accept_ffi_visitor
;
239 fra
.me
.has_broke
= 0;
241 fra
.me
.nitni_local_ref_head
= NULL
;
242 fra
.me
.REG
[0] = NIT_NULL
;
243 fra
.me
.REG
[1] = NIT_NULL
;
244 fra
.me
.REG
[2] = NIT_NULL
;
245 fra
.me
.REG
[3] = NIT_NULL
;
249 REGB0
= CALL_ffi___c___ExternCode___is_c_header(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
250 if (UNTAG_Bool(REGB0
)) {
252 fra
.me
.REG
[2] = CALL_ffi___ffi_base___FFIVisitor___compilation_unit(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
253 fra
.me
.REG
[2] = CALL_c_tools___CCompilationUnit___header_custom(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
254 fra
.me
.REG
[3] = CALL_syntax___extern_inline___ExternCode___code(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
255 CALL_compiling_writer___Writer___add(fra
.me
.REG
[2])(fra
.me
.REG
[2], fra
.me
.REG
[3]);
258 REGB0
= CALL_ffi___c___ExternCode___is_c_body(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
259 if (UNTAG_Bool(REGB0
)) {
261 fra
.me
.REG
[1] = CALL_ffi___ffi_base___FFIVisitor___compilation_unit(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
262 fra
.me
.REG
[1] = CALL_c_tools___CCompilationUnit___body_custom(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
263 fra
.me
.REG
[0] = CALL_syntax___extern_inline___ExternCode___code(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
264 CALL_compiling_writer___Writer___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
267 stack_frame_head
= fra
.me
.prev
;
270 static const char LOCATE_ffi___c___MMMethod___accept_ffi_visitor
[] = "c::MMMethod::(ffi_base::FFIVisited::accept_ffi_visitor)";
271 void ffi___c___MMMethod___accept_ffi_visitor(val_t p0
, val_t p1
){
272 struct {struct stack_frame_t me
; val_t MORE_REG
[6];} fra
;
275 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
276 fra
.me
.file
= LOCATE_ffi___c
;
278 fra
.me
.meth
= LOCATE_ffi___c___MMMethod___accept_ffi_visitor
;
279 fra
.me
.has_broke
= 0;
281 fra
.me
.nitni_local_ref_head
= NULL
;
282 fra
.me
.REG
[0] = NIT_NULL
;
283 fra
.me
.REG
[1] = NIT_NULL
;
284 fra
.me
.REG
[2] = NIT_NULL
;
285 fra
.me
.REG
[3] = NIT_NULL
;
286 fra
.me
.REG
[4] = NIT_NULL
;
287 fra
.me
.REG
[5] = NIT_NULL
;
288 fra
.me
.REG
[6] = NIT_NULL
;
292 fra
.me
.REG
[2] = fra
.me
.REG
[0];
293 fra
.me
.REG
[3] = fra
.me
.REG
[1];
295 fra
.me
.REG
[4] = CALL_syntax___extern_inline___MMMethod___extern_implementation(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
296 REGB0
= TAG_Bool(fra
.me
.REG
[4]==NIT_NULL
);
297 if (UNTAG_Bool(REGB0
)) {
298 nit_abort("Reciever is null", NULL
, LOCATE_ffi___c
, 45);
300 REGB0
= CALL_ffi___c___ExternCode___is_c(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
301 if (UNTAG_Bool(REGB0
)) {
303 fra
.me
.REG
[4] = CALL_native_interface___ni_metamodel___MMMethod___impl_csignature(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
304 fra
.me
.REG
[4] = NEW_CFunction_c_tools___CFunction___init(fra
.me
.REG
[4]);
306 fra
.me
.REG
[5] = CALL_c_tools___CFunction___decls(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
307 fra
.me
.REG
[6] = CALL_syntax___extern_inline___MMMethod___extern_implementation(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
308 REGB0
= TAG_Bool(fra
.me
.REG
[6]==NIT_NULL
);
309 if (UNTAG_Bool(REGB0
)) {
310 nit_abort("Reciever is null", NULL
, LOCATE_ffi___c
, 47);
312 fra
.me
.REG
[6] = CALL_syntax___extern_inline___ExternCode___location(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
313 REGB0
= TAG_Bool(fra
.me
.REG
[6]==NIT_NULL
);
314 if (UNTAG_Bool(REGB0
)) {
315 nit_abort("Reciever is null", NULL
, LOCATE_ffi___c
, 47);
317 fra
.me
.REG
[6] = CALL_ffi___c___Location___as_line_pragma(fra
.me
.REG
[6])(fra
.me
.REG
[6]);
318 CALL_compiling_writer___Writer___add(fra
.me
.REG
[5])(fra
.me
.REG
[5], fra
.me
.REG
[6]);
320 fra
.me
.REG
[6] = CALL_c_tools___CFunction___exprs(fra
.me
.REG
[4])(fra
.me
.REG
[4]);
321 fra
.me
.REG
[2] = CALL_syntax___extern_inline___MMMethod___extern_implementation(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
322 REGB0
= TAG_Bool(fra
.me
.REG
[2]==NIT_NULL
);
323 if (UNTAG_Bool(REGB0
)) {
324 nit_abort("Reciever is null", NULL
, LOCATE_ffi___c
, 48);
326 fra
.me
.REG
[2] = CALL_syntax___extern_inline___ExternCode___code(fra
.me
.REG
[2])(fra
.me
.REG
[2]);
327 CALL_compiling_writer___Writer___add(fra
.me
.REG
[6])(fra
.me
.REG
[6], fra
.me
.REG
[2]);
329 fra
.me
.REG
[3] = CALL_ffi___ffi_base___FFIVisitor___compilation_unit(fra
.me
.REG
[3])(fra
.me
.REG
[3]);
330 CALL_c_tools___CCompilationUnit___add_exported_function(fra
.me
.REG
[3])(fra
.me
.REG
[3], fra
.me
.REG
[4]);
333 CALL_SUPER_ffi___c___MMMethod___accept_ffi_visitor(fra
.me
.REG
[0])(fra
.me
.REG
[0], fra
.me
.REG
[1]);
335 stack_frame_head
= fra
.me
.prev
;
338 static const char LOCATE_ffi___c___Location___as_line_pragma
[] = "c::Location::as_line_pragma";
339 val_t
ffi___c___Location___as_line_pragma(val_t p0
){
340 struct {struct stack_frame_t me
; val_t MORE_REG
[2];} fra
;
343 static val_t once_value_1
; /* Once value */
344 static val_t once_value_2
; /* Once value */
345 static val_t once_value_3
; /* Once value */
346 fra
.me
.prev
= stack_frame_head
; stack_frame_head
= &fra
.me
;
347 fra
.me
.file
= LOCATE_ffi___c
;
349 fra
.me
.meth
= LOCATE_ffi___c___Location___as_line_pragma
;
350 fra
.me
.has_broke
= 0;
352 fra
.me
.nitni_local_ref_head
= NULL
;
353 fra
.me
.REG
[0] = NIT_NULL
;
354 fra
.me
.REG
[1] = NIT_NULL
;
355 fra
.me
.REG
[2] = NIT_NULL
;
359 fra
.me
.REG
[1] = NEW_Array_standard___collection___array___Array___with_capacity(REGB0
);
361 fra
.me
.REG
[2] = BOX_NativeString("#line ");
363 fra
.me
.REG
[2] = CALL_standard___string___NativeString___to_s_with_length(fra
.me
.REG
[2])(fra
.me
.REG
[2], REGB0
);
364 once_value_1
= fra
.me
.REG
[2];
365 register_static_object(&once_value_1
);
366 } else fra
.me
.REG
[2] = once_value_1
;
367 fra
.me
.REG
[2] = fra
.me
.REG
[2];
368 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
369 REGB0
= CALL_location___Location___line_start(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
370 fra
.me
.REG
[2] = CALL_standard___string___Object___to_s(REGB0
)(REGB0
);
371 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
373 fra
.me
.REG
[2] = BOX_NativeString(" \"");
375 fra
.me
.REG
[2] = CALL_standard___string___NativeString___to_s_with_length(fra
.me
.REG
[2])(fra
.me
.REG
[2], REGB0
);
376 once_value_2
= fra
.me
.REG
[2];
377 register_static_object(&once_value_2
);
378 } else fra
.me
.REG
[2] = once_value_2
;
379 fra
.me
.REG
[2] = fra
.me
.REG
[2];
380 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[2]);
381 fra
.me
.REG
[0] = CALL_location___Location___file(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
382 REGB0
= TAG_Bool(fra
.me
.REG
[0]==NIT_NULL
);
383 if (UNTAG_Bool(REGB0
)) {
384 nit_abort("Reciever is null", NULL
, LOCATE_ffi___c
, 59);
386 fra
.me
.REG
[0] = CALL_location___SourceFile___filename(fra
.me
.REG
[0])(fra
.me
.REG
[0]);
387 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
389 fra
.me
.REG
[0] = BOX_NativeString("\"\n");
391 fra
.me
.REG
[0] = CALL_standard___string___NativeString___to_s_with_length(fra
.me
.REG
[0])(fra
.me
.REG
[0], REGB0
);
392 once_value_3
= fra
.me
.REG
[0];
393 register_static_object(&once_value_3
);
394 } else fra
.me
.REG
[0] = once_value_3
;
395 fra
.me
.REG
[0] = fra
.me
.REG
[0];
396 CALL_standard___collection___abstract_collection___SimpleCollection___add(fra
.me
.REG
[1])(fra
.me
.REG
[1], fra
.me
.REG
[0]);
397 fra
.me
.REG
[1] = CALL_standard___string___Object___to_s(fra
.me
.REG
[1])(fra
.me
.REG
[1]);
400 stack_frame_head
= fra
.me
.prev
;
401 return fra
.me
.REG
[1];