#define utf8_strlen(S, B) ((B) < 0 ? (int)strlen(S) : (B))
-#define utf8_strwidth(S, B) utf8_strlen((S), (B))
#define utf8_tounicode(S, CP) (*(CP) = (unsigned char)*(S), 1)
#define utf8_getchars(CP, C) (*(CP) = (C), 1)
#define utf8_upper(C) toupper(C)
#define utf8_index(C, I) (I)
#define utf8_charlen(C) 1
#define utf8_prev_len(S, L) 1
-#define utf8_width(C) 1
#else
# endif
#endif
+
#define UCHAR(c) ((unsigned char)(c))
#define JIM_PATH_LEN 1024
+
#define JIM_NOTUSED(V) ((void) V)
#define JIM_LIBPATH "auto_path"
#define JIM_HT_INITIAL_SIZE 16
+
#define Jim_FreeEntryVal(ht, entry) \
if ((ht)->type->valDestructor) \
(ht)->type->valDestructor((ht)->privdata, (entry)->u.val)
+
#define Jim_SetHashVal(ht, entry, _val_) do { \
if ((ht)->type->valDup) \
(entry)->u.val = (ht)->type->valDup((ht)->privdata, (_val_)); \
(entry)->u.val = (_val_); \
} while(0)
+
#define Jim_SetHashIntVal(ht, entry, _val_) (entry)->u.intval = (_val_)
+
#define Jim_FreeEntryKey(ht, entry) \
if ((ht)->type->keyDestructor) \
(ht)->type->keyDestructor((ht)->privdata, (entry)->key)
+
#define Jim_SetHashKey(ht, entry, _key_) do { \
if ((ht)->type->keyDup) \
(entry)->key = (ht)->type->keyDup((ht)->privdata, (_key_)); \
(entry)->key = (void *)(_key_); \
} while(0)
+
#define Jim_CompareHashKeys(ht, key1, key2) \
(((ht)->type->keyCompare) ? \
(ht)->type->keyCompare((ht)->privdata, (key1), (key2)) : \
(key1) == (key2))
+
#define Jim_HashKey(ht, key) ((ht)->type->hashFunction(key) + (ht)->uniq)
+
#define Jim_GetHashEntryKey(he) ((he)->key)
+
#define Jim_GetHashEntryVal(he) ((he)->u.val)
+
#define Jim_GetHashEntryIntVal(he) ((he)->u.intval)
+
#define Jim_GetHashTableCollisions(ht) ((ht)->collisions)
+
#define Jim_GetHashTableSize(ht) ((ht)->size)
+
#define Jim_GetHashTableUsed(ht) ((ht)->used)
} Jim_Obj;
+
#define Jim_IncrRefCount(objPtr) \
++(objPtr)->refCount
+
#define Jim_DecrRefCount(interp, objPtr) \
if (--(objPtr)->refCount <= 0) Jim_FreeObj(interp, objPtr)
+
#define Jim_IsShared(objPtr) \
((objPtr)->refCount > 1)
#define Jim_FreeNewObj Jim_FreeObj
+
#define Jim_FreeIntRep(i,o) \
if ((o)->typePtr && (o)->typePtr->freeIntRepProc) \
(o)->typePtr->freeIntRepProc(i, o)
+
#define Jim_GetIntRepPtr(o) (o)->internalRep.ptr
+
#define Jim_SetIntRepPtr(o, p) \
(o)->internalRep.ptr = (p)
unsigned taint;
} Jim_Interp;
+
#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_SetResultBool(i,b) Jim_SetResultInt(i, b)
+
#define Jim_SetEmptyResult(i) Jim_SetResult(i, (i)->emptyObj)
+
#define Jim_GetResult(i) ((i)->result)
+
#define Jim_CmdPrivData(i) ((i)->cmdPrivData)
+
#define Jim_SetResult(i,o) do { \
Jim_Obj *_resultObjPtr_ = (o); \
Jim_IncrRefCount(_resultObjPtr_); \
} while(0)
+
#define Jim_GetId(i) (++(i)->id)
} Jim_Reference;
+
#define Jim_NewEmptyStringObj(i) Jim_NewStringObj(i, "", 0)
+
#define Jim_FreeHashTableIterator(iter) Jim_Free(iter)
#define JIM_EXPORT extern
JIM_EXPORT void *(*Jim_Allocator)(void *ptr, size_t size);
+
#define Jim_Free(P) Jim_Allocator((P), 0)
+
#define Jim_Realloc(P, S) Jim_Allocator((P), (S))
+
#define Jim_Alloc(S) Jim_Allocator(NULL, (S))
+
JIM_EXPORT char * Jim_StrDup (const char *s);
+
JIM_EXPORT char *Jim_StrDupLen(const char *s, int l);
+
JIM_EXPORT char **Jim_GetEnviron(void);
+
JIM_EXPORT void Jim_SetEnviron(char **env);
+
JIM_EXPORT int Jim_MakeTempFile(Jim_Interp *interp, const char *filename_template, int unlink_file);
#ifndef CLOCK_REALTIME
# define CLOCK_REALTIME 0
#ifndef CLOCK_MONOTONIC_RAW
# define CLOCK_MONOTONIC_RAW CLOCK_MONOTONIC
#endif
+
JIM_EXPORT jim_wide Jim_GetTimeUsec(unsigned type);
+
JIM_EXPORT int Jim_Eval(Jim_Interp *interp, const char *script);
+
JIM_EXPORT int Jim_EvalSource(Jim_Interp *interp, const char *filename, int lineno, const char *script);
+
#define Jim_Eval_Named(I, S, F, L) Jim_EvalSource((I), (F), (L), (S))
+
JIM_EXPORT int Jim_EvalGlobal(Jim_Interp *interp, const char *script);
+
JIM_EXPORT int Jim_EvalFile(Jim_Interp *interp, const char *filename);
+
JIM_EXPORT int Jim_EvalFileGlobal(Jim_Interp *interp, const char *filename);
+
JIM_EXPORT int Jim_EvalObj (Jim_Interp *interp, Jim_Obj *scriptObjPtr);
+
JIM_EXPORT int Jim_EvalObjVector (Jim_Interp *interp, int objc,
Jim_Obj *const *objv);
+
JIM_EXPORT int Jim_EvalObjList(Jim_Interp *interp, Jim_Obj *listObj);
+
JIM_EXPORT int Jim_EvalObjPrefix(Jim_Interp *interp, Jim_Obj *prefix,
int objc, Jim_Obj *const *objv);
+
#define Jim_EvalPrefix(i, p, oc, ov) Jim_EvalObjPrefix((i), Jim_NewStringObj((i), (p), -1), (oc), (ov))
+
JIM_EXPORT int Jim_EvalNamespace(Jim_Interp *interp, Jim_Obj *scriptObj, Jim_Obj *nsObj);
JIM_EXPORT int Jim_SubstObj (Jim_Interp *interp, Jim_Obj *substObjPtr,
Jim_Obj **resObjPtrPtr, int flags);
+
JIM_EXPORT Jim_Obj *Jim_GetSourceInfo(Jim_Interp *interp, Jim_Obj *objPtr,
int *lineptr);
+
JIM_EXPORT void Jim_SetSourceInfo(Jim_Interp *interp, Jim_Obj *objPtr,
Jim_Obj *fileNameObj, int lineNumber);
+
JIM_EXPORT void Jim_StackInit(Jim_Stack *stack, void (*freefunc) (void *ptr));
+
JIM_EXPORT void Jim_StackFree(Jim_Stack *stack);
+
JIM_EXPORT void Jim_StackPush(Jim_Stack *stack, void *element);
+
JIM_EXPORT void *Jim_StackPop(Jim_Stack *stack);
+
JIM_EXPORT int Jim_InitHashTable (Jim_HashTable *ht,
const Jim_HashTableType *type, void *privdata);
+
JIM_EXPORT void Jim_ExpandHashTable (Jim_HashTable *ht,
unsigned int size);
+
JIM_EXPORT int Jim_AddHashEntry (Jim_HashTable *ht, const void *key,
void *val);
+
JIM_EXPORT int Jim_ReplaceHashEntry (Jim_HashTable *ht,
const void *key, void *val);
+
JIM_EXPORT int Jim_DeleteHashEntry (Jim_HashTable *ht,
const void *key);
+
JIM_EXPORT int Jim_FreeHashTable (Jim_HashTable *ht);
+
JIM_EXPORT Jim_HashEntry * Jim_FindHashEntry (Jim_HashTable *ht,
const void *key);
+
JIM_EXPORT Jim_HashTableIterator *Jim_GetHashTableIterator
(Jim_HashTable *ht);
+
JIM_EXPORT Jim_HashEntry * Jim_NextHashEntry
(Jim_HashTableIterator *iter);
+
JIM_EXPORT Jim_Obj * Jim_NewObj (Jim_Interp *interp);
+
JIM_EXPORT void Jim_FreeObj (Jim_Interp *interp, Jim_Obj *objPtr);
+
JIM_EXPORT void Jim_InvalidateStringRep (Jim_Obj *objPtr);
+
JIM_EXPORT Jim_Obj * Jim_DuplicateObj (Jim_Interp *interp,
Jim_Obj *objPtr);
+
JIM_EXPORT const char * Jim_GetString(Jim_Obj *objPtr,
int *lenPtr);
+
JIM_EXPORT const char *Jim_String(Jim_Obj *objPtr);
+
JIM_EXPORT int Jim_Length(Jim_Obj *objPtr);
+
JIM_EXPORT Jim_Obj * Jim_NewStringObj (Jim_Interp *interp,
const char *s, int len);
+
JIM_EXPORT Jim_Obj *Jim_NewStringObjUtf8(Jim_Interp *interp,
const char *s, int charlen);
+
JIM_EXPORT Jim_Obj * Jim_NewStringObjNoAlloc (Jim_Interp *interp,
char *s, int len);
+
JIM_EXPORT void Jim_AppendString (Jim_Interp *interp, Jim_Obj *objPtr,
const char *str, int len);
+
JIM_EXPORT void Jim_AppendObj (Jim_Interp *interp, Jim_Obj *objPtr,
Jim_Obj *appendObjPtr);
+
JIM_EXPORT void Jim_AppendStrings (Jim_Interp *interp,
Jim_Obj *objPtr, ...);
+
JIM_EXPORT int Jim_StringEqObj(Jim_Obj *aObjPtr, Jim_Obj *bObjPtr);
+
JIM_EXPORT int Jim_StringMatchObj (Jim_Interp *interp, Jim_Obj *patternObjPtr,
Jim_Obj *objPtr, int nocase);
+
JIM_EXPORT Jim_Obj * Jim_StringRangeObj (Jim_Interp *interp,
Jim_Obj *strObjPtr, Jim_Obj *firstObjPtr,
Jim_Obj *lastObjPtr);
+
JIM_EXPORT Jim_Obj * Jim_FormatString (Jim_Interp *interp,
Jim_Obj *fmtObjPtr, int objc, Jim_Obj *const *objv);
+
JIM_EXPORT Jim_Obj * Jim_ScanString (Jim_Interp *interp, Jim_Obj *strObjPtr,
Jim_Obj *fmtObjPtr, int flags);
+
JIM_EXPORT int Jim_CompareStringImmediate (Jim_Interp *interp,
Jim_Obj *objPtr, const char *str);
+
JIM_EXPORT int Jim_StringCompareObj(Jim_Interp *interp, Jim_Obj *firstObjPtr,
Jim_Obj *secondObjPtr, int nocase);
+
JIM_EXPORT int Jim_Utf8Length(Jim_Interp *interp, Jim_Obj *objPtr);
+
JIM_EXPORT Jim_Obj * Jim_NewReference (Jim_Interp *interp,
Jim_Obj *objPtr, Jim_Obj *tagPtr, Jim_Obj *cmdNamePtr);
+
JIM_EXPORT Jim_Reference * Jim_GetReference (Jim_Interp *interp,
Jim_Obj *objPtr);
+
JIM_EXPORT int Jim_SetFinalizer (Jim_Interp *interp, Jim_Obj *objPtr, Jim_Obj *cmdNamePtr);
+
JIM_EXPORT int Jim_GetFinalizer (Jim_Interp *interp, Jim_Obj *objPtr, Jim_Obj **cmdNamePtrPtr);
+
JIM_EXPORT Jim_Interp * Jim_CreateInterp (void);
+
JIM_EXPORT void Jim_FreeInterp (Jim_Interp *i);
+
JIM_EXPORT int Jim_GetExitCode (Jim_Interp *interp);
+
JIM_EXPORT const char *Jim_ReturnCode(int code);
+
JIM_EXPORT void Jim_SetResultFormatted(Jim_Interp *interp, const char *format, ...);
#define Jim_RegisterCmd(interp, name, usage, minargs, maxargs, cmdproc, delproc, privdata, flags) \
Jim_RegisterCommand(interp, Jim_NewStringObj(interp, name, -1), cmdproc, delproc, usage, NULL, minargs, maxargs, flags, privdata)
+
JIM_EXPORT void Jim_RegisterCoreCommands (Jim_Interp *interp);
+
+JIM_EXPORT int Jim_CreateCommand (Jim_Interp *interp,
+ const char *cmdName, Jim_CmdProc *cmdProc, void *privData,
+ Jim_DelCmdProc *delProc);
+
JIM_EXPORT int Jim_DeleteCommand (Jim_Interp *interp,
Jim_Obj *cmdNameObj);
+
JIM_EXPORT int Jim_RenameCommand (Jim_Interp *interp,
Jim_Obj *oldNameObj, Jim_Obj *newNameObj);
+
JIM_EXPORT Jim_Cmd * Jim_GetCommand (Jim_Interp *interp,
Jim_Obj *objPtr, int flags);
+
JIM_EXPORT int Jim_SetVariable (Jim_Interp *interp,
Jim_Obj *nameObjPtr, Jim_Obj *valObjPtr);
+
JIM_EXPORT int Jim_SetVariableStr (Jim_Interp *interp,
const char *name, Jim_Obj *objPtr);
+
JIM_EXPORT int Jim_SetGlobalVariableStr (Jim_Interp *interp,
const char *name, Jim_Obj *objPtr);
+
JIM_EXPORT int Jim_SetVariableStrWithStr (Jim_Interp *interp,
const char *name, const char *val);
+
JIM_EXPORT int Jim_SetVariableLink (Jim_Interp *interp,
Jim_Obj *nameObjPtr, Jim_Obj *targetNameObjPtr,
Jim_CallFrame *targetCallFrame);
+
JIM_EXPORT Jim_Obj * Jim_MakeGlobalNamespaceName(Jim_Interp *interp,
Jim_Obj *nameObjPtr);
JIM_EXPORT Jim_Obj * Jim_GetVariable (Jim_Interp *interp,
Jim_Obj *nameObjPtr, int flags);
+
JIM_EXPORT Jim_Obj * Jim_GetGlobalVariable (Jim_Interp *interp,
Jim_Obj *nameObjPtr, int flags);
+
JIM_EXPORT Jim_Obj * Jim_GetVariableStr (Jim_Interp *interp,
const char *name, int flags);
+
JIM_EXPORT Jim_Obj * Jim_GetGlobalVariableStr (Jim_Interp *interp,
const char *name, int flags);
+
JIM_EXPORT int Jim_UnsetVariable (Jim_Interp *interp,
Jim_Obj *nameObjPtr, int flags);
+
JIM_EXPORT Jim_CallFrame *Jim_GetCallFrameByLevel(Jim_Interp *interp,
Jim_Obj *levelObjPtr);
+
JIM_EXPORT int Jim_Collect (Jim_Interp *interp);
+
JIM_EXPORT void Jim_CollectIfNeeded (Jim_Interp *interp);
+
JIM_EXPORT int Jim_GetIndex (Jim_Interp *interp, Jim_Obj *objPtr,
int *indexPtr);
+
JIM_EXPORT Jim_Obj * Jim_NewListObj (Jim_Interp *interp,
Jim_Obj *const *elements, int len);
+
JIM_EXPORT void Jim_ListInsertElements (Jim_Interp *interp,
Jim_Obj *listPtr, int listindex, int objc, Jim_Obj *const *objVec);
+
JIM_EXPORT void Jim_ListAppendElement (Jim_Interp *interp,
Jim_Obj *listPtr, Jim_Obj *objPtr);
+
JIM_EXPORT void Jim_ListAppendList (Jim_Interp *interp,
Jim_Obj *listPtr, Jim_Obj *appendListPtr);
+
JIM_EXPORT int Jim_ListLength (Jim_Interp *interp, Jim_Obj *objPtr);
+
JIM_EXPORT int Jim_ListIndex (Jim_Interp *interp, Jim_Obj *listPrt,
int listindex, Jim_Obj **objPtrPtr, int seterr);
+
JIM_EXPORT Jim_Obj *Jim_ListGetIndex(Jim_Interp *interp, Jim_Obj *listPtr, int idx);
+
JIM_EXPORT int Jim_SetListIndex (Jim_Interp *interp,
Jim_Obj *varNamePtr, Jim_Obj *const *indexv, int indexc,
Jim_Obj *newObjPtr);
+
JIM_EXPORT Jim_Obj * Jim_ConcatObj (Jim_Interp *interp, int objc,
Jim_Obj *const *objv);
+
JIM_EXPORT Jim_Obj *Jim_ListJoin(Jim_Interp *interp,
Jim_Obj *listObjPtr, const char *joinStr, int joinStrLen);
+
JIM_EXPORT Jim_Obj * Jim_NewDictObj (Jim_Interp *interp,
Jim_Obj *const *elements, int len);
+
JIM_EXPORT int Jim_DictKey (Jim_Interp *interp, Jim_Obj *dictPtr,
Jim_Obj *keyPtr, Jim_Obj **objPtrPtr, int flags);
+
JIM_EXPORT int Jim_DictKeysVector (Jim_Interp *interp,
Jim_Obj *dictPtr, Jim_Obj *const *keyv, int keyc,
Jim_Obj **objPtrPtr, int flags);
JIM_EXPORT int Jim_SetDictKeysVector (Jim_Interp *interp,
Jim_Obj *varNamePtr, Jim_Obj *const *keyv, int keyc,
Jim_Obj *newObjPtr, int flags);
+
JIM_EXPORT Jim_Obj **Jim_DictPairs(Jim_Interp *interp,
Jim_Obj *dictPtr, int *len);
+
JIM_EXPORT int Jim_DictAddElement(Jim_Interp *interp, Jim_Obj *objPtr,
Jim_Obj *keyObjPtr, Jim_Obj *valueObjPtr);
#define JIM_DICTMATCH_KEYS 0x0001
#define JIM_DICTMATCH_VALUES 0x002
+
JIM_EXPORT int Jim_DictMatchTypes(Jim_Interp *interp, Jim_Obj *objPtr, Jim_Obj *patternObj, int match_type, int return_types);
+
JIM_EXPORT int Jim_DictSize(Jim_Interp *interp, Jim_Obj *objPtr);
+
JIM_EXPORT int Jim_DictInfo(Jim_Interp *interp, Jim_Obj *objPtr);
+
JIM_EXPORT Jim_Obj *Jim_DictMerge(Jim_Interp *interp, int objc, Jim_Obj *const *objv);
+
JIM_EXPORT int Jim_GetReturnCode (Jim_Interp *interp, Jim_Obj *objPtr,
int *intPtr);
+
JIM_EXPORT int Jim_EvalExpression (Jim_Interp *interp,
Jim_Obj *exprObjPtr);
+
JIM_EXPORT int Jim_GetBoolFromExpr (Jim_Interp *interp,
Jim_Obj *exprObjPtr, int *boolPtr);
+
JIM_EXPORT int Jim_GetBoolean(Jim_Interp *interp, Jim_Obj *objPtr,
int *booleanPtr);
+
JIM_EXPORT int Jim_GetWide (Jim_Interp *interp, Jim_Obj *objPtr,
jim_wide *widePtr);
+
JIM_EXPORT int Jim_GetWideExpr(Jim_Interp *interp, Jim_Obj *objPtr,
jim_wide *widePtr);
+
JIM_EXPORT int Jim_GetLong (Jim_Interp *interp, Jim_Obj *objPtr,
long *longPtr);
+
#define Jim_NewWideObj Jim_NewIntObj
+
JIM_EXPORT Jim_Obj * Jim_NewIntObj (Jim_Interp *interp,
jim_wide wideValue);
+
JIM_EXPORT int Jim_GetDouble(Jim_Interp *interp, Jim_Obj *objPtr,
double *doublePtr);
+
JIM_EXPORT void Jim_SetDouble(Jim_Interp *interp, Jim_Obj *objPtr,
double doubleValue);
+
JIM_EXPORT Jim_Obj * Jim_NewDoubleObj(Jim_Interp *interp, double doubleValue);
+
JIM_EXPORT void Jim_WrongNumArgs (Jim_Interp *interp, int argc,
Jim_Obj *const *argv, const char *msg);
JIM_EXPORT int Jim_GetEnum (Jim_Interp *interp, Jim_Obj *objPtr,
const char * const *tablePtr, int *indexPtr, const char *name, int flags);
+
JIM_EXPORT int Jim_CheckShowCommands(Jim_Interp *interp, Jim_Obj *objPtr,
const char *const *tablePtr);
+
JIM_EXPORT int Jim_ScriptIsComplete(Jim_Interp *interp,
Jim_Obj *scriptObj, char *stateCharPtr);
typedef void (Jim_InterpDeleteProc)(Jim_Interp *interp, void *data);
+
JIM_EXPORT void * Jim_GetAssocData(Jim_Interp *interp, const char *key);
+
JIM_EXPORT int Jim_SetAssocData(Jim_Interp *interp, const char *key,
Jim_InterpDeleteProc *delProc, void *data);
+
JIM_EXPORT int Jim_DeleteAssocData(Jim_Interp *interp, const char *key);
+
JIM_EXPORT int Jim_CheckAbiVersion(Jim_Interp *interp, int abi_version);
+
JIM_EXPORT int Jim_PackageProvide (Jim_Interp *interp,
const char *name, const char *ver, int flags);
+
JIM_EXPORT int Jim_PackageRequire (Jim_Interp *interp,
const char *name, int flags);
+
#define Jim_PackageProvideCheck(INTERP, NAME) \
if (Jim_CheckAbiVersion(INTERP, JIM_ABI_VERSION) == JIM_ERR || Jim_PackageProvide(INTERP, NAME, "1.0", JIM_ERRMSG)) \
return JIM_ERR
+
JIM_EXPORT void Jim_MakeErrorMessage (Jim_Interp *interp);
+
JIM_EXPORT int Jim_InteractivePrompt (Jim_Interp *interp);
+
JIM_EXPORT void Jim_HistoryLoad(const char *filename);
+
JIM_EXPORT void Jim_HistorySave(const char *filename);
+
JIM_EXPORT char *Jim_HistoryGetline(Jim_Interp *interp, const char *prompt);
+
JIM_EXPORT void Jim_HistorySetCompletion(Jim_Interp *interp, Jim_Obj *completionCommandObj);
+
JIM_EXPORT void Jim_HistorySetHints(Jim_Interp *interp, Jim_Obj *hintsCommandObj);
+
JIM_EXPORT void Jim_HistoryAdd(const char *line);
+
JIM_EXPORT void Jim_HistoryShow(void);
+
JIM_EXPORT void Jim_HistorySetMaxLen(int length);
+
JIM_EXPORT int Jim_HistoryGetMaxLen(void);
+
JIM_EXPORT int Jim_InitStaticExtensions(Jim_Interp *interp);
+
JIM_EXPORT int Jim_StringToWide(const char *str, jim_wide *widePtr, int base);
+
JIM_EXPORT int Jim_IsBigEndian(void);
#define Jim_CheckSignal(i) ((i)->signal_level && (i)->sigmask)
+
JIM_EXPORT void Jim_SignalSetIgnored(jim_wide mask);
+
JIM_EXPORT int Jim_LoadLibrary(Jim_Interp *interp, const char *pathName);
+
JIM_EXPORT void Jim_FreeLoadHandles(Jim_Interp *interp);
+
JIM_EXPORT int Jim_AioFilehandle(Jim_Interp *interp, Jim_Obj *command);
+
JIM_EXPORT int Jim_IsDict(Jim_Obj *objPtr);
+
JIM_EXPORT int Jim_IsList(Jim_Obj *objPtr);
#define JimObjTypeName(O) ((O)->typePtr ? (O)->typePtr->name : "none")
+
static int utf8_tounicode_case(const char *s, int *uc, int upper)
{
int l = utf8_tounicode(s, uc);
return JimCheckConversion(str, endptr);
}
+
static jim_wide JimPowWide(jim_wide b, jim_wide e)
{
jim_wide res = 1;
}
#ifdef JIM_DEBUG_PANIC
+
static void JimPanicDump(int condition, const char *fmt, ...)
{
va_list ap;
#endif
}
+
static void JimInitHashTableIterator(Jim_HashTable *ht, Jim_HashTableIterator *iter)
{
iter->ht = ht;
return Jim_GenHashFunction(key, strlen(key));
}
+
static void *JimStringCopyHTDup(void *privdata, const void *key)
{
return Jim_StrDup(key);
}
+
static int JimStringCopyHTKeyCompare(void *privdata, const void *key1, const void *key2)
{
return strcmp(key1, key2) == 0;
}
+
static void JimStringCopyHTKeyDestructor(void *privdata, void *key)
{
Jim_Free(key);
void *data;
} AssocDataValue;
+
static void JimAssocDataHashTableValueDestructor(void *privdata, void *data)
{
AssocDataValue *assocPtr = (AssocDataValue *) data;
pc->missing.line = linenr;
}
+
static int JimParseScript(struct JimParserCtx *pc)
{
while (1) {
}
}
+
static int JimParseSep(struct JimParserCtx *pc)
{
pc->tstart = pc->p;
return JIM_OK;
}
+
static int JimParseEol(struct JimParserCtx *pc)
{
pc->tstart = pc->p;
pc->tend = pc->p - 1;
}
+
static int JimParseBrace(struct JimParserCtx *pc)
{
pc->tstart = pc->p + 1;
return JIM_OK;
}
+
static int JimParseCmd(struct JimParserCtx *pc)
{
pc->tstart = pc->p + 1;
return JIM_OK;
}
+
static int JimParseQuote(struct JimParserCtx *pc)
{
pc->tstart = pc->p + 1;
return JIM_OK;
}
+
static int JimParseVar(struct JimParserCtx *pc)
{
return JIM_OK;
}
+
static int JimParseStr(struct JimParserCtx *pc)
{
if (pc->tt == JIM_TT_SEP || pc->tt == JIM_TT_EOL ||
return JIM_OK;
}
+
static int JimParseComment(struct JimParserCtx *pc)
{
while (*pc->p) {
return -1;
}
+
static int odigitval(int c)
{
if (c >= '0' && c <= '7')
static int JimParseListStr(struct JimParserCtx *pc);
static int JimParseListQuote(struct JimParserCtx *pc);
+
static int JimParseList(struct JimParserCtx *pc)
{
if (isspace(UCHAR(*pc->p))) {
return JIM_OK;
}
+
static int JimParseListSep(struct JimParserCtx *pc)
{
pc->tstart = pc->p;
return JIM_OK;
}
+
static int JimParseListQuote(struct JimParserCtx *pc)
{
pc->p++;
return JIM_OK;
}
+
static int JimParseListStr(struct JimParserCtx *pc)
{
pc->tstart = pc->p;
return objPtr->bytes;
}
+
static void JimSetStringBytes(Jim_Obj *objPtr, const char *str)
{
objPtr->bytes = Jim_StrDup(str);
JIM_TYPE_NONE,
};
+
static void FreeInterpolatedInternalRep(Jim_Interp *interp, Jim_Obj *objPtr)
{
Jim_DecrRefCount(interp, objPtr->internalRep.dictSubstValue.indexObjPtr);
}
+
static void DupInterpolatedInternalRep(Jim_Interp *interp, Jim_Obj *srcPtr, Jim_Obj *dupPtr)
{
JIM_TYPE_REFERENCES,
};
+
static void DupStringInternalRep(Jim_Interp *interp, Jim_Obj *srcPtr, Jim_Obj *dupPtr)
{
JIM_NOTUSED(interp);
dupPtr->internalRep.strValue.charLength = srcPtr->internalRep.strValue.charLength;
}
+
static int SetStringFromAny(Jim_Interp *interp, Jim_Obj *objPtr)
{
if (objPtr->typePtr != &stringObjType) {
*rangeLenPtr = rangeLen;
}
+
static int JimStringGetRange(Jim_Interp *interp, Jim_Obj *firstObjPtr, Jim_Obj *lastObjPtr,
int len, int *first, int *last, int *range)
{
static int default_trim_chars_len = sizeof(default_trim_chars);
+
static Jim_Obj *JimStringTrimLeft(Jim_Interp *interp, Jim_Obj *strObjPtr, Jim_Obj *trimcharsObjPtr)
{
int len;
return Jim_NewStringObj(interp, newstr, len - (newstr - str));
}
+
static Jim_Obj *JimStringTrimRight(Jim_Interp *interp, Jim_Obj *strObjPtr, Jim_Obj *trimcharsObjPtr)
{
int len;
return strObjPtr;
}
+
static Jim_Obj *JimStringTrim(Jim_Interp *interp, Jim_Obj *strObjPtr, Jim_Obj *trimcharsObjPtr)
{
#ifdef HAVE_ISASCII
#define jim_isascii isascii
#else
+
static int jim_isascii(int c)
{
return !(c & ~0x7f);
}
#endif
+
static int JimStringIs(Jim_Interp *interp, Jim_Obj *strObjPtr, Jim_Obj *strClass, int strict)
{
static const char * const strclassnames[] = {
}
+
static int qsortCompareStringPointers(const void *a, const void *b)
{
char *const *sa = (char *const *)a;
JIM_NONE,
};
+
static Jim_Obj *JimNewScriptLineObj(Jim_Interp *interp, int argc, int line)
{
Jim_Obj *objPtr;
ParseToken static_list[20];
} ParseTokenList;
+
static void ScriptTokenListInit(ParseTokenList *tokenlist)
{
tokenlist->list = tokenlist->static_list;
tokenlist->count = 0;
}
+
static void ScriptTokenListFree(ParseTokenList *tokenlist)
{
if (tokenlist->list != tokenlist->static_list) {
interp->oldCmdCacheSize = 0;
}
+
static void JimIncrCmdRefCount(Jim_Cmd *cmdPtr)
{
cmdPtr->inUse++;
}
+
static void JimDecrCmdRefCount(Jim_Interp *interp, Jim_Cmd *cmdPtr)
{
if (--cmdPtr->inUse == 0) {
vv->refCount++;
}
+
static void JimDecrVarRef(Jim_Interp *interp, Jim_VarVal *vv)
{
assert(vv->refCount > 0);
}
}
+
static void JimVariablesHTValDestructor(void *interp, void *val)
{
JimDecrVarRef(interp, val);
}
+
static unsigned int JimObjectHTHashFunction(const void *key)
{
Jim_Obj *keyObj = (Jim_Obj *)key;
return Jim_GenHashFunction((const unsigned char *)string, length);
}
+
static int JimObjectHTKeyCompare(void *privdata, const void *key1, const void *key2)
{
return Jim_StringEqObj((Jim_Obj *)key1, (Jim_Obj *)key2);
return (void *)val;
}
+
static void JimObjectHTKeyValDestructor(void *interp, void *val)
{
Jim_DecrRefCount(interp, (Jim_Obj *)val);
return str;
}
+
static unsigned int JimCommandsHT_HashFunction(const void *key)
{
int len;
return Jim_GenHashFunction((const unsigned char *)str, len);
}
+
static int JimCommandsHT_KeyCompare(void *privdata, const void *key1, const void *key2)
{
int len1, len2;
return len1 == len2 && *str1 == *str2 && memcmp(str1, str2, len1) == 0;
}
+
static void JimCommandsHT_ValDestructor(void *interp, void *val)
{
JimDecrCmdRefCount(interp, val);
return JIM_OK;
}
+
static int JimCreateProcedureStatics(Jim_Interp *interp, Jim_Cmd *cmdPtr, Jim_Obj *staticsListObjPtr)
{
int len, i;
Jim_DecrRefCount(interp, objPtr->internalRep.cmdValue.nsObj);
}
+
static void DupCommandInternalRep(Jim_Interp *interp, Jim_Obj *srcPtr, Jim_Obj *dupPtr)
{
dupPtr->internalRep.cmdValue = srcPtr->internalRep.cmdValue;
static int JimDictSugarSet(Jim_Interp *interp, Jim_Obj *ObjPtr, Jim_Obj *valObjPtr);
static Jim_Obj *JimDictSugarGet(Jim_Interp *interp, Jim_Obj *objPtr, int flags);
+
static int JimSetNewVariable(Jim_HashTable *ht, Jim_Obj *nameObjPtr, Jim_VarVal *vv)
{
return Jim_AddHashEntry(ht, nameObjPtr, vv);
}
+
static Jim_VarVal *JimFindVariable(Jim_HashTable *ht, Jim_Obj *nameObjPtr)
{
Jim_HashEntry *he = Jim_FindHashEntry(ht, nameObjPtr);
return NULL;
}
+
static int JimUnsetVariable(Jim_HashTable *ht, Jim_Obj *nameObjPtr)
{
return Jim_DeleteHashEntry(ht, nameObjPtr);
}
+
static Jim_VarVal *JimCreateVariable(Jim_Interp *interp, Jim_Obj *nameObjPtr, Jim_Obj *valObjPtr)
{
const char *name;
Jim_DecrRefCount(interp, objPtr->internalRep.dictSubstValue.indexObjPtr);
}
+
static void DupDictSubstInternalRep(Jim_Interp *interp, Jim_Obj *srcPtr, Jim_Obj *dupPtr)
{
return cf;
}
+
static int JimDeleteLocalProcs(Jim_Interp *interp, Jim_Stack *localCommands)
{
#define JIM_FCF_FULL 0
#define JIM_FCF_REUSE 1
+
static void JimFreeCallFrame(Jim_Interp *interp, Jim_CallFrame *cf, int action)
{
JimDeleteLocalProcs(interp, cf->localCommands);
return NULL;
}
+
static Jim_EvalFrame *JimGetEvalFrameByProcLevel(Jim_Interp *interp, int proclevel)
{
Jim_EvalFrame *evalFrame;
Jim_ListAppendElement(interp, listObj, Jim_NewListObj(interp, frame->argv, frame->argc));
}
+
static void JimSetStackTrace(Jim_Interp *interp, Jim_Obj *stackTraceObj)
{
interp->hasErrorStackTrace = 1;
}
+
static void JimSetErrorStack(Jim_Interp *interp, ScriptObj *script)
{
if (!interp->hasErrorStackTrace) {
};
+
static void UpdateStringOfInt(struct Jim_Obj *objPtr)
{
char buf[JIM_INTEGER_SPACE + 1];
JimSetStringBytes(objPtr, buf);
}
+
static int SetIntFromAny(Jim_Interp *interp, Jim_Obj *objPtr, int flags)
{
jim_wide wideValue;
}
#ifdef JIM_OPTIMIZATION
+
static int JimIsWide(Jim_Obj *objPtr)
{
return objPtr->typePtr == &intObjType;
#define isinf(X) (1.0 / (X) == 0.0)
#endif
+
static void UpdateStringOfDouble(struct Jim_Obj *objPtr)
{
double value = objPtr->internalRep.doubleValue;
}
}
+
static int SetDoubleFromAny(Jim_Interp *interp, Jim_Obj *objPtr)
{
double doubleValue;
1, 5, 2, 3,
};
+
static int SetBooleanFromAny(Jim_Interp *interp, Jim_Obj *objPtr, int flags)
{
int index = Jim_FindByName(Jim_String(objPtr), jim_true_false_strings,
#define JIM_ELESTR_SIMPLE 0
#define JIM_ELESTR_BRACE 1
#define JIM_ELESTR_QUOTE 2
+
static unsigned char ListElementQuotingType(const char *s, int len)
{
int i, level, blevel, trySimple = 1;
return p - q;
}
+
static void JimMakeListStringRep(Jim_Obj *objPtr, Jim_Obj **objv, int objc)
{
#define STATIC_QUOTING_LEN 32
}
}
+
static void UpdateStringOfList(struct Jim_Obj *objPtr)
{
JimMakeListStringRep(objPtr, objPtr->internalRep.listValue.ele, objPtr->internalRep.listValue.len);
}
+
static int SetListFromAny(Jim_Interp *interp, struct Jim_Obj *objPtr)
{
struct JimParserCtx parser;
static struct lsort_info *sort_info;
+
static int ListSortIndexHelper(Jim_Obj **lhsObj, Jim_Obj **rhsObj)
{
Jim_Obj *lObj, *rObj;
return Jim_StringCompareObj(sort_info->interp, *lhsObj, *rhsObj, 0) * sort_info->order;
}
+
static int ListSortStringNoCase(Jim_Obj **lhsObj, Jim_Obj **rhsObj)
{
return Jim_StringCompareObj(sort_info->interp, *lhsObj, *rhsObj, 1) * sort_info->order;
}
+
static int ListSortDict(Jim_Obj **lhsObj, Jim_Obj **rhsObj)
{
}
}
+
static int ListSortInteger(Jim_Obj **lhsObj, Jim_Obj **rhsObj)
{
jim_wide lhs = 0, rhs = 0;
return JimSign(lhs - rhs) * sort_info->order;
}
+
static int ListSortReal(Jim_Obj **lhsObj, Jim_Obj **rhsObj)
{
double lhs = 0, rhs = 0;
return -sort_info->order;
}
+
static int ListSortCommand(Jim_Obj **lhsObj, Jim_Obj **rhsObj)
{
Jim_Obj *compare_script;
return ret;
}
+
static int ListSetIndex(Jim_Interp *interp, Jim_Obj *listPtr, int idx,
Jim_Obj *newObjPtr, int flags)
{
return dict;
}
+
static void FreeDictInternalRep(Jim_Interp *interp, Jim_Obj *objPtr)
{
JimFreeDict(interp, objPtr->internalRep.dictValue);
}
+
static void DupDictInternalRep(Jim_Interp *interp, Jim_Obj *srcPtr, Jim_Obj *dupPtr)
{
Jim_Dict *oldDict = srcPtr->internalRep.dictValue;
dupPtr->typePtr = &dictObjType;
}
+
static void UpdateStringOfDict(struct Jim_Obj *objPtr)
{
JimMakeListStringRep(objPtr, objPtr->internalRep.dictValue->table, objPtr->internalRep.dictValue->len);
}
+
static int SetDictFromAny(Jim_Interp *interp, struct Jim_Obj *objPtr)
{
int listlen;
JIM_TYPE_NONE,
};
+
static void UpdateStringOfIndex(struct Jim_Obj *objPtr)
{
if (objPtr->internalRep.intValue == -1) {
}
}
+
static int SetIndexFromAny(Jim_Interp *interp, Jim_Obj *objPtr)
{
jim_wide idx;
}
}
+
static int SetReturnCodeFromAny(Jim_Interp *interp, Jim_Obj *objPtr)
{
int returnCode;
static int JimExprGetTermBoolean(Jim_Interp *interp, struct JimExprNode *node);
static int JimExprEvalTermNode(Jim_Interp *interp, struct JimExprNode *node);
+
static int JimExprOpNumUnary(Jim_Interp *interp, struct JimExprNode *node)
{
int intresult = 1;
return rc;
}
+
static double JimRandDouble(Jim_Interp *interp)
{
unsigned long x;
return (double)x / (double)~0UL;
}
+
static int JimExprOpIntUnary(Jim_Interp *interp, struct JimExprNode *node)
{
jim_wide wA;
return rc;
}
+
static int JimExprOpNone(Jim_Interp *interp, struct JimExprNode *node)
{
JimPanic((node->type != JIM_EXPROP_FUNC_RAND, "JimExprOpNone only support rand()"));
}
#ifdef JIM_MATH_FUNCTIONS
+
static int JimExprOpDoubleUnary(Jim_Interp *interp, struct JimExprNode *node)
{
int rc;
goto done;
}
+
static int JimSearchList(Jim_Interp *interp, Jim_Obj *listObjPtr, Jim_Obj *valObj)
{
int listlen;
return eq;
}
+
static int JimExprOpStrBin(Jim_Interp *interp, struct JimExprNode *node)
{
Jim_Obj *A, *B;
return rc;
}
+
static int ExprBool(Jim_Interp *interp, Jim_Obj *obj)
{
long l;
return ret;
}
+
static int JimExprOpAnd(Jim_Interp *interp, struct JimExprNode *node)
{
return JIM_OK;
}
+
static int JimExprOpOr(Jim_Interp *interp, struct JimExprNode *node)
{
return JIM_OK;
}
+
static int JimExprOpTernary(Jim_Interp *interp, struct JimExprNode *node)
{
#define JIM_EXPR_OPERATORS_NUM \
(sizeof(Jim_ExprOperators)/sizeof(struct Jim_ExprOperator))
+
static int JimParseExpression(struct JimParserCtx *pc)
{
pc->errmsg = NULL;
return JIM_OK;
}
+
static int JimParseExprNumber(struct JimParserCtx *pc)
{
char *end;
return JIM_OK;
}
+
static int JimParseExprIrrational(struct JimParserCtx *pc)
{
const char *irrationals[] = { "NaN", "nan", "NAN", "Inf", "inf", "INF", NULL };
return JIM_ERR;
}
+
static int JimParseExprBoolean(struct JimParserCtx *pc)
{
int i;
return &Jim_ExprOperators[opcode - JIM_TT_EXPR_OP];
}
+
static int JimParseExprOperator(struct JimParserCtx *pc)
{
int i;
int inUse;
};
+
static void ExprTreeFreeNodes(Jim_Interp *interp, struct JimExprNode *nodes, int num)
{
int i;
Jim_Free(nodes);
}
+
static void ExprTreeFree(Jim_Interp *interp, struct ExprTree *expr)
{
ExprTreeFreeNodes(interp, expr->nodes, expr->len);
Jim_Free(expr);
}
+
static void FreeExprInternalRep(Jim_Interp *interp, Jim_Obj *objPtr)
{
struct ExprTree *expr = (void *)objPtr->internalRep.ptr;
}
}
+
static void DupExprInternalRep(Jim_Interp *interp, Jim_Obj *srcPtr, Jim_Obj *dupPtr)
{
JIM_NOTUSED(interp);
};
#ifdef DEBUG_SHOW_EXPR
+
static void JimShowExprNode(struct JimExprNode *node, int level)
{
int i;
}
}
+
static int JimExprGetTerm(Jim_Interp *interp, struct JimExprNode *node, Jim_Obj **objPtrPtr)
{
int rc = JimExprEvalTermNode(interp, node);
return rc;
}
+
static int JimExprGetTermBoolean(Jim_Interp *interp, struct JimExprNode *node)
{
if (JimExprEvalTermNode(interp, node) == JIM_OK) {
dupPtr->typePtr = &scanFmtStringObjType;
}
+
static void UpdateStringOfScanFmt(Jim_Obj *objPtr)
{
JimSetStringBytes(objPtr, ((ScanFmtStringObj *) objPtr->internalRep.ptr)->stringRep);
return retcode;
}
+
static void JimPushEvalFrame(Jim_Interp *interp, Jim_EvalFrame *frame, Jim_Obj *scriptObj)
{
memset(frame, 0, sizeof(*frame));
#endif
}
+
static void JimPopEvalFrame(Jim_Interp *interp)
{
interp->evalFrame = interp->evalFrame->parent;
return ret;
}
+
static int JimSubstOneToken(Jim_Interp *interp, const ScriptToken *token, Jim_Obj **objPtrPtr)
{
Jim_Obj *objPtr;
return retcode;
}
+
static int JimSetProcArg(Jim_Interp *interp, Jim_Obj *argNameObj, Jim_Obj *argValObj)
{
int retcode;
}
}
+
static int JimInfoLevel(Jim_Interp *interp, Jim_Obj *levelObjPtr, Jim_Obj **objPtrPtr)
{
long level;
return JIM_ERR;
}
+
static int JimInfoFrame(Jim_Interp *interp, Jim_Obj *levelObjPtr, Jim_Obj **objPtrPtr)
{
long level;
}
-int Jim_CommandMatchObj(Jim_Interp *interp, Jim_Obj *commandObj, Jim_Obj *patternObj,
+static int JimCommandMatchObj(Jim_Interp *interp, Jim_Obj *commandObj, Jim_Obj *patternObj,
Jim_Obj *stringObj, int flags)
{
Jim_Obj *parms[5];
command = Jim_NewStringObj(interp, "regexp", -1);
case SWITCH_CMD:{
- int rc = Jim_CommandMatchObj(interp, command, patObj, strObj, match_flags);
+ int rc = JimCommandMatchObj(interp, command, patObj, strObj, match_flags);
if (argc - opt == 1) {
JimListGetElements(interp, argv[opt], &patCount, &caseList);
case OPT_REGEXP:
case OPT_COMMAND:
- eq = Jim_CommandMatchObj(interp, commandObj, argv[1], objPtr, match_flags);
+ eq = JimCommandMatchObj(interp, commandObj, argv[1], objPtr, match_flags);
if (eq < 0) {
Jim_DecrRefCount(interp, searchListObj);
rc = JIM_ERR;
return Jim_EvalExpression(interp, argv[1]);
}
+
static int JimBreakContinueHelper(Jim_Interp *interp, int argc, Jim_Obj *const *argv, int retcode)
{
if (argc == 2) {
return JIM_OK;
}
+
static int JimAliasCmd(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
{
Jim_Obj *cmdList;
return JimEvalObjList(interp, cmdList);
}
+
static void JimAliasCmdDelete(Jim_Interp *interp, void *privData)
{
Jim_Obj *prefixListObj = privData;
Jim_DecrRefCount(interp, prefixListObj);
}
+
static int Jim_AliasCoreCommand(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
{
Jim_Obj *prefixListObj = Jim_NewListObj(interp, argv + 2, argc - 2);
return JIM_EXIT;
}
+
static int JimMatchReturnCodes(Jim_Interp *interp, Jim_Obj *retcodeListObj, int rc)
{
int len = Jim_ListLength(interp, retcodeListObj);
return JIM_OK;
}
+
static int Jim_EvalEnsemble(Jim_Interp *interp, const char *basecmd, const char *subcmd, int argc, Jim_Obj *const *argv)
{
Jim_Obj *prefixObj = Jim_NewStringObj(interp, basecmd, -1);
}
#ifdef jim_ext_namespace
+
static int JimIsGlobalNamespace(Jim_Obj *objPtr)
{
int len;
return JIM_OK;
}
+
static int JimRangeLen(jim_wide start, jim_wide end, jim_wide step)
{
jim_wide len;
int Jim_MakeTempFile(Jim_Interp *interp, const char *filename_template, int unlink_file)
{
int fd;
+#ifdef HAVE_UMASK
mode_t mask;
+#endif
Jim_Obj *filenameObj;
if (filename_template == NULL) {