Getting rid of globals
This commit is contained in:
@@ -16,7 +16,7 @@ global Intern_String last_filename;
|
||||
global int last_line;
|
||||
CORE_Static void
|
||||
gen_line(Ast *node){
|
||||
if(emit_line_directives){
|
||||
if(pctx->emit_line_directives){
|
||||
last_line = node->pos->line+1;
|
||||
genln("#line %d", last_line);
|
||||
if(node->pos->file != last_filename){
|
||||
@@ -28,7 +28,7 @@ gen_line(Ast *node){
|
||||
|
||||
CORE_Static void
|
||||
gen_last_line(){
|
||||
if(emit_line_directives){
|
||||
if(pctx->emit_line_directives){
|
||||
genln("#line %d", last_line);
|
||||
}
|
||||
}
|
||||
@@ -223,7 +223,7 @@ gen_value(Token *pos, Value a){
|
||||
}break;
|
||||
case TYPE_STRING:{
|
||||
int length = 0;
|
||||
gen("(%QString){(uint8_t *)\"", symbol_prefix);
|
||||
gen("(%QString){(uint8_t *)\"", pctx->symbol_prefix);
|
||||
for(int i = 0; i < a.intern_val.len; i++){
|
||||
if(a.intern_val.str[i] == '\n'){length += 2; gen("\\n");}
|
||||
else if(a.intern_val.str[i] == '\r'){length += 2; gen("\\r");}
|
||||
@@ -518,8 +518,8 @@ gen_ast(Ast *ast){
|
||||
switch(ast->kind){
|
||||
|
||||
CASE(RUNTIME_ASSERT, Builtin){
|
||||
if(node->assert_message.len == 0) gen("%QAssert", symbol_prefix);
|
||||
else gen("%QAssertMessage", symbol_prefix);
|
||||
if(node->assert_message.len == 0) gen("%QAssert", pctx->symbol_prefix);
|
||||
else gen("%QAssertMessage", pctx->symbol_prefix);
|
||||
gen("(");
|
||||
gen_expr(node->expr);
|
||||
if(node->assert_message.len){
|
||||
@@ -540,7 +540,7 @@ gen_ast(Ast *ast){
|
||||
|
||||
int i = 0;
|
||||
For(node->expr){
|
||||
genln("%QMemoryCopy(&%Q.m%d, ", symbol_prefix, var_name, i);
|
||||
genln("%QMemoryCopy(&%Q.m%d, ", pctx->symbol_prefix, var_name, i);
|
||||
if(!is_array(it->resolved_type)) gen("&");
|
||||
gen("(");
|
||||
gen_expr(it);
|
||||
@@ -619,7 +619,7 @@ gen_ast(Ast *ast){
|
||||
if(node->is_array_traversal){
|
||||
gen("for(int64_t _i%d = 0; _i%d < ", node->pos->line, node->pos->line);
|
||||
if(is_array(node->cond->resolved_type)){
|
||||
gen("%QBufferSize(", symbol_prefix);
|
||||
gen("%QBufferSize(", pctx->symbol_prefix);
|
||||
gen_expr(node->cond);
|
||||
gen(")");
|
||||
} else{
|
||||
@@ -753,7 +753,7 @@ gen_ast(Ast *ast){
|
||||
|
||||
int i = 0;
|
||||
For(node->vars){
|
||||
gen("%QMemoryCopy((void *)&%Q, (void *)&%Q.m%d, sizeof(%Q));", symbol_prefix, it->name, var_name, i++, it->name);
|
||||
gen("%QMemoryCopy((void *)&%Q, (void *)&%Q.m%d, sizeof(%Q));", pctx->symbol_prefix, it->name, var_name, i++, it->name);
|
||||
}
|
||||
BREAK();
|
||||
}
|
||||
@@ -773,8 +773,8 @@ CORE_Static String
|
||||
compile_to_c_code(){
|
||||
pctx->generating_time_begin = os_time();
|
||||
|
||||
prefixed_string_type = string_fmt(pctx->perm, "%QString", symbol_prefix);
|
||||
if(single_header_library_mode){
|
||||
prefixed_string_type = string_fmt(pctx->perm, "%QString", pctx->symbol_prefix);
|
||||
if(pctx->single_header_library_mode){
|
||||
gen(R"(
|
||||
/*
|
||||
Do this:
|
||||
@@ -792,10 +792,10 @@ compile_to_c_code(){
|
||||
You can #define %QAssertMessage(x) to get more comprehensive error info
|
||||
You can #define %QMemoryCopy(x) to avoid using default memory copy
|
||||
*/
|
||||
)", single_header_library_name, single_header_library_name, single_header_library_name,
|
||||
symbol_prefix, symbol_prefix, symbol_prefix);
|
||||
genln("#ifndef %Q_LIBRARY_HEADER ", single_header_library_name);
|
||||
genln("#define %Q_LIBRARY_HEADER ", single_header_library_name);
|
||||
)", pctx->single_header_library_name, pctx->single_header_library_name, pctx->single_header_library_name,
|
||||
pctx->symbol_prefix, pctx->symbol_prefix, pctx->symbol_prefix);
|
||||
genln("#ifndef %Q_LIBRARY_HEADER ", pctx->single_header_library_name);
|
||||
genln("#define %Q_LIBRARY_HEADER ", pctx->single_header_library_name);
|
||||
}
|
||||
|
||||
gen(R"(
|
||||
@@ -906,7 +906,7 @@ typedef struct String{
|
||||
}
|
||||
|
||||
|
||||
if(emit_type_info){
|
||||
if(pctx->emit_type_info){
|
||||
// Generate language.core
|
||||
for(S32 i = 0; i < pctx->base_language_ordered_decl_len; i++){
|
||||
Ast_Decl *it = get(&pctx->ordered_decls, i);
|
||||
@@ -959,9 +959,9 @@ typedef struct String{
|
||||
|
||||
}
|
||||
|
||||
if(single_header_library_mode){
|
||||
if(pctx->single_header_library_mode){
|
||||
genln("#endif");
|
||||
genln("#ifdef %Q_IMPLEMENTATION ", single_header_library_name);
|
||||
genln("#ifdef %Q_IMPLEMENTATION ", pctx->single_header_library_name);
|
||||
}
|
||||
|
||||
// Generate actual code
|
||||
@@ -973,7 +973,7 @@ typedef struct String{
|
||||
}
|
||||
|
||||
|
||||
if(single_header_library_mode){
|
||||
if(pctx->single_header_library_mode){
|
||||
genln("#endif");
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user