#include <stdlib.h> /* In order to export the Jim_Free() macro */
#include <stdarg.h> /* 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.
* ---------------------------------------------------------------------------*/
#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
* LIBC specific fixes
* ---------------------------------------------------------------------------*/
-#ifdef HAVE_LONG_LONG
+#ifdef HAVE_LONG_LONG_INT
# if defined(_MSC_VER) || defined(__MSVCRT__)
# define JIM_WIDE_MODIFIER "I64d"
# else
#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
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) \
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) ? \
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. */
* 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)
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
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
* 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
#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
* 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"
*/
*
* 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 );
* 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;
* }
*
* \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 );
*
* 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;
* }
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);