⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fincapp.c

📁 FinC is Fava in C! A C-like syntax language. It s designed to apply to embededd system.
💻 C
字号:
#include <fincapp.h>#include <finclang.h>#include <fincsys.h>#include <fincyacc.h>#include <malloc.h>#include <errno.h>FinCApp* g_finc_app_global = NULL;Bool g_finc_app_continue = FALSE;Bool g_finc_app_break = FALSE;Bool g_finc_app_in_cycle = FALSE;FinCApp* finc_app_new (){	FinCApp *self;	self = (FinCApp*)mem_new(sizeof(FinCApp));	object_init_object (OBJECT (self), finc_app_destroy);	self->hash_global = hash_table_new (string_hash, string_equal);	self->hash_local = NULL;	self->hash_functions = hash_table_new (string_hash, string_equal);	self->hash_struct = hash_table_new (string_hash, string_equal);	return self;}void finc_app_destroy (Object* self){	unref ( ((FinCApp*)self)->hash_global);	unref ( ((FinCApp*)self)->hash_local);	unref ( ((FinCApp*)self)->hash_functions);	unref ( ((FinCApp*)self)->hash_struct);	mem_destroy (self);}FinCFunc* finc_app_add_func_sys (FinCApp* self, unsigned char* p_name, FinCFuncSys p_sys){	FinCFunc* l_func;	String*	l_name;	l_func = finc_func_new ();	l_name = string_new ();	string_set_str (l_name, p_name);	finc_func_set_sys (l_func, l_name, p_sys);	hash_table_insert(self->hash_functions, (void*)l_func->name, OBJECT(l_func));	unref (l_func);	unref (l_name);	return l_func;}FinCFunc* finc_app_add_func_native (FinCApp* self, unsigned char* p_name, void* p_native){	FinCFunc*	l_func;	String*	l_name;	l_func = finc_func_new ();	l_name = string_new ();	string_set_str (l_name, p_name);	finc_func_set_native (l_func, l_name, p_native);	hash_table_insert(self->hash_functions, (void*)l_func->name, OBJECT(l_func));	unref (l_func);	unref (l_name);	return l_func;}FinCFunc* finc_app_add_func_node (FinCApp* self, unsigned char* p_name, FinCNode* p_node){	FinCFunc*	l_func;	String*	l_name;	l_func = finc_func_new ();	l_name = string_new ();	string_set_str (l_name, p_name);	finc_func_set_node (l_func, l_name, p_node);	hash_table_insert(self->hash_functions, (void*)l_func->name, OBJECT(l_func));	unref (l_func);	unref (l_name);	return l_func;}FinCFunc* finc_app_get_func (FinCApp* self, String* p_name){	return hash_table_find(self->hash_functions, (void*)p_name);}void finc_app_add_var (FinCApp* self, FinCVar* p_var, Bool p_global){	if ((self->hash_local) && !p_global)		hash_table_insert(self->hash_local, (void*)p_var->name, OBJECT(p_var));	else		hash_table_insert (self->hash_global, (void*)p_var->name, OBJECT (p_var));}FinCVar* finc_app_get_var (FinCApp* self, String* p_name){	if (self->hash_local)	{		FinCVar* l_var = hash_table_find(self->hash_local, p_name);		if (l_var) return l_var;	}		return hash_table_find(self->hash_global, p_name);}void finc_app_add_struct (FinCApp* self, FinCStruct* p_struct ){	hash_table_insert(self->hash_struct, (ADT)p_struct->name, OBJECT(p_struct));}FinCStruct* finc_app_get_struct (FinCApp* self, String* p_name){    return hash_table_find(self->hash_struct, (void*)p_name);}HashTable* finc_app_func_enter (FinCApp* self){	HashTable* l_list;	l_list = self->hash_local;	self->hash_local = hash_table_new(string_hash, string_equal);	return l_list;}void finc_app_func_leave (FinCApp* self, HashTable* p_hash){	unref (self->hash_local);	self->hash_local = p_hash;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -