From c7dda6124848a8bcd1152b7be53f76390ebc43b4 Mon Sep 17 00:00:00 2001 From: paladin-t Date: Thu, 21 Jan 2016 11:11:17 +0800 Subject: [PATCH] *improved type handling. --- HISTORY | 3 +++ core/my_basic.c | 42 +++++++++++++++++++++++++++++++++++------- core/my_basic.h | 23 ++++++++++++----------- output/my_basic.exe | Bin 354304 -> 354304 bytes 4 files changed, 50 insertions(+), 18 deletions(-) diff --git a/HISTORY b/HISTORY index a05bb79..4453454 100755 --- a/HISTORY +++ b/HISTORY @@ -1,3 +1,6 @@ +Jan. 21 2016 +Improved type handling + Jan. 20 2016 Fixed an unknown type handling bug diff --git a/core/my_basic.c b/core/my_basic.c index 25be55d..09d28da 100755 --- a/core/my_basic.c +++ b/core/my_basic.c @@ -10727,6 +10727,8 @@ const char* mb_get_type_string(mb_data_e t) { return "DICT"; case MB_DT_DICT_IT: return "DICT_ITERATOR"; + case MB_DT_COLLECTION: + return "COLLECTION"; #endif /* MB_ENABLE_COLLECTION_LIB */ #ifdef MB_ENABLE_CLASS case MB_DT_CLASS: @@ -11337,10 +11339,12 @@ int _core_is(mb_interpreter_t* s, void** l) { } if(scd->type == _DT_TYPE) { val->type = _DT_INT; - if((fst->type == _DT_INT || fst->type == _DT_REAL) && scd->data.type == MB_DT_NUM) - val->data.integer = 1; - else - val->data.integer = (int_t)(_internal_type_to_public_type(fst->type) == scd->data.type); + val->data.integer = (int_t)( + !!( + _internal_type_to_public_type(fst->type) == scd->data.type || + _internal_type_to_public_type(fst->type) & scd->data.type + ) + ); } else { #ifdef MB_ENABLE_CLASS if(!_IS_CLASS(fst) || !_IS_CLASS(scd)) { @@ -12785,7 +12789,6 @@ int _core_type(mb_interpreter_t* s, void** l) { int result = MB_FUNC_OK; mb_value_t arg; int i = 0; - unsigned e = 0; mb_assert(s && l); @@ -12798,8 +12801,33 @@ int _core_type(mb_interpreter_t* s, void** l) { mb_check(mb_attempt_close_bracket(s, l)); if(arg.type == MB_DT_STRING) { - for(i = 0; i < sizeof(mb_data_e) * 8; i++) { - e = 1 << i; + mb_data_e types[] = { + MB_DT_NIL, + MB_DT_UNKNOWN, + MB_DT_TYPE, + MB_DT_INT, + MB_DT_REAL, + MB_DT_NUM, + MB_DT_STRING, + MB_DT_USERTYPE, +#ifdef MB_ENABLE_USERTYPE_REF + MB_DT_USERTYPE_REF, +#endif /* MB_ENABLE_USERTYPE_REF */ + MB_DT_ARRAY, +#ifdef MB_ENABLE_COLLECTION_LIB + MB_DT_LIST, + MB_DT_LIST_IT, + MB_DT_DICT, + MB_DT_DICT_IT, + MB_DT_COLLECTION, +#endif /* MB_ENABLE_COLLECTION_LIB */ +#ifdef MB_ENABLE_CLASS + MB_DT_CLASS, +#endif /* MB_ENABLE_CLASS */ + MB_DT_ROUTINE + }; + for(i = 0; i < _countof(types); i++) { + unsigned e = types[i]; if(!mb_stricmp(mb_get_type_string((mb_data_e)e), arg.value.string)) { arg.value.type = (mb_data_e)e; arg.type = MB_DT_TYPE; diff --git a/core/my_basic.h b/core/my_basic.h index a946237..0b9a4f3 100755 --- a/core/my_basic.h +++ b/core/my_basic.h @@ -362,23 +362,24 @@ typedef enum mb_data_e { MB_DT_TYPE = 1 << 1, MB_DT_INT = 1 << 2, MB_DT_REAL = 1 << 3, - MB_DT_NUM = 1 << 4, - MB_DT_STRING = 1 << 5, - MB_DT_USERTYPE = 1 << 6, + MB_DT_NUM = MB_DT_INT | MB_DT_REAL, + MB_DT_STRING = 1 << 4, + MB_DT_USERTYPE = 1 << 5, #ifdef MB_ENABLE_USERTYPE_REF - MB_DT_USERTYPE_REF = 1 << 7, + MB_DT_USERTYPE_REF = 1 << 6, #endif /* MB_ENABLE_USERTYPE_REF */ - MB_DT_ARRAY = 1 << 8, + MB_DT_ARRAY = 1 << 7, #ifdef MB_ENABLE_COLLECTION_LIB - MB_DT_LIST = 1 << 9, - MB_DT_LIST_IT = 1 << 10, - MB_DT_DICT = 1 << 11, - MB_DT_DICT_IT = 1 << 12, + MB_DT_LIST = 1 << 8, + MB_DT_LIST_IT = 1 << 9, + MB_DT_DICT = 1 << 10, + MB_DT_DICT_IT = 1 << 11, + MB_DT_COLLECTION = MB_DT_LIST | MB_DT_DICT, #endif /* MB_ENABLE_COLLECTION_LIB */ #ifdef MB_ENABLE_CLASS - MB_DT_CLASS = 1 << 13, + MB_DT_CLASS = 1 << 12, #endif /* MB_ENABLE_CLASS */ - MB_DT_ROUTINE = 1 << 14 + MB_DT_ROUTINE = 1 << 13 } mb_data_e; typedef unsigned char mb_val_bytes_t[sizeof(void*) > sizeof(unsigned long) ? sizeof(void*) : sizeof(unsigned long)]; diff --git a/output/my_basic.exe b/output/my_basic.exe index 083e6c744116770bce1c92ca80e48f43da0be6d8..70115ff211f42751f234c86bcb08c91a6a354d5f 100755 GIT binary patch delta 19846 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 IRx5%0A9pgSf&c&j delta 19669 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