📄 finctype.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 + -