From 80f605c0c9c94e9f03cf1817f8786c0bd30ebc01 Mon Sep 17 00:00:00 2001 From: paladin-t Date: Mon, 22 Feb 2016 15:25:20 +0800 Subject: [PATCH] +added array accessing support of a class instance. --- HISTORY | 1 + core/my_basic.c | 31 ++++++++++++++++++++++++++----- output/my_basic.exe | Bin 360960 -> 361472 bytes 3 files changed, 27 insertions(+), 5 deletions(-) diff --git a/HISTORY b/HISTORY index 6da2747..84f9a5c 100755 --- a/HISTORY +++ b/HISTORY @@ -1,5 +1,6 @@ Feb. 22 2016 Added array clone support +Added array accessing support of a class instance Feb. 19 2016 Added source tracing for sub routine invoking diff --git a/core/my_basic.c b/core/my_basic.c index 075f5c8..c242464 100755 --- a/core/my_basic.c +++ b/core/my_basic.c @@ -3181,6 +3181,13 @@ static int _calc_expression(mb_interpreter_t* s, _ls_node_t** l, _object_t** val _data_e arr_type; _object_t* arr_elem = 0; +#ifdef MB_ENABLE_CLASS + if(s->last_instance) { + _ls_node_t* cs = _search_identifier_in_scope_chain(s, 0, c->data.array->name, 1, 0, 0); + if(cs) + c = (_object_t*)cs->data; + } +#endif /* MB_ENABLE_CLASS */ _array: if(ast && !_IS_FUNC(((_object_t*)ast->data), _core_open_bracket)) { _ls_pushback(opnd, c); @@ -5684,6 +5691,9 @@ static void _init_array(_array_t* arr) { static _array_t* _clone_array(mb_interpreter_t* s, _array_t* arr) { /* Clone an array */ _array_t* result = 0; + unsigned int index = 0; + mb_value_u val; + _data_e type = _DT_NIL; mb_assert(s && arr); @@ -5692,7 +5702,10 @@ static _array_t* _clone_array(mb_interpreter_t* s, _array_t* arr) { result->dimension_count = arr->dimension_count; memcpy(result->dimensions, arr->dimensions, sizeof(result->dimensions)); _init_array(result); - /* TODO */ + for(index = 0; index < arr->count; index++) { + _get_array_elem(s, arr, index, &val, &type); + _set_array_elem(s, 0, result, index, &val, &type); + } return result; } @@ -7502,6 +7515,7 @@ static _ls_node_t* _search_identifier_accessor(mb_interpreter_t* s, _running_con instance = obj->data.instance; break; + case _DT_ARRAY: /* Fall through */ case _DT_ROUTINE: /* Do nothing */ break; default: @@ -8747,7 +8761,8 @@ static _object_t* _eval_var_in_print(mb_interpreter_t* s, _object_t** val_ptr, _ /* Evaluate a variable, this is a helper function for the PRINT statement */ _object_t tmp; - if(obj->type == _DT_ROUTINE) { + switch(obj->type) { + case _DT_ROUTINE: _execute_statement(s, ast); _MAKE_NIL(&tmp); _public_value_to_internal_object(&s->running_context->intermediate_value, &tmp); @@ -8758,12 +8773,18 @@ static _object_t* _eval_var_in_print(mb_interpreter_t* s, _object_t** val_ptr, _ } **val_ptr = tmp; if(*ast) *ast = (*ast)->prev; - } else if(obj->type == _DT_VAR) { + + break; + case _DT_VAR: *val_ptr = obj->data.variable->data; if(*ast) *ast = (*ast)->next; - } else { + + break; + default: *val_ptr = obj; if(*ast) *ast = (*ast)->next; + + break; } return *val_ptr; @@ -14605,12 +14626,12 @@ static int _std_print(mb_interpreter_t* s, void** l) { } #endif /* MB_ENABLE_CLASS */ /* Fall through */ + case _DT_ARRAY: /* Fall through */ case _DT_TYPE: /* Fall through */ case _DT_NIL: /* Fall through */ case _DT_INT: /* Fall through */ case _DT_REAL: /* Fall through */ case _DT_STRING: /* Fall through */ - case _DT_ARRAY: /* Fall through */ #ifdef MB_ENABLE_CLASS case _DT_CLASS: /* Fall through */ #endif /* MB_ENABLE_CLASS */ diff --git a/output/my_basic.exe b/output/my_basic.exe index 19fb4e8dc59942eab5c2d7858325f9d144f2f45c..3d4d94c517a98a3878e42a4e7cc43a2457c04f46 100755 GIT binary patch delta 22788 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

^P69v~7)X%XA7``W!Z=+_t?h!d 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