📄 fincsys.c
字号:
void finc_sys_comma( FinCNode* p_node){ FinCNode* l_node1; FinCNode* l_node2; FinCType* l_type; FinCData* l_data; l_node1 = (FinCNode*)vector_at (p_node->vector_node, 0); l_node2 = (FinCNode*)vector_at (p_node->vector_node, 1); finc_node_evaluate (l_node1); finc_node_evaluate (l_node2); l_type = finc_type_new (l_node2->data->type->type, FinCArrayType_None, 0); l_data = finc_data_new (l_type, NULL); unref(l_type); unref(l_node1); unref(l_node2); unref(p_node->data); finc_data_assign(l_data, l_node2->data); unref(l_node2); p_node->data = l_data;}void finc_sys_condition( FinCNode* p_node ){ FinCNode* l_node1; FinCNode* l_node2; FinCNode* l_node3; FinCType* l_type; FinCData* l_data; l_node1 = (FinCNode*)vector_at (p_node->vector_node, 0); l_node2 = (FinCNode*)vector_at (p_node->vector_node, 1); l_node3 = (FinCNode*)vector_at (p_node->vector_node, 2); finc_node_evaluate (l_node1); if ( access ( finc_data_get_raw_data ( l_node1->data ), 0, Bool ) ) { finc_node_evaluate ( l_node2 ); l_type = finc_type_new(l_node2->data->type->type, FinCArrayType_None, 0); l_data = finc_data_new(l_type, NULL); unref(l_type); finc_data_assign(l_data, l_node2->data); p_node->data = l_data; } else { finc_node_evaluate ( l_node3 ); l_type = finc_type_new(l_node3->data->type->type, FinCArrayType_None, 0); l_data = finc_data_new(l_type, NULL); unref(l_type); finc_data_assign(l_data, l_node3->data); p_node->data = l_data; } unref(l_node1); unref(l_node2); unref(l_node3);}void finc_sys_logic_or ( FinCNode* p_node ){ FinCNode * l_left; FinCNode* l_right; FinCType* l_type; FinCData* l_data; FinCData* l_data_left; FinCData* l_data_right; l_left = (FinCNode*)vector_at ( p_node->vector_node, 0 ); l_right = (FinCNode*)vector_at ( p_node->vector_node, 1 ); finc_node_evaluate ( l_left ); l_data_left = finc_node_take_data (l_left); finc_node_evaluate ( l_right ); l_data_right = finc_node_take_data (l_right); l_type = finc_type_new ( FinCType_Bool, FinCArrayType_None, 0 ); l_data = finc_data_new ( l_type, NULL ); unref ( l_type ); access ( finc_data_get_raw_data ( l_data ), 0, int ) = access ( finc_data_get_raw_data ( l_data_left ), 0, int ) || access ( finc_data_get_raw_data ( l_data_right ), 0, int ); unref ( l_left ); unref ( l_right ); unref (l_data_left); unref (l_data_right); unref ( p_node->data ); p_node->data = l_data;}void finc_sys_logic_and ( FinCNode* p_node ){ FinCNode * l_left; FinCNode* l_right; FinCType* l_type; FinCData* l_data; FinCData* l_data_left; FinCData* l_data_right; l_left = (FinCNode*)vector_at ( p_node->vector_node, 0 ); l_right = (FinCNode*)vector_at ( p_node->vector_node, 1 ); finc_node_evaluate ( l_left ); l_data_left = finc_node_take_data (l_left); finc_node_evaluate ( l_right ); l_data_right = finc_node_take_data (l_right); l_type = finc_type_new ( FinCType_Bool, FinCArrayType_None, 0 ); l_data = finc_data_new ( l_type, NULL ); unref ( l_type ); access ( finc_data_get_raw_data ( l_data ), 0, int ) = access ( finc_data_get_raw_data ( l_left->data ), 0, int ) && access ( finc_data_get_raw_data ( l_right->data ), 0, int ); unref ( l_left ); unref ( l_right ); unref (l_data_left); unref (l_data_right); unref ( p_node->data ); p_node->data = l_data;}void finc_sys_add ( FinCNode* p_node ){ FinCNode * l_left; FinCNode* l_right; FinCType* l_type; FinCData* l_data; String* l_string; FinCData* l_data_left; FinCData* l_data_right; l_data = NULL; l_left = (FinCNode*)vector_at ( p_node->vector_node, 0 ); l_right = (FinCNode*)vector_at ( p_node->vector_node, 1 ); finc_node_evaluate ( l_left ); l_data_left = finc_node_take_data (l_left); finc_node_evaluate ( l_right ); l_data_right = finc_node_take_data (l_right); if ( l_data_left->type->type & FinCType_Int ) { l_type = finc_type_new ( FinCType_Int, FinCArrayType_None, 0 ); l_data = finc_data_new ( l_type, NULL ); unref ( l_type ); access ( finc_data_get_raw_data ( l_data ), 0, int ) = access ( finc_data_get_raw_data ( l_data_left ), 0, int ) + access ( finc_data_get_raw_data ( l_data_right ), 0, int ); } else if ( l_data_left->type->type & FinCType_Float ) { l_type = finc_type_new ( FinCType_Float, FinCArrayType_None, 0 ); l_data = finc_data_new ( l_type, NULL ); unref ( l_type ); access ( finc_data_get_raw_data ( l_data ), 0, float ) = access ( finc_data_get_raw_data ( l_data_left ), 0, float ) + access ( finc_data_get_raw_data ( l_data_right ), 0, float ); } else if ( l_data_left->type->type & FinCType_String ) { l_type = finc_type_new ( FinCType_String, FinCArrayType_None, 0 ); l_data = finc_data_new ( l_type, NULL ); unref ( l_type ); l_string = string_new (); string_set ( l_string, finc_data_get_string ( l_data_left ) ); string_add ( l_string, finc_data_get_string ( l_data_right ) ); finc_data_set_string ( l_data, l_string ); } else { finc_lang_error( "I don't know how to add this two object." ); } unref ( l_left ); unref ( l_right ); unref ( l_data_left ); unref ( l_data_right ); unref ( p_node->data ); p_node->data = l_data;}void finc_sys_sub ( FinCNode* p_node ){ FinCNode * l_left; FinCNode* l_right; FinCType* l_type; FinCData* l_data; FinCData* l_data_left; FinCData* l_data_right; l_left = (FinCNode*)vector_at ( p_node->vector_node, 0 ); l_right = (FinCNode*)vector_at ( p_node->vector_node, 1 ); finc_node_evaluate ( l_left ); l_data_left = finc_node_take_data (l_left); finc_node_evaluate ( l_right ); l_data_right = finc_node_take_data (l_right); if ( l_data_left->type->type & FinCType_Short ) { l_type = finc_type_new ( FinCType_Int, FinCArrayType_None, 0 ); l_data = finc_data_new ( l_type, NULL ); unref ( l_type ); access ( finc_data_get_raw_data ( l_data ), 0, short ) = access ( finc_data_get_raw_data ( l_data_left ), 0, short ) - access ( finc_data_get_raw_data ( l_data_right ), 0, short ); } if ( l_data_left->type->type & FinCType_Int ) { l_type = finc_type_new ( FinCType_Int, FinCArrayType_None, 0 ); l_data = finc_data_new ( l_type, NULL ); unref ( l_type ); access ( finc_data_get_raw_data ( l_data ), 0, int ) = access ( finc_data_get_raw_data ( l_data_left ), 0, int ) - access ( finc_data_get_raw_data ( l_data_right ), 0, int ); } if ( l_data_left->type->type & FinCType_Float ) { l_type = finc_type_new ( FinCType_Float, FinCArrayType_None, 0 ); l_data = finc_data_new ( l_type, NULL ); unref ( l_type ); access ( finc_data_get_raw_data ( l_data ), 0, float ) = access ( finc_data_get_raw_data ( l_data_left ), 0, float ) - access ( finc_data_get_raw_data ( l_data_right ), 0, float ); } unref ( l_left ); unref ( l_right ); unref (l_data_left); unref (l_data_right); unref ( p_node->data ); p_node->data = l_data;}void finc_sys_mul ( FinCNode* p_node ){ FinCNode * l_left; FinCNode* l_right; FinCType* l_type; FinCData* l_data; FinCData* l_data_left; FinCData* l_data_right; l_data = NULL; l_left = (FinCNode*) vector_at ( p_node->vector_node, 0 ); l_right = (FinCNode*) vector_at ( p_node->vector_node, 1 ); finc_node_evaluate ( l_left ); l_data_left = finc_node_take_data (l_left); finc_node_evaluate ( l_right ); l_data_right = finc_node_take_data (l_right); if ( l_data_left->type->type & FinCType_Short ) { l_type = finc_type_new ( FinCType_Int, FinCArrayType_None, 0 ); l_data = finc_data_new ( l_type, NULL ); unref ( l_type ); access ( finc_data_get_raw_data ( l_data ), 0, short ) = access ( finc_data_get_raw_data ( l_data_left ), 0, short ) * access ( finc_data_get_raw_data ( l_data_right ), 0, short ); } if ( l_data_left->type->type & FinCType_Int ) { l_type = finc_type_new ( FinCType_Int, FinCArrayType_None, 0 ); l_data = finc_data_new ( l_type, NULL ); unref ( l_type ); access ( finc_data_get_raw_data ( l_data ), 0, int ) = access ( finc_data_get_raw_data ( l_data_left ), 0, int ) * access ( finc_data_get_raw_data ( l_data_right ), 0, int ); } if ( l_data_left->type->type & FinCType_Float ) { l_type = finc_type_new ( FinCType_Float, FinCArrayType_None, 0 ); l_data = finc_data_new ( l_type, NULL ); unref ( l_type ); access ( finc_data_get_raw_data ( l_data ), 0, float ) = access ( finc_data_get_raw_data ( l_data_left ), 0, float ) * access ( finc_data_get_raw_data ( l_data_right ), 0, float ); } unref ( l_left ); unref ( l_right ); unref (l_data_left); unref (l_data_right); unref ( p_node->data ); p_node->data = l_data;}void finc_sys_div ( FinCNode* p_node ){ FinCNode * l_left; FinCNode* l_right; FinCType* l_type; FinCData* l_data; FinCData* l_data_left; FinCData* l_data_right; l_left = (FinCNode*)vector_at ( p_node->vector_node, 0 ); l_right = (FinCNode*)vector_at ( p_node->vector_node, 1 ); finc_node_evaluate ( l_left ); l_data_left = finc_node_take_data (l_left); finc_node_evaluate ( l_right ); l_data_right = finc_node_take_data (l_right); if ( l_data_left->type->type & FinCType_Short ) { l_type = finc_type_new ( FinCType_Int, FinCArrayType_None, 0 ); l_data = finc_data_new ( l_type, NULL ); unref ( l_type ); access ( finc_data_get_raw_data ( l_data ), 0, short ) = access ( finc_data_get_raw_data ( l_data_left ), 0, short ) / access ( finc_data_get_raw_data ( l_data_right ), 0, short ); } if ( l_data_left->type->type & FinCType_Int ) { l_type = finc_type_new ( FinCType_Int, FinCArrayType_None, 0 ); l_data = finc_data_new ( l_type, NULL ); unref ( l_type ); access ( finc_data_get_raw_data ( l_data ), 0, int ) = access ( finc_data_get_raw_data ( l_data_left ), 0, int ) / access ( finc_data_get_raw_data ( l_data_right ), 0, int ); } if ( l_data_left->type->type & FinCType_Float ) { l_type = finc_type_new ( FinCType_Float, FinCArrayType_None, 0 ); l_data = finc_data_new ( l_type, NULL ); unref ( l_type ); access ( finc_data_get_raw_data ( l_data ), 0, float ) = access ( finc_data_get_raw_data ( l_data_left ), 0, float ) / access ( finc_data_get_raw_data ( l_data_right ), 0, float ); } unref ( l_left ); unref ( l_right ); unref (l_data_left); unref (l_data_right); unref ( p_node->data ); p_node->data = l_data;}void finc_sys_import ( FinCNode* p_node ){ FinCNode * l_node; FinCData* l_data; String* l_text; l_node = (FinCNode*)vector_at ( p_node->vector_node, 0 ); finc_node_evaluate ( l_node ); l_data = l_node->data; unref ( l_node ); if ( l_data->type->type & FinCType_String ) { l_text = finc_data_get_string ( l_data ); l_node = finc_lang_load ( l_text ); if ( l_node ) { finc_node_evaluate ( l_node ); unref ( l_node ); } unref ( l_text ); }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -