diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2024-03-03 15:04:36 -0500 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2024-03-03 15:04:36 -0500 |
| commit | ea7fcd85b40dd943e593d823827be7cdf4a972b0 (patch) | |
| tree | ca2b6b8157b9d02971610515ddbee99aa1bd3866 /compile.c | |
| parent | 5641d0c837985ba7f89d5efdc5e9c1873c403a57 (diff) | |
Make load method be "use$name"
Diffstat (limited to 'compile.c')
| -rw-r--r-- | compile.c | 14 |
1 files changed, 12 insertions, 2 deletions
@@ -1083,21 +1083,31 @@ module_code_t compile_file(ast_t *ast) CORD_appendf(&env->code->main, "%r\n", code); } + const char *name = strrchr(ast->file->filename, '/'); + name = name ? name : ast->file->filename; + size_t name_len = 0; + while (name[name_len] && (isalnum(name[name_len]) || name[name_len] == '_')) + ++name_len; + const char *module_name = heap_strn(name, name_len); + return (module_code_t){ + .module_name=module_name, .header=CORD_all( "#pragma once\n", // CORD_asprintf("#line 0 %r\n", Str__quoted(ast->file->filename, false)), env->code->imports, "\n", env->code->typedefs, "\n", env->code->typecode, "\n", - env->code->fndefs, "\n"), + env->code->fndefs, "\n", + "void use$", module_name, "(void);\n" + ), .c_file=CORD_all( // CORD_asprintf("#line 0 %r\n", Str__quoted(ast->file->filename, false)), env->code->staticdefs, "\n", env->code->funcs, "\n", env->code->typeinfos, "\n", "\n" - "static void $load(void) {\n", + "void use$", module_name, "(void) {\n", env->code->main, "}\n" ), |
