X-Git-Url: https://review.openocd.org/gitweb?p=openocd.git;a=blobdiff_plain;f=src%2Fhelper%2Fjim.h;h=a5ae150171f897f3e9dc5e8be0ae4a3e1a06d480;hp=3c04972902a5a43a3881d74363a52ddca8cabadd;hb=fb1a9b2cb2f844a17d26dfeb3d26849364d93e26;hpb=68c598e88d5e09728ea845a81ab279c615bbaf0f diff --git a/src/helper/jim.h b/src/helper/jim.h index 3c04972902..a5ae150171 100644 --- a/src/helper/jim.h +++ b/src/helper/jim.h @@ -77,25 +77,6 @@ extern "C" { #include /* In order to export the Jim_Free() macro */ #include /* In order to get type va_list */ -/* ----------------------------------------------------------------------------- -* Some /very/ old compiler maybe do not know how to -* handle 'const'. They even do not know, how to ignore -* it. For those compiler it may be better to compile with -* define JIM_NO_CONST activated -* ---------------------------------------------------------------------------*/ - -#ifdef JIM_NO_CONST -# define const -#endif - -/* ----------------------------------------------------------------------------- - * System configuration - * For most modern systems, you can leave the default. - * For embedded systems some change may be required. - * ---------------------------------------------------------------------------*/ - -#define HAVE_LONG_LONG - /* ----------------------------------------------------------------------------- * Compiler specific fixes. * ---------------------------------------------------------------------------*/ @@ -106,7 +87,7 @@ extern "C" { #endif /* _MSC_VER */ /* Long Long type and related issues */ -#ifdef HAVE_LONG_LONG +#ifdef HAVE_LONG_LONG_INT # ifdef _MSC_VER /* MSC compiler */ # define jim_wide _int64 # ifndef LLONG_MAX @@ -138,7 +119,7 @@ extern "C" { * LIBC specific fixes * ---------------------------------------------------------------------------*/ -#ifdef HAVE_LONG_LONG +#ifdef HAVE_LONG_LONG_INT # if defined(_MSC_VER) || defined(__MSVCRT__) # define JIM_WIDE_MODIFIER "I64d" # else @@ -164,6 +145,7 @@ extern "C" { #define JIM_CONTINUE 4 #define JIM_EVAL 5 #define JIM_EXIT 6 +#define JIM_ERR_ADDSTACK 7 #define JIM_MAX_NESTING_DEPTH 10000 /* default max nesting depth */ /* Some function get an integer argument with flags to change @@ -259,7 +241,7 @@ typedef struct Jim_HashTableIterator { entry->val = (ht)->type->valDup((ht)->privdata, _val_); \ else \ entry->val = (_val_); \ -} while(0) +} while (0) #define Jim_FreeEntryKey(ht, entry) \ if ((ht)->type->keyDestructor) \ @@ -270,7 +252,7 @@ typedef struct Jim_HashTableIterator { entry->key = (ht)->type->keyDup((ht)->privdata, _key_); \ else \ entry->key = (_key_); \ -} while(0) +} while (0) #define Jim_CompareHashKeys(ht, key1, key2) \ (((ht)->type->keyCompare) ? \ @@ -530,6 +512,7 @@ typedef struct Jim_Interp { struct Jim_HashTable sharedStrings; /* Shared Strings hash table */ Jim_Obj *stackTrace; /* Stack trace object. */ Jim_Obj *unknown; /* Unknown command cache */ + int unknown_called; /* The unknown command has been invoked */ int errorFlag; /* Set if an error occurred during execution. */ int evalRetcodeLevel; /* Level where the last return with code JIM_EVAL happened. */ @@ -560,6 +543,7 @@ typedef struct Jim_Interp { * cached can no longer considered valid. */ #define Jim_InterpIncrProcEpoch(i) (i)->procEpoch++ #define Jim_SetResultString(i,s,l) Jim_SetResult(i, Jim_NewStringObj(i,s,l)) +#define Jim_SetResultInt(i,intval) Jim_SetResult(i, Jim_NewIntObj(i,intval)) #define Jim_SetEmptyResult(i) Jim_SetResult(i, (i)->emptyObj) #define Jim_GetResult(i) ((i)->result) #define Jim_CmdPrivData(i) ((i)->cmdPrivData) @@ -571,7 +555,7 @@ typedef struct Jim_Interp { Jim_IncrRefCount(_resultObjPtr_); \ Jim_DecrRefCount(i,(i)->result); \ (i)->result = _resultObjPtr_; \ -} while(0) +} while (0) /* Reference structure. The interpreter pointer is held within privdata member in HashTable */ #define JIM_REFERENCE_TAGLEN 7 /* The tag is fixed-length, because the reference @@ -579,7 +563,7 @@ typedef struct Jim_Interp { typedef struct Jim_Reference { Jim_Obj *objPtr; Jim_Obj *finalizerCmdNamePtr; - char tag[JIM_REFERENCE_TAGLEN+1]; + char tag[JIM_REFERENCE_TAGLEN + 1]; } Jim_Reference; /** Name Value Pairs, aka: NVP @@ -591,10 +575,10 @@ typedef struct Jim_Reference { * known string, or there may be multiple strings (aliases) that mean then same * thing. * - * An NVP Table is terminated with ".name=NULL". + * An NVP Table is terminated with ".name = NULL". * * During the 'name2value' operation, if no matching string is found - * the pointer to the terminal element (with p->name==NULL) is returned. + * the pointer to the terminal element (with p->name == NULL) is returned. * * Example: * \code @@ -648,7 +632,7 @@ typedef struct { #define JIM_API( X ) X #else #ifndef __JIM_CORE__ -# if defined JIM_EXTENSION || defined JIM_EMBEDDED +# if defined JIM_EMBEDDED # define JIM_API(x) (*x) # define JIM_STATIC # else @@ -982,7 +966,7 @@ JIM_STATIC const char *JIM_API( Jim_Debug_ArgvString )( Jim_Interp *interp, int * Usefull when dealing with command options. * that may come in any order... * - * Does not support "-foo=123" type options. + * Does not support "-foo = 123" type options. * Only supports tcl type options, like "-foo 123" */ @@ -1001,19 +985,19 @@ typedef struct jim_getopt { * * Jim_GetOpt_Setup( &goi, interp, argc, argv ); * - * while( goi.argc ){ + * while ( goi.argc ){ * e = Jim_GetOpt_Nvp( &goi, nvp_options, &n ); - * if( e != JIM_OK ){ + * if ( e != JIM_OK ){ * Jim_GetOpt_NvpUnknown( &goi, nvp_options, 0 ); * return e; * } * - * switch( n->value ){ + * switch ( n->value ){ * case ALIVE: * printf("Option ALIVE specified\n"); * break; * case FIRST: - * if( goi.argc < 1 ){ + * if ( goi.argc < 1 ){ * .. not enough args error .. * } * Jim_GetOpt_String( &goi, &cp, NULL ); @@ -1024,7 +1008,7 @@ typedef struct jim_getopt { * break; * case POLITICS: * e = Jim_GetOpt_Nvp( &goi, nvp_politics, &n ); - * if( e != JIM_OK ){ + * if ( e != JIM_OK ){ * Jim_GetOpt_NvpUnknown( &goi, nvp_politics, 1 ); * return e; * } @@ -1074,6 +1058,7 @@ JIM_STATIC int JIM_API( Jim_GetOpt_Obj)( Jim_GetOptInfo *goi, Jim_Obj **puthere * * \param goi - get opt info * \param puthere - where param is put + * \param len - return its length */ JIM_STATIC int JIM_API( Jim_GetOpt_String )( Jim_GetOptInfo *goi, char **puthere, int *len ); @@ -1112,26 +1097,26 @@ JIM_STATIC int JIM_API( Jim_GetOpt_Nvp)( Jim_GetOptInfo *goi, const Jim_Nvp *loo * * This function assumes the previous option argv[-1] is the unknown string. * - * If this option had some prefix, then pass "hadprefix=1" else pass "hadprefix=0" + * If this option had some prefix, then pass "hadprefix = 1" else pass "hadprefix = 0" * * Example: * \code * - * while( goi.argc ){ + * while ( goi.argc ){ * // Get the next option * e = Jim_GetOpt_Nvp( &goi, cmd_options, &n ); - * if( e != JIM_OK ){ + * if ( e != JIM_OK ){ * // option was not recognized - * // pass 'hadprefix=0' because there is no prefix + * // pass 'hadprefix = 0' because there is no prefix * Jim_GetOpt_NvpUnknown( &goi, cmd_options, 0 ); * return e; * } * - * switch( n->value ){ + * switch ( n->value ){ * case OPT_SEX: - * // handle: --sex male|female|lots|needmore + * // handle: --sex male | female | lots | needmore * e = Jim_GetOpt_Nvp( &goi, &nvp_sex, &n ); - * if( e != JIM_OK ){ + * if ( e != JIM_OK ){ * Jim_GetOpt_NvpUnknown( &ogi, nvp_sex, 1 ); * return e; * } @@ -1296,7 +1281,7 @@ static void Jim_InitExtension(Jim_Interp *interp) JIM_GET_API(Nvp_name2value); JIM_GET_API(Nvp_name2value_nocase); JIM_GET_API(Nvp_name2value_simple); - + JIM_GET_API(Nvp_value2name); JIM_GET_API(Nvp_value2name_simple);