fincsys_cpp.c
来自「FinC编译器源代码」· C语言 代码 · 共 1,930 行 · 第 1/5 页
C
1,930 行
Vector* vector_new ();
void vector_destroy (Object* self);
void vector_clear (Vector* self);
Bool vector_is_empty(Vector* self);
void vector_resize (Vector* self, int p_newsize);
ADT vector_at (Vector* self, int p_index);
void vector_set_at (Vector* self, int p_index, ADT p_item);
void vector_append (Vector* self, ADT p_item);
void vector_preppend (Vector* self, ADT p_item);
void vector_insert (Vector* self, ADT p_item, int p_index);
void vector_remove (Vector* self, int p_index);
void vector_foreach(Vector* self, UserFunc user_func, ADT data);
# 7 "../include/finc/fincsys.h" 2
# 1 "../include/finc/fincconfig.h" 1
# 9 "../include/finc/fincsys.h" 2
# 1 "../include/finc/fincnode.h" 1
# 9 "../include/finc/fincnode.h"
# 1 "../include/finc/fincdata.h" 1
# 9 "../include/finc/fincdata.h"
# 1 "../include/finc/finctype.h" 1
# 12 "../include/finc/finctype.h"
typedef enum {
FinCType_Void = 1 <<0,
FinCType_Char = 1 <<1,
FinCType_Short = 1 <<2,
FinCType_Int = 1 <<3,
FinCType_Float = 1 <<4,
FinCType_Double = 1 <<5,
FinCType_Bool = 1 <<6,
FinCType_Pointer = 1 <<7,
FinCType_String = 1 <<8,
FinCType_Struct = 1 <<9,
FinCType_Func = 1 <<10
} FinCTypeType;
typedef enum {
FinCArrayType_None,
FinCArrayType_Fixed,
FinCArrayType_Dynamic
} FinCArrayType;
typedef struct _FinCData FinCData;
typedef struct _FinCField FinCField;
typedef struct _FinCType FinCType;
struct _FinCType
{
Object parent;
String* name;
FinCTypeType type;
FinCArrayType array_type;
unsigned int array_size;
};
FinCType* finc_type_new (FinCTypeType p_type, FinCArrayType p_array_type, unsigned int p_array_size);
FinCType* finc_type_new_name (unsigned char* p_name, FinCArrayType p_array_type, unsigned int p_array_size);
FinCType* finc_type_new_copy(FinCType* other);
void finc_type_destroy (Object* self);
unsigned int finc_type_get_size (FinCType* self);
# 10 "../include/finc/fincdata.h" 2
struct _FinCData
{
Object parent;
FinCType* type;
Vector* vector_child;
FinCData* pointer;
Bool ref;
int array_stand;
ADT raw;
};
FinCData* finc_data_new (FinCType* p_type, ADT p_ref);
FinCData* finc_data_new_data ( FinCType* p_type, ADT p_ref );
FinCData* finc_data_new_copy (FinCData* p_data);
FinCData* finc_data_new_string (unsigned char* p_str);
FinCData* finc_data_new_raw_string (unsigned char* p_str);
void finc_data_destroy (Object* self);
void finc_data_init_data (ADT self, ADT data);
String* finc_data_get_string (FinCData* self);
void finc_data_set_string (FinCData* self, String* p_value);
void finc_data_assign (FinCData* self, FinCData* p_src);
FinCData* finc_data_get_index (FinCData* self, int p_index);
ADT finc_data_get_ptr (FinCData* self);
void finc_data_set_pointer (FinCData* self, FinCData* p_raw);
FinCData* finc_data_get_field (FinCData* self, int p_index);
# 10 "../include/finc/fincnode.h" 2
typedef struct _FinCFunc FinCFunc;
typedef struct _FinCNode FinCNode;
# 1 "../include/finc/fincfunc.h" 1
# 1 "../include/tiny/list.h" 1
typedef struct _List List;
List* list_new();
void list_destroy(Object* self);
void list_clear(List* self);
Bool list_is_empty(List* self);
int list_get_size(List* self);
int list_current(List* self);
ADT list_at(List* self, int p_index);
Bool list_locate(List* self, int p_index);
ADT list_data(List* self);
ADT list_take(List* self, int p_index);
ADT list_take_current(List* self);
ADT list_find(List* self, EqualFunc p_func, ADT p_data);
ADT list_find_ref(List* self, EqualFunc p_func, ADT p_data);
void list_insert(List* self, int p_index, ADT p_data);
void list_insert_before(List* self, ADT p_data);
void list_insert_after(List* self, ADT p_data);
void list_prepend(List* self, ADT p_data);
void list_append(List* self, ADT p_data);
void list_remove(List* self, int p_index);
void list_remove_ref(List* self, EqualFunc p_func, ADT p_data);
void list_remove_current(List* self);
ADT list_prev(List* self);
ADT list_prev_unref(List* self);
ADT list_next(List* self);
ADT list_next_unref(List* self);
ADT list_first(List* self);
ADT list_first_unref(List* self);
ADT list_last(List* self);
ADT list_last_unref(List* self);
void list_foreach(List* self, UserFunc p_func, ADT data);
# 8 "../include/finc/fincfunc.h" 2
# 1 "../include/finc/fincnode.h" 1
# 12 "../include/finc/fincfunc.h" 2
# 1 "../include/finc/fincfield.h" 1
# 13 "../include/finc/fincfield.h"
struct _FinCField
{
Object parent;
String* name;
FinCType* type;
int offset;
int index;
};
FinCField* finc_field_new (String* p_name, FinCType* p_type);
void finc_field_destroy (Object* self);
# 13 "../include/finc/fincfunc.h" 2
typedef enum {
FinCFuncType_None,
FinCFuncType_Sys,
FinCFuncType_Sys_Api,
FinCFuncType_Native,
FinCFuncType_Node
} FinCFuncType;
typedef void (*FinCFuncSys)(FinCNode* p_node);
struct _FinCFunc
{
Object parent;
FinCFuncType type;
String* name;
FinCType* ret_type;
FinCNode* node;
FinCFuncSys sys;
ADT native;
Bool opt_param;
Vector* vector_params;
};
# 68 "../include/finc/fincfunc.h"
extern FinCData* g_finc_func_return;
FinCFunc* finc_func_new ();
void finc_func_destroy (Object* self);
void finc_func_set_sys (FinCFunc* self, String* p_name, FinCFuncSys p_sys);
void finc_func_set_sys_api (FinCFunc* self, String* p_name, ADT sys_api);
void finc_func_set_native (FinCFunc* self, String* p_name, void* p_native);
void finc_func_set_node (FinCFunc* self, String* p_name, FinCNode* p_node);
void finc_func_add_param (FinCFunc* self, FinCField* p_param);
FinCData* finc_func_call (FinCFunc* self, FinCNode* p_node);
FinCData* finc_func_native_call (FinCFunc* self, FinCNode* node);
FinCData* finc_func_native_call_f (FinCFunc* self, FinCNode* node);
# 15 "../include/finc/fincnode.h" 2
typedef enum
{
FinCNodeType_None,
FinCNodeType_Block,
FinCNodeType_Data,
FinCNodeType_Func,
FinCNodeType_Type,
FinCNodeType_Identifier
} FinCNodeType;
struct _FinCNode
{
Object parent;
FinCNodeType node_type;
FinCData* data;
FinCFunc* func;
FinCType* type;
String* identifier;
Bool check;
Bool constant;
String* source_file;
unsigned int source_line;
Vector* vector_node;
};
FinCNode* finc_node_new ();
FinCNode* finc_node_new_func (unsigned char* p_name);
FinCNode* finc_node_new_name (unsigned char* p_name);
FinCNode* finc_node_new_type (String* p_typename, FinCArrayType p_array, unsigned int p_size);
FinCNode* finc_node_new_char (unsigned char p_char);
FinCNode* finc_node_new_string (unsigned char* p_text);
FinCNode* finc_node_new_integer (unsigned int p_int);
FinCNode* finc_node_new_float (float p_value);
FinCNode* finc_node_new_long (long p_long);
FinCNode* finc_node_new_bool (Bool p_bool);
FinCNode* finc_node_new_pointer (void* p_ptr);
void finc_node_destroy (Object* self);
void finc_node_evaluate (FinCNode* self);
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?