c_src: update
[nit.git] / c_src / c_tools.sep.1.c
index f776781..28e9bc1 100644 (file)
 #include "c_tools.sep.0.h"
-/* method c_tools#CCompilationUnit#header_c_base for (self: CCompilationUnit): Template */
-val* c_tools__CCompilationUnit__header_c_base(val* self) {
-val* var /* : Template */;
-val* var1 /* : Template */;
-var1 = self->attrs[COLOR_c_tools__CCompilationUnit___64dheader_c_base].val; /* @header_c_base on <self:CCompilationUnit> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @header_c_base");
-fprintf(stderr, " (%s:%d)\n", "src/c_tools.nit", 24);
+/* method c_tools#ExternFile#filename for (self: ExternFile): String */
+val* c_tools__ExternFile__filename(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+var1 = self->attrs[COLOR_c_tools__ExternFile___filename].val; /* _filename on <self:ExternFile> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filename");
+PRINT_ERROR(" (%s:%d)\n", "src/c_tools.nit", 104);
 show_backtrace(1);
 }
 var = var1;
 RET_LABEL:;
 return var;
 }
-/* method c_tools#CCompilationUnit#header_c_base for (self: Object): Template */
-val* VIRTUAL_c_tools__CCompilationUnit__header_c_base(val* self) {
-val* var /* : Template */;
-val* var1 /* : Template */;
-var1 = c_tools__CCompilationUnit__header_c_base(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method c_tools#CCompilationUnit#header_c_base= for (self: CCompilationUnit, Template) */
-void c_tools__CCompilationUnit__header_c_base_61d(val* self, val* p0) {
-self->attrs[COLOR_c_tools__CCompilationUnit___64dheader_c_base].val = p0; /* @header_c_base on <self:CCompilationUnit> */
-RET_LABEL:;
-}
-/* method c_tools#CCompilationUnit#header_c_base= for (self: Object, Template) */
-void VIRTUAL_c_tools__CCompilationUnit__header_c_base_61d(val* self, val* p0) {
-c_tools__CCompilationUnit__header_c_base_61d(self, p0);
-RET_LABEL:;
-}
-/* method c_tools#CCompilationUnit#header_custom for (self: CCompilationUnit): Template */
-val* c_tools__CCompilationUnit__header_custom(val* self) {
-val* var /* : Template */;
-val* var1 /* : Template */;
-var1 = self->attrs[COLOR_c_tools__CCompilationUnit___64dheader_custom].val; /* @header_custom on <self:CCompilationUnit> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @header_custom");
-fprintf(stderr, " (%s:%d)\n", "src/c_tools.nit", 28);
+/* method c_tools#ExternFile#filename for (self: Object): String */
+val* VIRTUAL_c_tools__ExternFile__filename(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+val* var3 /* : String */;
+{ /* Inline c_tools#ExternFile#filename (self) on <self:Object(ExternFile)> */
+var3 = self->attrs[COLOR_c_tools__ExternFile___filename].val; /* _filename on <self:Object(ExternFile)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filename");
+PRINT_ERROR(" (%s:%d)\n", "src/c_tools.nit", 104);
 show_backtrace(1);
 }
-var = var1;
-RET_LABEL:;
-return var;
+var1 = var3;
+RET_LABEL2:(void)0;
 }
-/* method c_tools#CCompilationUnit#header_custom for (self: Object): Template */
-val* VIRTUAL_c_tools__CCompilationUnit__header_custom(val* self) {
-val* var /* : Template */;
-val* var1 /* : Template */;
-var1 = c_tools__CCompilationUnit__header_custom(self);
 var = var1;
 RET_LABEL:;
 return var;
 }
-/* method c_tools#CCompilationUnit#header_custom= for (self: CCompilationUnit, Template) */
-void c_tools__CCompilationUnit__header_custom_61d(val* self, val* p0) {
-self->attrs[COLOR_c_tools__CCompilationUnit___64dheader_custom].val = p0; /* @header_custom on <self:CCompilationUnit> */
-RET_LABEL:;
-}
-/* method c_tools#CCompilationUnit#header_custom= for (self: Object, Template) */
-void VIRTUAL_c_tools__CCompilationUnit__header_custom_61d(val* self, val* p0) {
-c_tools__CCompilationUnit__header_custom_61d(self, p0);
-RET_LABEL:;
-}
-/* method c_tools#CCompilationUnit#header_c_types for (self: CCompilationUnit): Template */
-val* c_tools__CCompilationUnit__header_c_types(val* self) {
-val* var /* : Template */;
-val* var1 /* : Template */;
-var1 = self->attrs[COLOR_c_tools__CCompilationUnit___64dheader_c_types].val; /* @header_c_types on <self:CCompilationUnit> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @header_c_types");
-fprintf(stderr, " (%s:%d)\n", "src/c_tools.nit", 31);
-show_backtrace(1);
-}
+/* method c_tools#ExternFile#add_to_jar for (self: ExternFile): Bool */
+short int c_tools__ExternFile__add_to_jar(val* self) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+var1 = 0;
 var = var1;
+goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method c_tools#CCompilationUnit#header_c_types for (self: Object): Template */
-val* VIRTUAL_c_tools__CCompilationUnit__header_c_types(val* self) {
-val* var /* : Template */;
-val* var1 /* : Template */;
-var1 = c_tools__CCompilationUnit__header_c_types(self);
+/* method c_tools#ExternFile#add_to_jar for (self: Object): Bool */
+short int VIRTUAL_c_tools__ExternFile__add_to_jar(val* self) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+var1 = c_tools__ExternFile__add_to_jar(self);
 var = var1;
 RET_LABEL:;
 return var;
 }
-/* method c_tools#CCompilationUnit#header_c_types= for (self: CCompilationUnit, Template) */
-void c_tools__CCompilationUnit__header_c_types_61d(val* self, val* p0) {
-self->attrs[COLOR_c_tools__CCompilationUnit___64dheader_c_types].val = p0; /* @header_c_types on <self:CCompilationUnit> */
+/* method c_tools#ExternFile#init for (self: ExternFile, String) */
+void c_tools__ExternFile__init(val* self, val* p0) {
+self->attrs[COLOR_c_tools__ExternFile___filename].val = p0; /* _filename on <self:ExternFile> */
 RET_LABEL:;
 }
-/* method c_tools#CCompilationUnit#header_c_types= for (self: Object, Template) */
-void VIRTUAL_c_tools__CCompilationUnit__header_c_types_61d(val* self, val* p0) {
-c_tools__CCompilationUnit__header_c_types_61d(self, p0);
+/* method c_tools#ExternFile#init for (self: Object, String) */
+void VIRTUAL_c_tools__ExternFile__init(val* self, val* p0) {
+{ /* Inline c_tools#ExternFile#init (self,p0) on <self:Object(ExternFile)> */
+self->attrs[COLOR_c_tools__ExternFile___filename].val = p0; /* _filename on <self:Object(ExternFile)> */
+RET_LABEL1:(void)0;
+}
 RET_LABEL:;
 }
-/* method c_tools#CCompilationUnit#header_decl for (self: CCompilationUnit): Template */
-val* c_tools__CCompilationUnit__header_decl(val* self) {
-val* var /* : Template */;
-val* var1 /* : Template */;
-var1 = self->attrs[COLOR_c_tools__CCompilationUnit___64dheader_decl].val; /* @header_decl on <self:CCompilationUnit> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @header_decl");
-fprintf(stderr, " (%s:%d)\n", "src/c_tools.nit", 34);
-show_backtrace(1);
+/* method c_tools#ExternCFile#init for (self: ExternCFile, String, String) */
+void c_tools__ExternCFile__init(val* self, val* p0, val* p1) {
+val* var_filename /* var filename: String */;
+val* var_cflags /* var cflags: String */;
+var_filename = p0;
+var_cflags = p1;
+{
+{ /* Inline c_tools#ExternFile#init (self,var_filename) on <self:ExternCFile> */
+self->attrs[COLOR_c_tools__ExternFile___filename].val = var_filename; /* _filename on <self:ExternCFile> */
+RET_LABEL1:(void)0;
 }
-var = var1;
-RET_LABEL:;
-return var;
 }
-/* method c_tools#CCompilationUnit#header_decl for (self: Object): Template */
-val* VIRTUAL_c_tools__CCompilationUnit__header_decl(val* self) {
-val* var /* : Template */;
-val* var1 /* : Template */;
-var1 = c_tools__CCompilationUnit__header_decl(self);
-var = var1;
-RET_LABEL:;
-return var;
+{
+{ /* Inline c_tools#ExternCFile#cflags= (self,var_cflags) on <self:ExternCFile> */
+self->attrs[COLOR_c_tools__ExternCFile___cflags].val = var_cflags; /* _cflags on <self:ExternCFile> */
+RET_LABEL2:(void)0;
+}
 }
-/* method c_tools#CCompilationUnit#header_decl= for (self: CCompilationUnit, Template) */
-void c_tools__CCompilationUnit__header_decl_61d(val* self, val* p0) {
-self->attrs[COLOR_c_tools__CCompilationUnit___64dheader_decl].val = p0; /* @header_decl on <self:CCompilationUnit> */
 RET_LABEL:;
 }
-/* method c_tools#CCompilationUnit#header_decl= for (self: Object, Template) */
-void VIRTUAL_c_tools__CCompilationUnit__header_decl_61d(val* self, val* p0) {
-c_tools__CCompilationUnit__header_decl_61d(self, p0);
+/* method c_tools#ExternCFile#init for (self: Object, String, String) */
+void VIRTUAL_c_tools__ExternCFile__init(val* self, val* p0, val* p1) {
+c_tools__ExternCFile__init(self, p0, p1); /* Direct call c_tools#ExternCFile#init on <self:Object(ExternCFile)>*/
 RET_LABEL:;
 }
-/* method c_tools#CCompilationUnit#body_decl for (self: CCompilationUnit): Template */
-val* c_tools__CCompilationUnit__body_decl(val* self) {
-val* var /* : Template */;
-val* var1 /* : Template */;
-var1 = self->attrs[COLOR_c_tools__CCompilationUnit___64dbody_decl].val; /* @body_decl on <self:CCompilationUnit> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @body_decl");
-fprintf(stderr, " (%s:%d)\n", "src/c_tools.nit", 37);
+/* method c_tools#ExternCFile#cflags for (self: ExternCFile): String */
+val* c_tools__ExternCFile__cflags(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+var1 = self->attrs[COLOR_c_tools__ExternCFile___cflags].val; /* _cflags on <self:ExternCFile> */
+if (unlikely(var1 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cflags");
+PRINT_ERROR(" (%s:%d)\n", "src/c_tools.nit", 131);
 show_backtrace(1);
 }
 var = var1;
 RET_LABEL:;
 return var;
 }
-/* method c_tools#CCompilationUnit#body_decl for (self: Object): Template */
-val* VIRTUAL_c_tools__CCompilationUnit__body_decl(val* self) {
-val* var /* : Template */;
-val* var1 /* : Template */;
-var1 = c_tools__CCompilationUnit__body_decl(self);
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method c_tools#CCompilationUnit#body_decl= for (self: CCompilationUnit, Template) */
-void c_tools__CCompilationUnit__body_decl_61d(val* self, val* p0) {
-self->attrs[COLOR_c_tools__CCompilationUnit___64dbody_decl].val = p0; /* @body_decl on <self:CCompilationUnit> */
-RET_LABEL:;
-}
-/* method c_tools#CCompilationUnit#body_decl= for (self: Object, Template) */
-void VIRTUAL_c_tools__CCompilationUnit__body_decl_61d(val* self, val* p0) {
-c_tools__CCompilationUnit__body_decl_61d(self, p0);
-RET_LABEL:;
-}
-/* method c_tools#CCompilationUnit#body_custom for (self: CCompilationUnit): Template */
-val* c_tools__CCompilationUnit__body_custom(val* self) {
-val* var /* : Template */;
-val* var1 /* : Template */;
-var1 = self->attrs[COLOR_c_tools__CCompilationUnit___64dbody_custom].val; /* @body_custom on <self:CCompilationUnit> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @body_custom");
-fprintf(stderr, " (%s:%d)\n", "src/c_tools.nit", 41);
+/* method c_tools#ExternCFile#cflags for (self: Object): String */
+val* VIRTUAL_c_tools__ExternCFile__cflags(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+val* var3 /* : String */;
+{ /* Inline c_tools#ExternCFile#cflags (self) on <self:Object(ExternCFile)> */
+var3 = self->attrs[COLOR_c_tools__ExternCFile___cflags].val; /* _cflags on <self:Object(ExternCFile)> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cflags");
+PRINT_ERROR(" (%s:%d)\n", "src/c_tools.nit", 131);
 show_backtrace(1);
 }
-var = var1;
-RET_LABEL:;
-return var;
+var1 = var3;
+RET_LABEL2:(void)0;
 }
-/* method c_tools#CCompilationUnit#body_custom for (self: Object): Template */
-val* VIRTUAL_c_tools__CCompilationUnit__body_custom(val* self) {
-val* var /* : Template */;
-val* var1 /* : Template */;
-var1 = c_tools__CCompilationUnit__body_custom(self);
 var = var1;
 RET_LABEL:;
 return var;
 }
-/* method c_tools#CCompilationUnit#body_custom= for (self: CCompilationUnit, Template) */
-void c_tools__CCompilationUnit__body_custom_61d(val* self, val* p0) {
-self->attrs[COLOR_c_tools__CCompilationUnit___64dbody_custom].val = p0; /* @body_custom on <self:CCompilationUnit> */
+/* method c_tools#ExternCFile#cflags= for (self: ExternCFile, String) */
+void c_tools__ExternCFile__cflags_61d(val* self, val* p0) {
+self->attrs[COLOR_c_tools__ExternCFile___cflags].val = p0; /* _cflags on <self:ExternCFile> */
 RET_LABEL:;
 }
-/* method c_tools#CCompilationUnit#body_custom= for (self: Object, Template) */
-void VIRTUAL_c_tools__CCompilationUnit__body_custom_61d(val* self, val* p0) {
-c_tools__CCompilationUnit__body_custom_61d(self, p0);
+/* method c_tools#ExternCFile#cflags= for (self: Object, String) */
+void VIRTUAL_c_tools__ExternCFile__cflags_61d(val* self, val* p0) {
+{ /* Inline c_tools#ExternCFile#cflags= (self,p0) on <self:Object(ExternCFile)> */
+self->attrs[COLOR_c_tools__ExternCFile___cflags].val = p0; /* _cflags on <self:Object(ExternCFile)> */
+RET_LABEL1:(void)0;
+}
 RET_LABEL:;
 }
-/* method c_tools#CCompilationUnit#body_impl for (self: CCompilationUnit): Template */
-val* c_tools__CCompilationUnit__body_impl(val* self) {
-val* var /* : Template */;
-val* var1 /* : Template */;
-var1 = self->attrs[COLOR_c_tools__CCompilationUnit___64dbody_impl].val; /* @body_impl on <self:CCompilationUnit> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @body_impl");
-fprintf(stderr, " (%s:%d)\n", "src/c_tools.nit", 44);
+/* method c_tools#ExternCFile#hash for (self: ExternCFile): Int */
+long c_tools__ExternCFile__hash(val* self) {
+long var /* : Int */;
+val* var1 /* : String */;
+val* var3 /* : String */;
+long var4 /* : Int */;
+{
+{ /* Inline c_tools#ExternFile#filename (self) on <self:ExternCFile> */
+var3 = self->attrs[COLOR_c_tools__ExternFile___filename].val; /* _filename on <self:ExternCFile> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filename");
+PRINT_ERROR(" (%s:%d)\n", "src/c_tools.nit", 104);
 show_backtrace(1);
 }
-var = var1;
-RET_LABEL:;
-return var;
+var1 = var3;
+RET_LABEL2:(void)0;
 }
-/* method c_tools#CCompilationUnit#body_impl for (self: Object): Template */
-val* VIRTUAL_c_tools__CCompilationUnit__body_impl(val* self) {
-val* var /* : Template */;
-val* var1 /* : Template */;
-var1 = c_tools__CCompilationUnit__body_impl(self);
-var = var1;
-RET_LABEL:;
-return var;
 }
-/* method c_tools#CCompilationUnit#body_impl= for (self: CCompilationUnit, Template) */
-void c_tools__CCompilationUnit__body_impl_61d(val* self, val* p0) {
-self->attrs[COLOR_c_tools__CCompilationUnit___64dbody_impl].val = p0; /* @body_impl on <self:CCompilationUnit> */
-RET_LABEL:;
+{
+var4 = string__FlatString__hash(var1);
 }
-/* method c_tools#CCompilationUnit#body_impl= for (self: Object, Template) */
-void VIRTUAL_c_tools__CCompilationUnit__body_impl_61d(val* self, val* p0) {
-c_tools__CCompilationUnit__body_impl_61d(self, p0);
-RET_LABEL:;
-}
-/* method c_tools#CCompilationUnit#files for (self: CCompilationUnit): Array[String] */
-val* c_tools__CCompilationUnit__files(val* self) {
-val* var /* : Array[String] */;
-val* var1 /* : Array[String] */;
-var1 = self->attrs[COLOR_c_tools__CCompilationUnit___64dfiles].val; /* @files on <self:CCompilationUnit> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @files");
-fprintf(stderr, " (%s:%d)\n", "src/c_tools.nit", 47);
-show_backtrace(1);
-}
-var = var1;
+var = var4;
+goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method c_tools#CCompilationUnit#files for (self: Object): Array[String] */
-val* VIRTUAL_c_tools__CCompilationUnit__files(val* self) {
-val* var /* : Array[String] */;
-val* var1 /* : Array[String] */;
-var1 = c_tools__CCompilationUnit__files(self);
+/* method c_tools#ExternCFile#hash for (self: Object): Int */
+long VIRTUAL_c_tools__ExternCFile__hash(val* self) {
+long var /* : Int */;
+long var1 /* : Int */;
+var1 = c_tools__ExternCFile__hash(self);
 var = var1;
 RET_LABEL:;
 return var;
 }
-/* method c_tools#CCompilationUnit#files= for (self: CCompilationUnit, Array[String]) */
-void c_tools__CCompilationUnit__files_61d(val* self, val* p0) {
-self->attrs[COLOR_c_tools__CCompilationUnit___64dfiles].val = p0; /* @files on <self:CCompilationUnit> */
-RET_LABEL:;
-}
-/* method c_tools#CCompilationUnit#files= for (self: Object, Array[String]) */
-void VIRTUAL_c_tools__CCompilationUnit__files_61d(val* self, val* p0) {
-c_tools__CCompilationUnit__files_61d(self, p0);
-RET_LABEL:;
-}
-/* method c_tools#CCompilationUnit#add_local_function for (self: CCompilationUnit, CFunction) */
-void c_tools__CCompilationUnit__add_local_function(val* self, val* p0) {
-val* var_efc /* var efc: CFunction */;
-val* var /* : Template */;
-val* var1 /* : String */;
-static val* varonce;
-val* var2 /* : String */;
-char* var3 /* : NativeString */;
-long var4 /* : Int */;
-val* var5 /* : String */;
-val* var6 /* : Array[Object] */;
-long var7 /* : Int */;
-val* var8 /* : NativeArray[Object] */;
-val* var9 /* : String */;
-val* var10 /* : Template */;
-static val* varonce11;
-val* var12 /* : String */;
-char* var13 /* : NativeString */;
-long var14 /* : Int */;
-val* var15 /* : String */;
-val* var16 /* : Template */;
-val* var17 /* : Template */;
-var_efc = p0;
-var = ((val* (*)(val*))(self->class->vft[COLOR_c_tools__CCompilationUnit__body_decl]))(self) /* body_decl on <self:CCompilationUnit>*/;
-var1 = ((val* (*)(val*))(var_efc->class->vft[COLOR_c_tools__CFunction__signature]))(var_efc) /* signature on <var_efc:CFunction>*/;
-if (varonce) {
-var2 = varonce;
-} else {
-var3 = ";\n";
-var4 = 2;
-var5 = string__NativeString__to_s_with_length(var3, var4);
-var2 = var5;
-varonce = var2;
-}
-var6 = NEW_array__Array(&type_array__Arraykernel__Object);
-{ /* var6 = array_instance Array[Object] */
-var7 = 2;
-var8 = NEW_array__NativeArray(var7, &type_array__NativeArraykernel__Object);
-((struct instance_array__NativeArray*)var8)->values[0] = (val*) var1;
-((struct instance_array__NativeArray*)var8)->values[1] = (val*) var2;
-((void (*)(val*, val*, long))(var6->class->vft[COLOR_array__Array__with_native]))(var6, var8, var7) /* with_native on <var6:Array[Object]>*/;
-}
-var9 = ((val* (*)(val*))(var6->class->vft[COLOR_string__Object__to_s]))(var6) /* to_s on <var6:Array[Object]>*/;
-((void (*)(val*, val*))(var->class->vft[COLOR_template__Template__add]))(var, var9) /* add on <var:Template>*/;
-var10 = ((val* (*)(val*))(self->class->vft[COLOR_c_tools__CCompilationUnit__body_impl]))(self) /* body_impl on <self:CCompilationUnit>*/;
-if (varonce11) {
-var12 = varonce11;
-} else {
-var13 = "\n";
-var14 = 1;
-var15 = string__NativeString__to_s_with_length(var13, var14);
-var12 = var15;
-varonce11 = var12;
-}
-((void (*)(val*, val*))(var10->class->vft[COLOR_template__Template__add]))(var10, var12) /* add on <var10:Template>*/;
-var16 = ((val* (*)(val*))(self->class->vft[COLOR_c_tools__CCompilationUnit__body_impl]))(self) /* body_impl on <self:CCompilationUnit>*/;
-var17 = ((val* (*)(val*))(var_efc->class->vft[COLOR_c_tools__CFunction__to_writer]))(var_efc) /* to_writer on <var_efc:CFunction>*/;
-((void (*)(val*, val*))(var16->class->vft[COLOR_template__Template__add]))(var16, var17) /* add on <var16:Template>*/;
-RET_LABEL:;
-}
-/* method c_tools#CCompilationUnit#add_local_function for (self: Object, CFunction) */
-void VIRTUAL_c_tools__CCompilationUnit__add_local_function(val* self, val* p0) {
-c_tools__CCompilationUnit__add_local_function(self, p0);
-RET_LABEL:;
-}
-/* method c_tools#CCompilationUnit#add_exported_function for (self: CCompilationUnit, CFunction) */
-void c_tools__CCompilationUnit__add_exported_function(val* self, val* p0) {
-val* var_efc /* var efc: CFunction */;
-val* var /* : Template */;
-val* var1 /* : String */;
-static val* varonce;
-val* var2 /* : String */;
-char* var3 /* : NativeString */;
-long var4 /* : Int */;
+/* method c_tools#ExternCFile#== for (self: ExternCFile, nullable Object): Bool */
+short int c_tools__ExternCFile___61d_61d(val* self, val* p0) {
+short int var /* : Bool */;
+val* var_o /* var o: nullable Object */;
+short int var1 /* : Bool */;
+short int var2 /* : Bool */;
+int cltype;
+int idtype;
+short int var_ /* var : Bool */;
+val* var3 /* : String */;
 val* var5 /* : String */;
-val* var6 /* : Array[Object] */;
-long var7 /* : Int */;
-val* var8 /* : NativeArray[Object] */;
-val* var9 /* : String */;
-val* var10 /* : Template */;
-static val* varonce11;
-val* var12 /* : String */;
-char* var13 /* : NativeString */;
-long var14 /* : Int */;
-val* var15 /* : String */;
-val* var16 /* : Template */;
-val* var17 /* : Template */;
-var_efc = p0;
-var = ((val* (*)(val*))(self->class->vft[COLOR_c_tools__CCompilationUnit__header_decl]))(self) /* header_decl on <self:CCompilationUnit>*/;
-var1 = ((val* (*)(val*))(var_efc->class->vft[COLOR_c_tools__CFunction__signature]))(var_efc) /* signature on <var_efc:CFunction>*/;
-if (varonce) {
-var2 = varonce;
+val* var6 /* : String */;
+val* var8 /* : String */;
+short int var9 /* : Bool */;
+short int var10 /* : Bool */;
+var_o = p0;
+/* <var_o:nullable Object> isa ExternCFile */
+cltype = type_c_tools__ExternCFile.color;
+idtype = type_c_tools__ExternCFile.id;
+if(var_o == NULL) {
+var2 = 0;
 } else {
-var3 = ";\n";
-var4 = 2;
-var5 = string__NativeString__to_s_with_length(var3, var4);
-var2 = var5;
-varonce = var2;
-}
-var6 = NEW_array__Array(&type_array__Arraykernel__Object);
-{ /* var6 = array_instance Array[Object] */
-var7 = 2;
-var8 = NEW_array__NativeArray(var7, &type_array__NativeArraykernel__Object);
-((struct instance_array__NativeArray*)var8)->values[0] = (val*) var1;
-((struct instance_array__NativeArray*)var8)->values[1] = (val*) var2;
-((void (*)(val*, val*, long))(var6->class->vft[COLOR_array__Array__with_native]))(var6, var8, var7) /* with_native on <var6:Array[Object]>*/;
-}
-var9 = ((val* (*)(val*))(var6->class->vft[COLOR_string__Object__to_s]))(var6) /* to_s on <var6:Array[Object]>*/;
-((void (*)(val*, val*))(var->class->vft[COLOR_template__Template__add]))(var, var9) /* add on <var:Template>*/;
-var10 = ((val* (*)(val*))(self->class->vft[COLOR_c_tools__CCompilationUnit__body_impl]))(self) /* body_impl on <self:CCompilationUnit>*/;
-if (varonce11) {
-var12 = varonce11;
+if(cltype >= var_o->type->table_size) {
+var2 = 0;
 } else {
-var13 = "\n";
-var14 = 1;
-var15 = string__NativeString__to_s_with_length(var13, var14);
-var12 = var15;
-varonce11 = var12;
-}
-((void (*)(val*, val*))(var10->class->vft[COLOR_template__Template__add]))(var10, var12) /* add on <var10:Template>*/;
-var16 = ((val* (*)(val*))(self->class->vft[COLOR_c_tools__CCompilationUnit__body_impl]))(self) /* body_impl on <self:CCompilationUnit>*/;
-var17 = ((val* (*)(val*))(var_efc->class->vft[COLOR_c_tools__CFunction__to_writer]))(var_efc) /* to_writer on <var_efc:CFunction>*/;
-((void (*)(val*, val*))(var16->class->vft[COLOR_template__Template__add]))(var16, var17) /* add on <var16:Template>*/;
-RET_LABEL:;
-}
-/* method c_tools#CCompilationUnit#add_exported_function for (self: Object, CFunction) */
-void VIRTUAL_c_tools__CCompilationUnit__add_exported_function(val* self, val* p0) {
-c_tools__CCompilationUnit__add_exported_function(self, p0);
-RET_LABEL:;
-}
-/* method c_tools#CCompilationUnit#compile_header_core for (self: CCompilationUnit, OStream) */
-void c_tools__CCompilationUnit__compile_header_core(val* self, val* p0) {
-val* var_stream /* var stream: OStream */;
-val* var /* : Template */;
-val* var1 /* : Template */;
-val* var2 /* : Template */;
-val* var3 /* : Template */;
-var_stream = p0;
-var = ((val* (*)(val*))(self->class->vft[COLOR_c_tools__CCompilationUnit__header_c_base]))(self) /* header_c_base on <self:CCompilationUnit>*/;
-((void (*)(val*, val*))(var->class->vft[COLOR_stream__Streamable__write_to]))(var, var_stream) /* write_to on <var:Template>*/;
-var1 = ((val* (*)(val*))(self->class->vft[COLOR_c_tools__CCompilationUnit__header_custom]))(self) /* header_custom on <self:CCompilationUnit>*/;
-((void (*)(val*, val*))(var1->class->vft[COLOR_stream__Streamable__write_to]))(var1, var_stream) /* write_to on <var1:Template>*/;
-var2 = ((val* (*)(val*))(self->class->vft[COLOR_c_tools__CCompilationUnit__header_c_types]))(self) /* header_c_types on <self:CCompilationUnit>*/;
-((void (*)(val*, val*))(var2->class->vft[COLOR_stream__Streamable__write_to]))(var2, var_stream) /* write_to on <var2:Template>*/;
-var3 = ((val* (*)(val*))(self->class->vft[COLOR_c_tools__CCompilationUnit__header_decl]))(self) /* header_decl on <self:CCompilationUnit>*/;
-((void (*)(val*, val*))(var3->class->vft[COLOR_stream__Streamable__write_to]))(var3, var_stream) /* write_to on <var3:Template>*/;
-RET_LABEL:;
+var2 = var_o->type->type_table[cltype] == idtype;
 }
-/* method c_tools#CCompilationUnit#compile_header_core for (self: Object, OStream) */
-void VIRTUAL_c_tools__CCompilationUnit__compile_header_core(val* self, val* p0) {
-c_tools__CCompilationUnit__compile_header_core(self, p0);
-RET_LABEL:;
 }
-/* method c_tools#CCompilationUnit#compile_body_core for (self: CCompilationUnit, OStream) */
-void c_tools__CCompilationUnit__compile_body_core(val* self, val* p0) {
-val* var_stream /* var stream: OStream */;
-val* var /* : Template */;
-val* var1 /* : Template */;
-val* var2 /* : Template */;
-var_stream = p0;
-var = ((val* (*)(val*))(self->class->vft[COLOR_c_tools__CCompilationUnit__body_decl]))(self) /* body_decl on <self:CCompilationUnit>*/;
-((void (*)(val*, val*))(var->class->vft[COLOR_stream__Streamable__write_to]))(var, var_stream) /* write_to on <var:Template>*/;
-var1 = ((val* (*)(val*))(self->class->vft[COLOR_c_tools__CCompilationUnit__body_custom]))(self) /* body_custom on <self:CCompilationUnit>*/;
-((void (*)(val*, val*))(var1->class->vft[COLOR_stream__Streamable__write_to]))(var1, var_stream) /* write_to on <var1:Template>*/;
-var2 = ((val* (*)(val*))(self->class->vft[COLOR_c_tools__CCompilationUnit__body_impl]))(self) /* body_impl on <self:CCompilationUnit>*/;
-((void (*)(val*, val*))(var2->class->vft[COLOR_stream__Streamable__write_to]))(var2, var_stream) /* write_to on <var2:Template>*/;
-RET_LABEL:;
-}
-/* method c_tools#CCompilationUnit#compile_body_core for (self: Object, OStream) */
-void VIRTUAL_c_tools__CCompilationUnit__compile_body_core(val* self, val* p0) {
-c_tools__CCompilationUnit__compile_body_core(self, p0);
-RET_LABEL:;
+var_ = var2;
+if (var2){
+{
+{ /* Inline c_tools#ExternFile#filename (self) on <self:ExternCFile> */
+var5 = self->attrs[COLOR_c_tools__ExternFile___filename].val; /* _filename on <self:ExternCFile> */
+if (unlikely(var5 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filename");
+PRINT_ERROR(" (%s:%d)\n", "src/c_tools.nit", 104);
+show_backtrace(1);
 }
-/* method c_tools#CCompilationUnit#init for (self: CCompilationUnit) */
-void c_tools__CCompilationUnit__init(val* self) {
-RET_LABEL:;
+var3 = var5;
+RET_LABEL4:(void)0;
 }
-/* method c_tools#CCompilationUnit#init for (self: Object) */
-void VIRTUAL_c_tools__CCompilationUnit__init(val* self) {
-c_tools__CCompilationUnit__init(self);
-RET_LABEL:;
 }
-/* method c_tools#CFunction#signature for (self: CFunction): String */
-val* c_tools__CFunction__signature(val* self) {
-val* var /* : String */;
-val* var1 /* : String */;
-var1 = self->attrs[COLOR_c_tools__CFunction___64dsignature].val; /* @signature on <self:CFunction> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @signature");
-fprintf(stderr, " (%s:%d)\n", "src/c_tools.nit", 82);
+{
+{ /* Inline c_tools#ExternFile#filename (var_o) on <var_o:nullable Object(ExternCFile)> */
+var8 = var_o->attrs[COLOR_c_tools__ExternFile___filename].val; /* _filename on <var_o:nullable Object(ExternCFile)> */
+if (unlikely(var8 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filename");
+PRINT_ERROR(" (%s:%d)\n", "src/c_tools.nit", 104);
 show_backtrace(1);
 }
-var = var1;
-RET_LABEL:;
-return var;
-}
-/* method c_tools#CFunction#signature for (self: Object): String */
-val* VIRTUAL_c_tools__CFunction__signature(val* self) {
-val* var /* : String */;
-val* var1 /* : String */;
-var1 = c_tools__CFunction__signature(self);
-var = var1;
-RET_LABEL:;
-return var;
+var6 = var8;
+RET_LABEL7:(void)0;
 }
-/* method c_tools#CFunction#signature= for (self: CFunction, String) */
-void c_tools__CFunction__signature_61d(val* self, val* p0) {
-self->attrs[COLOR_c_tools__CFunction___64dsignature].val = p0; /* @signature on <self:CFunction> */
-RET_LABEL:;
 }
-/* method c_tools#CFunction#signature= for (self: Object, String) */
-void VIRTUAL_c_tools__CFunction__signature_61d(val* self, val* p0) {
-c_tools__CFunction__signature_61d(self, p0);
-RET_LABEL:;
+{
+var10 = string__FlatString___61d_61d(var3, var6);
+var9 = var10;
 }
-/* method c_tools#CFunction#decls for (self: CFunction): Template */
-val* c_tools__CFunction__decls(val* self) {
-val* var /* : Template */;
-val* var1 /* : Template */;
-var1 = self->attrs[COLOR_c_tools__CFunction___64ddecls].val; /* @decls on <self:CFunction> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @decls");
-fprintf(stderr, " (%s:%d)\n", "src/c_tools.nit", 84);
-show_backtrace(1);
+var1 = var9;
+} else {
+var1 = var_;
 }
 var = var1;
+goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method c_tools#CFunction#decls for (self: Object): Template */
-val* VIRTUAL_c_tools__CFunction__decls(val* self) {
-val* var /* : Template */;
-val* var1 /* : Template */;
-var1 = c_tools__CFunction__decls(self);
+/* method c_tools#ExternCFile#== for (self: Object, nullable Object): Bool */
+short int VIRTUAL_c_tools__ExternCFile___61d_61d(val* self, val* p0) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+var1 = c_tools__ExternCFile___61d_61d(self, p0);
 var = var1;
 RET_LABEL:;
 return var;
 }
-/* method c_tools#CFunction#decls= for (self: CFunction, Template) */
-void c_tools__CFunction__decls_61d(val* self, val* p0) {
-self->attrs[COLOR_c_tools__CFunction___64ddecls].val = p0; /* @decls on <self:CFunction> */
-RET_LABEL:;
+/* method c_tools#ExternCFile#makefile_rule_name for (self: ExternCFile): String */
+val* c_tools__ExternCFile__makefile_rule_name(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+val* var3 /* : String */;
+static val* varonce;
+val* var4 /* : String */;
+char* var5 /* : NativeString */;
+long var6 /* : Int */;
+val* var7 /* : FlatString */;
+val* var8 /* : String */;
+val* var_basename /* var basename: String */;
+static val* varonce9;
+val* var10 /* : String */;
+char* var11 /* : NativeString */;
+long var12 /* : Int */;
+val* var13 /* : FlatString */;
+val* var14 /* : Array[Object] */;
+long var15 /* : Int */;
+val* var16 /* : NativeArray[Object] */;
+val* var17 /* : String */;
+val* var_res /* var res: String */;
+{
+{ /* Inline c_tools#ExternFile#filename (self) on <self:ExternCFile> */
+var3 = self->attrs[COLOR_c_tools__ExternFile___filename].val; /* _filename on <self:ExternCFile> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filename");
+PRINT_ERROR(" (%s:%d)\n", "src/c_tools.nit", 104);
+show_backtrace(1);
 }
-/* method c_tools#CFunction#decls= for (self: Object, Template) */
-void VIRTUAL_c_tools__CFunction__decls_61d(val* self, val* p0) {
-c_tools__CFunction__decls_61d(self, p0);
-RET_LABEL:;
+var1 = var3;
+RET_LABEL2:(void)0;
 }
-/* method c_tools#CFunction#exprs for (self: CFunction): Template */
-val* c_tools__CFunction__exprs(val* self) {
-val* var /* : Template */;
-val* var1 /* : Template */;
-var1 = self->attrs[COLOR_c_tools__CFunction___64dexprs].val; /* @exprs on <self:CFunction> */
-if (var1 == NULL) {
-fprintf(stderr, "Runtime error: %s", "Uninitialized attribute @exprs");
-fprintf(stderr, " (%s:%d)\n", "src/c_tools.nit", 85);
-show_backtrace(1);
 }
-var = var1;
+if (varonce) {
+var4 = varonce;
+} else {
+var5 = ".c";
+var6 = 2;
+var7 = string__NativeString__to_s_with_length(var5, var6);
+var4 = var7;
+varonce = var4;
+}
+{
+var8 = file__String__basename(var1, var4);
+}
+var_basename = var8;
+if (varonce9) {
+var10 = varonce9;
+} else {
+var11 = ".extern.o";
+var12 = 9;
+var13 = string__NativeString__to_s_with_length(var11, var12);
+var10 = var13;
+varonce9 = var10;
+}
+var14 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var14 = array_instance Array[Object] */
+var15 = 2;
+var16 = NEW_array__NativeArray(var15, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var16)->values[0] = (val*) var_basename;
+((struct instance_array__NativeArray*)var16)->values[1] = (val*) var10;
+{
+((void (*)(val*, val*, long))(var14->class->vft[COLOR_array__Array__with_native]))(var14, var16, var15) /* with_native on <var14:Array[Object]>*/;
+}
+}
+{
+var17 = ((val* (*)(val*))(var14->class->vft[COLOR_string__Object__to_s]))(var14) /* to_s on <var14:Array[Object]>*/;
+}
+var_res = var17;
+var = var_res;
+goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method c_tools#CFunction#exprs for (self: Object): Template */
-val* VIRTUAL_c_tools__CFunction__exprs(val* self) {
-val* var /* : Template */;
-val* var1 /* : Template */;
-var1 = c_tools__CFunction__exprs(self);
+/* method c_tools#ExternCFile#makefile_rule_name for (self: Object): String */
+val* VIRTUAL_c_tools__ExternCFile__makefile_rule_name(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+var1 = c_tools__ExternCFile__makefile_rule_name(self);
 var = var1;
 RET_LABEL:;
 return var;
 }
-/* method c_tools#CFunction#exprs= for (self: CFunction, Template) */
-void c_tools__CFunction__exprs_61d(val* self, val* p0) {
-self->attrs[COLOR_c_tools__CFunction___64dexprs].val = p0; /* @exprs on <self:CFunction> */
-RET_LABEL:;
-}
-/* method c_tools#CFunction#exprs= for (self: Object, Template) */
-void VIRTUAL_c_tools__CFunction__exprs_61d(val* self, val* p0) {
-c_tools__CFunction__exprs_61d(self, p0);
-RET_LABEL:;
-}
-/* method c_tools#CFunction#to_writer for (self: CFunction): Template */
-val* c_tools__CFunction__to_writer(val* self) {
-val* var /* : Template */;
-val* var1 /* : Template */;
-val* var_w /* var w: Template */;
-val* var2 /* : String */;
-static val* varonce;
+/* method c_tools#ExternCFile#makefile_rule_content for (self: ExternCFile): String */
+val* c_tools__ExternCFile__makefile_rule_content(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
 val* var3 /* : String */;
-char* var4 /* : NativeString */;
-long var5 /* : Int */;
-val* var6 /* : String */;
-val* var7 /* : Template */;
-static val* varonce8;
+static val* varonce;
+val* var4 /* : String */;
+char* var5 /* : NativeString */;
+long var6 /* : Int */;
+val* var7 /* : FlatString */;
+val* var8 /* : String */;
+val* var_ff /* var ff: String */;
 val* var9 /* : String */;
-char* var10 /* : NativeString */;
-long var11 /* : Int */;
-val* var12 /* : String */;
-val* var13 /* : Template */;
-static val* varonce14;
+val* var_o /* var o: String */;
+static val* varonce10;
+val* var11 /* : String */;
+char* var12 /* : NativeString */;
+long var13 /* : Int */;
+val* var14 /* : FlatString */;
 val* var15 /* : String */;
-char* var16 /* : NativeString */;
-long var17 /* : Int */;
-val* var18 /* : String */;
-var1 = NEW_template__Template(&type_template__Template);
-((void (*)(val*))(var1->class->vft[COLOR_template__Template__init]))(var1) /* init on <var1:Template>*/;
-var_w = var1;
-var2 = ((val* (*)(val*))(self->class->vft[COLOR_c_tools__CFunction__signature]))(self) /* signature on <self:CFunction>*/;
-((void (*)(val*, val*))(var_w->class->vft[COLOR_template__Template__add]))(var_w, var2) /* add on <var_w:Template>*/;
+val* var17 /* : String */;
+static val* varonce18;
+val* var19 /* : String */;
+char* var20 /* : NativeString */;
+long var21 /* : Int */;
+val* var22 /* : FlatString */;
+static val* varonce23;
+val* var24 /* : String */;
+char* var25 /* : NativeString */;
+long var26 /* : Int */;
+val* var27 /* : FlatString */;
+val* var28 /* : Array[Object] */;
+long var29 /* : Int */;
+val* var30 /* : NativeArray[Object] */;
+val* var31 /* : String */;
+{
+{ /* Inline c_tools#ExternFile#filename (self) on <self:ExternCFile> */
+var3 = self->attrs[COLOR_c_tools__ExternFile___filename].val; /* _filename on <self:ExternCFile> */
+if (unlikely(var3 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _filename");
+PRINT_ERROR(" (%s:%d)\n", "src/c_tools.nit", 104);
+show_backtrace(1);
+}
+var1 = var3;
+RET_LABEL2:(void)0;
+}
+}
 if (varonce) {
-var3 = varonce;
+var4 = varonce;
 } else {
-var4 = "\n{\n";
-var5 = 3;
-var6 = string__NativeString__to_s_with_length(var4, var5);
-var3 = var6;
-varonce = var3;
-}
-((void (*)(val*, val*))(var_w->class->vft[COLOR_template__Template__add]))(var_w, var3) /* add on <var_w:Template>*/;
-var7 = ((val* (*)(val*))(self->class->vft[COLOR_c_tools__CFunction__decls]))(self) /* decls on <self:CFunction>*/;
-((void (*)(val*, val*))(var_w->class->vft[COLOR_template__Template__add]))(var_w, var7) /* add on <var_w:Template>*/;
-if (varonce8) {
-var9 = varonce8;
+var5 = "";
+var6 = 0;
+var7 = string__NativeString__to_s_with_length(var5, var6);
+var4 = var7;
+varonce = var4;
+}
+{
+var8 = file__String__basename(var1, var4);
+}
+var_ff = var8;
+{
+var9 = c_tools__ExternCFile__makefile_rule_name(self);
+}
+var_o = var9;
+if (varonce10) {
+var11 = varonce10;
 } else {
-var10 = "\n";
-var11 = 1;
-var12 = string__NativeString__to_s_with_length(var10, var11);
-var9 = var12;
-varonce8 = var9;
-}
-((void (*)(val*, val*))(var_w->class->vft[COLOR_template__Template__add]))(var_w, var9) /* add on <var_w:Template>*/;
-var13 = ((val* (*)(val*))(self->class->vft[COLOR_c_tools__CFunction__exprs]))(self) /* exprs on <self:CFunction>*/;
-((void (*)(val*, val*))(var_w->class->vft[COLOR_template__Template__add]))(var_w, var13) /* add on <var_w:Template>*/;
-if (varonce14) {
-var15 = varonce14;
+var12 = "$(CC) $(CFLAGS) ";
+var13 = 16;
+var14 = string__NativeString__to_s_with_length(var12, var13);
+var11 = var14;
+varonce10 = var11;
+}
+{
+{ /* Inline c_tools#ExternCFile#cflags (self) on <self:ExternCFile> */
+var17 = self->attrs[COLOR_c_tools__ExternCFile___cflags].val; /* _cflags on <self:ExternCFile> */
+if (unlikely(var17 == NULL)) {
+PRINT_ERROR("Runtime error: %s", "Uninitialized attribute _cflags");
+PRINT_ERROR(" (%s:%d)\n", "src/c_tools.nit", 131);
+show_backtrace(1);
+}
+var15 = var17;
+RET_LABEL16:(void)0;
+}
+}
+if (varonce18) {
+var19 = varonce18;
+} else {
+var20 = " -c -o ";
+var21 = 7;
+var22 = string__NativeString__to_s_with_length(var20, var21);
+var19 = var22;
+varonce18 = var19;
+}
+if (varonce23) {
+var24 = varonce23;
 } else {
-var16 = "}\n";
-var17 = 2;
-var18 = string__NativeString__to_s_with_length(var16, var17);
-var15 = var18;
-varonce14 = var15;
-}
-((void (*)(val*, val*))(var_w->class->vft[COLOR_template__Template__add]))(var_w, var15) /* add on <var_w:Template>*/;
-var = var_w;
+var25 = " ";
+var26 = 1;
+var27 = string__NativeString__to_s_with_length(var25, var26);
+var24 = var27;
+varonce23 = var24;
+}
+var28 = NEW_array__Array(&type_array__Arraykernel__Object);
+{ /* var28 = array_instance Array[Object] */
+var29 = 6;
+var30 = NEW_array__NativeArray(var29, &type_array__NativeArraykernel__Object);
+((struct instance_array__NativeArray*)var30)->values[0] = (val*) var11;
+((struct instance_array__NativeArray*)var30)->values[1] = (val*) var15;
+((struct instance_array__NativeArray*)var30)->values[2] = (val*) var19;
+((struct instance_array__NativeArray*)var30)->values[3] = (val*) var_o;
+((struct instance_array__NativeArray*)var30)->values[4] = (val*) var24;
+((struct instance_array__NativeArray*)var30)->values[5] = (val*) var_ff;
+{
+((void (*)(val*, val*, long))(var28->class->vft[COLOR_array__Array__with_native]))(var28, var30, var29) /* with_native on <var28:Array[Object]>*/;
+}
+}
+{
+var31 = ((val* (*)(val*))(var28->class->vft[COLOR_string__Object__to_s]))(var28) /* to_s on <var28:Array[Object]>*/;
+}
+var = var31;
 goto RET_LABEL;
 RET_LABEL:;
 return var;
 }
-/* method c_tools#CFunction#to_writer for (self: Object): Template */
-val* VIRTUAL_c_tools__CFunction__to_writer(val* self) {
-val* var /* : Template */;
-val* var1 /* : Template */;
-var1 = c_tools__CFunction__to_writer(self);
+/* method c_tools#ExternCFile#makefile_rule_content for (self: Object): String */
+val* VIRTUAL_c_tools__ExternCFile__makefile_rule_content(val* self) {
+val* var /* : String */;
+val* var1 /* : String */;
+var1 = c_tools__ExternCFile__makefile_rule_content(self);
 var = var1;
 RET_LABEL:;
 return var;
 }
-/* method c_tools#CFunction#init for (self: CFunction, String) */
-void c_tools__CFunction__init(val* self, val* p0) {
-self->attrs[COLOR_c_tools__CFunction___64dsignature].val = p0; /* @signature on <self:CFunction> */
+/* method c_tools#ExternCFile#compiles_to_o_file for (self: ExternCFile): Bool */
+short int c_tools__ExternCFile__compiles_to_o_file(val* self) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+var1 = 1;
+var = var1;
+goto RET_LABEL;
 RET_LABEL:;
+return var;
 }
-/* method c_tools#CFunction#init for (self: Object, String) */
-void VIRTUAL_c_tools__CFunction__init(val* self, val* p0) {
-c_tools__CFunction__init(self, p0);
+/* method c_tools#ExternCFile#compiles_to_o_file for (self: Object): Bool */
+short int VIRTUAL_c_tools__ExternCFile__compiles_to_o_file(val* self) {
+short int var /* : Bool */;
+short int var1 /* : Bool */;
+var1 = c_tools__ExternCFile__compiles_to_o_file(self);
+var = var1;
 RET_LABEL:;
+return var;
 }