From ea7fcd85b40dd943e593d823827be7cdf4a972b0 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Sun, 3 Mar 2024 15:04:36 -0500 Subject: Make load method be "use$name" --- compile.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'compile.c') diff --git a/compile.c b/compile.c index 6794ffe8..4ca5cbb0 100644 --- a/compile.c +++ b/compile.c @@ -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" ), -- cgit v1.2.3