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

📄 finctype.c

📁 FinC is Fava in C! A C-like syntax language. It s designed to apply to embededd system.
💻 C
字号:
#include <finctype.h>#include <fincapp.h>extern FinCApp* g_finc_app_global;FinCType* finc_type_new (FinCTypeType p_type, FinCArrayType p_array_type, unsigned int p_array_size){	FinCType *self;	self = (FinCType*)mem_new(sizeof(FinCType));	object_init_object (OBJECT (self), finc_type_destroy);	self->name = string_new();	string_set_str(self->name, "unknown");	self->type = p_type;	self->array_type = p_array_type;	self->array_size = p_array_size;	return self;}FinCType* finc_type_new_name (unsigned char* p_name, FinCArrayType p_array_type, unsigned int p_array_size){	FinCType* l_type;	if (strcmp (p_name, "void") == 0)		return finc_type_new (FinCType_Void, p_array_type, p_array_size);	if (strcmp (p_name, "char") == 0)		return finc_type_new (FinCType_Char, p_array_type, p_array_size);	if (strcmp (p_name, "short") == 0)		return finc_type_new (FinCType_Short, p_array_type, p_array_size);	if (strcmp (p_name, "int") == 0)		return finc_type_new (FinCType_Int, p_array_type, p_array_size);	if (strcmp (p_name, "float") == 0)		return finc_type_new (FinCType_Float, p_array_type, p_array_size);	if (strcmp (p_name, "double") == 0)		return finc_type_new (FinCType_Double, p_array_type, p_array_size);	if (strcmp (p_name, "bool") == 0)		return finc_type_new (FinCType_Bool, p_array_type, p_array_size);	if (strcmp (p_name, "pointer") == 0)		return finc_type_new (FinCType_Pointer, p_array_type, p_array_size);	if (strcmp (p_name, "string") == 0)		return finc_type_new (FinCType_String, p_array_type, p_array_size);	/*if not base data type, that will be a struct data type*/	l_type = finc_type_new (FinCType_Struct, p_array_type, p_array_size);	string_set_str (l_type->name, p_name);	return l_type;}void finc_type_destroy (Object* self){	unref(((FinCType*)self)->name);	mem_destroy (self);}unsigned int finc_type_get_size (FinCType* self){	FinCStruct* l_struct;	int l_array;	int l_struct_size;	if ( self->array_size ) l_array = self->array_size;	else l_array =1;	if ( self->type&FinCType_Char ) return sizeof(char)*l_array;	if ( self->type&FinCType_Short ) return sizeof(short)*l_array;	if ( self->type&FinCType_Int ) return sizeof (int)*l_array;	if ( self->type&FinCType_Float ) return sizeof (float)*l_array;	if ( self->type&FinCType_Double ) return sizeof (double)*l_array;	if ( self->type&FinCType_Bool ) return sizeof (Bool)*l_array;	if ( self->type&FinCType_Pointer ) return sizeof (void*)*l_array;	if ( self->type&FinCType_String ) return sizeof (unsigned char*);	if ( self->type&FinCType_Struct )	{		l_struct = finc_app_get_struct(g_finc_app_global, self->name);		if ( !l_struct )		{			printf("Error: struct %s not founded.\n", string_get_str (self->name));			return 0;		}		l_struct_size = l_struct->size*l_array;		unref(l_struct);		return l_struct_size;	}	if ( self->type&FinCType_Void ) return 0;	return 0;}

⌨️ 快捷键说明

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