diff --git a/HISTORY b/HISTORY index 6aaf526..8842ecb 100755 --- a/HISTORY +++ b/HISTORY @@ -1,5 +1,6 @@ Jan. 1 2016 Version 1.2 Added a new sample script source file +Added case-insensitive type name string comparison support Dec. 30 2015 Improved error handling with sub routine and class diff --git a/core/my_basic.c b/core/my_basic.c index 795d7cf..6c3dcb1 100755 --- a/core/my_basic.c +++ b/core/my_basic.c @@ -1146,10 +1146,18 @@ static char* _extract_string(_object_t* obj); case _DT_DICT: \ _gc_add(&(__o)->data.dict->ref, (__o)->data.dict, (__g)); \ break; +# define _UNREF_COLL_IT(__o) \ + case _DT_LIST_IT: \ + _destroy_list_it(obj->data.list_it); \ + break; \ + case _DT_DICT_IT: \ + _destroy_dict_it(obj->data.dict_it); \ + break; #else /* MB_ENABLE_COLLECTION_LIB */ # define _REF_COLL(__o) ((void)(__o)); # define _UNREF_COLL(__o) ((void)(__o)); # define _ADDGC_COLL(__o, __g) ((void)(__o)); ((void)(__g)); +# define _UNREF_COLL_IT(__o) ((void)(__o)); #endif /* MB_ENABLE_COLLECTION_LIB */ #ifdef MB_ENABLE_CLASS # define _REF_CLASS(__o) \ @@ -6331,16 +6339,7 @@ int _dispose_object(_object_t* obj) { _UNREF_ARRAY(obj) _UNREF_COLL(obj) _UNREF_CLASS(obj) -#ifdef MB_ENABLE_COLLECTION_LIB - case _DT_LIST_IT: - _destroy_list_it(obj->data.list_it); - - break; - case _DT_DICT_IT: - _destroy_dict_it(obj->data.dict_it); - - break; -#endif /* MB_ENABLE_COLLECTION_LIB */ + _UNREF_COLL_IT(obj) case _DT_LABEL: if(!obj->ref) { safe_free(obj->data.label->name); @@ -11123,7 +11122,7 @@ int _core_type(mb_interpreter_t* s, void** l) { if(arg.type == MB_DT_STRING) { for(i = 0; i < sizeof(mb_data_e) * 8; i++) { e = 1 << i; - if(!strcmp(mb_get_type_string((mb_data_e)e), arg.value.string)) { + 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 4a2618f..fa3829d 100755 --- a/core/my_basic.h +++ b/core/my_basic.h @@ -143,17 +143,19 @@ extern "C" { # define MB_NULL_STRING "(empty)" #endif /* MB_NULL_STRING */ -#ifndef _MSC_VER -# ifndef _strcmpi +#ifndef mb_stricmp +# ifdef _MSC_VER +# define mb_stricmp _strcmpi +# else /* _MSC_VER */ # ifdef __BORLANDC__ -# define _strcmpi stricmp +# define mb_stricmp stricmp # elif defined __POCC__ -# define _strcmpi _stricmp +# define mb_stricmp _stricmp # else -# define _strcmpi strcasecmp +# define mb_stricmp strcasecmp # endif -# endif /* _strcmpi */ -#endif /* _MSC_VER */ +# endif /* _MSC_VER */ +#endif /* mb_stricmp */ #ifndef mb_assert # define mb_assert(__a) do { ((void)(__a)); assert(__a); } while(0) diff --git a/shell/main.c b/shell/main.c index fca2d72..cefdff3 100755 --- a/shell/main.c +++ b/shell/main.c @@ -82,7 +82,7 @@ extern "C" { #define _USE_MEM_POOL 1 #define _MAX_LINE_LENGTH 256 -#define _str_eq(__str1, __str2) (_strcmpi(__str1, __str2) == 0) +#define _str_eq(__str1, __str2) (mb_stricmp(__str1, __str2) == 0) #define _LINE_INC_STEP 16