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 + -
显示快捷键?