X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fhelper%2Fjim.h;h=2c93f032a52eb3f0653ff05705cd214c1ef542a1;hb=85f97341032177d4cc909377edb3580bc6a57245;hp=342c19e3d631f76a4dcb85621a017379c4ee0d47;hpb=bbe7110f42e96f9c56f9eea7819bf9b287dbe16f;p=openocd diff --git a/src/helper/jim.h b/src/helper/jim.h index 342c19e3..2c93f032 100644 --- a/src/helper/jim.h +++ b/src/helper/jim.h @@ -3,7 +3,7 @@ * Copyright 2005 Salvatore Sanfilippo * Copyright 2005 Clemens Hintze * Copyright 2005 patthoyts - Pat Thoyts - * Copyright 2008 oharboe - Øyvind Harboe - soyvind.harboe@zylin.com + * Copyright 2008 oharboe - Øyvind Harboe - oyvind.harboe@zylin.com * Copyright 2008 Andrew Lunn * Copyright 2008 Duane Ellis * Copyright 2008 Uwe Klein @@ -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 @@ -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) @@ -675,6 +659,9 @@ JIM_STATIC char * JIM_API(Jim_StrDup) (const char *s); /* evaluation */ JIM_STATIC int JIM_API(Jim_Eval)(Jim_Interp *interp, const char *script); +/* in C code, you can do this and get better error messages */ +/* Jim_Eval_Named( interp, "some tcl commands", __FILE__, __LINE__ ); */ +JIM_STATIC int JIM_API(Jim_Eval_Named)(Jim_Interp *interp, const char *script,const char *filename, int lineno); JIM_STATIC int JIM_API(Jim_EvalGlobal)(Jim_Interp *interp, const char *script); JIM_STATIC int JIM_API(Jim_EvalFile)(Jim_Interp *interp, const char *filename); JIM_STATIC int JIM_API(Jim_EvalObj) (Jim_Interp *interp, Jim_Obj *scriptObjPtr); @@ -733,6 +720,8 @@ JIM_STATIC Jim_Obj * JIM_API(Jim_NewStringObjNoAlloc) (Jim_Interp *interp, char *s, int len); JIM_STATIC void JIM_API(Jim_AppendString) (Jim_Interp *interp, Jim_Obj *objPtr, const char *str, int len); +JIM_STATIC void JIM_API(Jim_AppendString_sprintf) (Jim_Interp *interp, Jim_Obj *objPtr, + const char *fmt, ... ); JIM_STATIC void JIM_API(Jim_AppendObj) (Jim_Interp *interp, Jim_Obj *objPtr, Jim_Obj *appendObjPtr); JIM_STATIC void JIM_API(Jim_AppendStrings) (Jim_Interp *interp, @@ -1169,6 +1158,7 @@ static void Jim_InitExtension(Jim_Interp *interp) JIM_GET_API(Alloc); JIM_GET_API(Free); JIM_GET_API(Eval); + JIM_GET_API(Eval_Named); JIM_GET_API(EvalGlobal); JIM_GET_API(EvalFile); JIM_GET_API(EvalObj); @@ -1195,6 +1185,7 @@ static void Jim_InitExtension(Jim_Interp *interp) JIM_GET_API(NewStringObj); JIM_GET_API(NewStringObjNoAlloc); JIM_GET_API(AppendString); + JIM_GET_API(AppendString_sprintf); JIM_GET_API(AppendObj); JIM_GET_API(AppendStrings); JIM_GET_API(StringEqObj); @@ -1289,7 +1280,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); @@ -1331,7 +1322,6 @@ static __inline__ void Jim_InitEmbedded(void) { #endif /* __JIM__H */ - /* * Local Variables: *** * c-basic-offset: 4 ***