aboutsummaryrefslogtreecommitdiff
path: root/jim.h
diff options
context:
space:
mode:
authorantirez <antirez>2005-03-01 15:22:38 +0000
committerantirez <antirez>2005-03-01 15:22:38 +0000
commit2a8972849842fa792927ea97ee98fd6fb97b72a0 (patch)
tree1b3993e5a9945b48f2f0821a6a6273849524f959 /jim.h
parent2914963920493d47663f32b3a00407093ccee160 (diff)
downloadjimtcl-2a8972849842fa792927ea97ee98fd6fb97b72a0.zip
jimtcl-2a8972849842fa792927ea97ee98fd6fb97b72a0.tar.gz
jimtcl-2a8972849842fa792927ea97ee98fd6fb97b72a0.tar.bz2
Change in design of the Jim STUBS system.
Should avoid problems on Solaris, and apperas to be generally more sane about exported symbols restriction.
Diffstat (limited to 'jim.h')
-rw-r--r--jim.h234
1 files changed, 131 insertions, 103 deletions
diff --git a/jim.h b/jim.h
index 77b3e46..5441da7 100644
--- a/jim.h
+++ b/jim.h
@@ -431,162 +431,190 @@ typedef struct Jim_Reference {
* linked itself, and to load extensions compiled with different
* versions of Jim (as long as the API is still compatible.) */
-#ifdef JIM_EXTENSION
+/* Macros are common for core and extensions */
+#define Jim_Free free
+#define Jim_FreeHashTableIterator(iter) Jim_Free(iter)
+
+#ifndef __JIM_CORE__
#define JIM_API(x) (*x)
+#define JIM_STATIC
#else
#define JIM_API(x) x
-#endif
+#define JIM_STATIC static
+#endif /* __JIM_CORE__ */
/* Memory allocation */
-void * JIM_API(Jim_Alloc) (int size);
-char * JIM_API(Jim_StrDup) (char *s);
-#define Jim_Free free
+JIM_STATIC void * JIM_API(Jim_Alloc) (int size);
+JIM_STATIC char * JIM_API(Jim_StrDup) (char *s);
/* evaluation */
-int JIM_API(Jim_EvalObj) (Jim_Interp *interp, Jim_Obj *scriptObjPtr);
-int JIM_API(Jim_EvalObjVector) (Jim_Interp *interp, int objc, Jim_Obj **objv);
-int JIM_API(Jim_SubstObj) (Jim_Interp *interp, Jim_Obj *substObjPtr,
+JIM_STATIC int JIM_API(Jim_EvalObj) (Jim_Interp *interp, Jim_Obj *scriptObjPtr);
+JIM_STATIC int JIM_API(Jim_EvalObjVector) (Jim_Interp *interp, int objc,
+ Jim_Obj **objv);
+JIM_STATIC int JIM_API(Jim_SubstObj) (Jim_Interp *interp, Jim_Obj *substObjPtr,
Jim_Obj **resObjPtrPtr, int flags);
/* hash table */
-int JIM_API(Jim_InitHashTable) (Jim_HashTable *ht, Jim_HashTableType *type,
- void *privdata);
-int JIM_API(Jim_ExpandHashTable) (Jim_HashTable *ht, unsigned int size);
-int JIM_API(Jim_AddHashEntry) (Jim_HashTable *ht, void *key, void *val);
-int JIM_API(Jim_ReplaceHashEntry) (Jim_HashTable *ht, void *key, void *val);
-int JIM_API(Jim_DeleteHashEntry) (Jim_HashTable *ht, void *key);
-int JIM_API(Jim_FreeHashTable) (Jim_HashTable *ht);
-Jim_HashEntry * JIM_API(Jim_FindHashEntry) (Jim_HashTable *ht, void *key);
-int JIM_API(Jim_ResizeHashTable) (Jim_HashTable *ht);
-Jim_HashTableIterator *JIM_API(Jim_GetHashTableIterator) (Jim_HashTable *ht);
-Jim_HashEntry * JIM_API(Jim_NextHashEntry) (Jim_HashTableIterator *iterator);
-#define Jim_FreeHashTableIterator(iter) Jim_Free(iter)
+JIM_STATIC int JIM_API(Jim_InitHashTable) (Jim_HashTable *ht,
+ Jim_HashTableType *type, void *privdata);
+JIM_STATIC int JIM_API(Jim_ExpandHashTable) (Jim_HashTable *ht,
+ unsigned int size);
+JIM_STATIC int JIM_API(Jim_AddHashEntry) (Jim_HashTable *ht, void *key,
+ void *val);
+JIM_STATIC int JIM_API(Jim_ReplaceHashEntry) (Jim_HashTable *ht, void *key,
+ void *val);
+JIM_STATIC int JIM_API(Jim_DeleteHashEntry) (Jim_HashTable *ht, void *key);
+JIM_STATIC int JIM_API(Jim_FreeHashTable) (Jim_HashTable *ht);
+JIM_STATIC Jim_HashEntry * JIM_API(Jim_FindHashEntry) (Jim_HashTable *ht,
+ void *key);
+JIM_STATIC int JIM_API(Jim_ResizeHashTable) (Jim_HashTable *ht);
+JIM_STATIC Jim_HashTableIterator *JIM_API(Jim_GetHashTableIterator)
+ (Jim_HashTable *ht);
+JIM_STATIC Jim_HashEntry * JIM_API(Jim_NextHashEntry)
+ (Jim_HashTableIterator *iterator);
/* objects */
-Jim_Obj * JIM_API(Jim_NewObj) (Jim_Interp *interp);
-void JIM_API(Jim_FreeObj) (Jim_Interp *interp, Jim_Obj *objPtr);
-void JIM_API(Jim_InvalidateStringRep) (Jim_Obj *objPtr);
-void JIM_API(Jim_InitStringRep) (Jim_Obj *objPtr, char *bytes, int length);
-Jim_Obj * JIM_API(Jim_DuplicateObj) (Jim_Interp *interp, Jim_Obj *objPtr);
-char * JIM_API(Jim_GetString)(Jim_Obj *objPtr, int *lenPtr);
-void JIM_API(Jim_InvalidateStringRep)(Jim_Obj *objPtr);
+JIM_STATIC Jim_Obj * JIM_API(Jim_NewObj) (Jim_Interp *interp);
+JIM_STATIC void JIM_API(Jim_FreeObj) (Jim_Interp *interp, Jim_Obj *objPtr);
+JIM_STATIC void JIM_API(Jim_InvalidateStringRep) (Jim_Obj *objPtr);
+JIM_STATIC void JIM_API(Jim_InitStringRep) (Jim_Obj *objPtr, char *bytes,
+ int length);
+JIM_STATIC Jim_Obj * JIM_API(Jim_DuplicateObj) (Jim_Interp *interp,
+ Jim_Obj *objPtr);
+JIM_STATIC char * JIM_API(Jim_GetString)(Jim_Obj *objPtr, int *lenPtr);
+JIM_STATIC void JIM_API(Jim_InvalidateStringRep)(Jim_Obj *objPtr);
/* string object */
-Jim_Obj * JIM_API(Jim_NewStringObj) (Jim_Interp *interp, const char *s,
- int len);
-Jim_Obj * JIM_API(Jim_NewStringObjNoAlloc) (Jim_Interp *interp, char *s,
- int len);
-void JIM_API(Jim_AppendString) (Jim_Interp *interp, Jim_Obj *objPtr, char *str,
- int len);
-void JIM_API(Jim_AppendObj) (Jim_Interp *interp, Jim_Obj *objPtr,
+JIM_STATIC Jim_Obj * JIM_API(Jim_NewStringObj) (Jim_Interp *interp,
+ const char *s, int len);
+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,
+ char *str, int len);
+JIM_STATIC void JIM_API(Jim_AppendObj) (Jim_Interp *interp, Jim_Obj *objPtr,
Jim_Obj *appendObjPtr);
-void JIM_API(Jim_AppendStrings) (Jim_Interp *interp, Jim_Obj *objPtr, ...);
-int JIM_API(Jim_StringEqObj) (Jim_Obj *aObjPtr, Jim_Obj *bObjPtr, int nocase);
-int JIM_API(Jim_StringMatchObj) (Jim_Obj *patternObjPtr, Jim_Obj *objPtr, int nocase);
-Jim_Obj * JIM_API(Jim_StringRangeObj) (Jim_Interp *interp,
+JIM_STATIC void JIM_API(Jim_AppendStrings) (Jim_Interp *interp,
+ Jim_Obj *objPtr, ...);
+JIM_STATIC int JIM_API(Jim_StringEqObj) (Jim_Obj *aObjPtr, Jim_Obj *bObjPtr,
+ int nocase);
+JIM_STATIC int JIM_API(Jim_StringMatchObj) (Jim_Obj *patternObjPtr,
+ Jim_Obj *objPtr, int nocase);
+JIM_STATIC Jim_Obj * JIM_API(Jim_StringRangeObj) (Jim_Interp *interp,
Jim_Obj *strObjPtr, Jim_Obj *firstObjPtr,
Jim_Obj *lastObjPtr);
-int JIM_API(Jim_CompareStringImmediate) (Jim_Interp *interp, Jim_Obj *objPtr,
- char *str);
+JIM_STATIC int JIM_API(Jim_CompareStringImmediate) (Jim_Interp *interp,
+ Jim_Obj *objPtr, char *str);
/* reference object */
-Jim_Obj * JIM_API(Jim_NewReference) (Jim_Interp *interp, Jim_Obj *objPtr,
- Jim_Obj *cmdNamePtr);
-Jim_Reference * JIM_API(Jim_GetReference) (Jim_Interp *interp, Jim_Obj *objPtr);
+JIM_STATIC Jim_Obj * JIM_API(Jim_NewReference) (Jim_Interp *interp,
+ Jim_Obj *objPtr, Jim_Obj *cmdNamePtr);
+JIM_STATIC Jim_Reference * JIM_API(Jim_GetReference) (Jim_Interp *interp,
+ Jim_Obj *objPtr);
/* interpreter */
-Jim_Interp * JIM_API(Jim_CreateInterp) (void);
-void JIM_API(Jim_FreeInterp) (Jim_Interp *i);
+JIM_STATIC Jim_Interp * JIM_API(Jim_CreateInterp) (void);
+JIM_STATIC void JIM_API(Jim_FreeInterp) (Jim_Interp *i);
/* commands */
-void JIM_API(Jim_RegisterCoreCommands) (Jim_Interp *interp);
-int JIM_API(Jim_CreateCommand) (Jim_Interp *interp, char *cmdName,
+JIM_STATIC void JIM_API(Jim_RegisterCoreCommands) (Jim_Interp *interp);
+JIM_STATIC int JIM_API(Jim_CreateCommand) (Jim_Interp *interp, char *cmdName,
Jim_CmdProc cmdProc, void *privData);
-int JIM_API(Jim_CreateProcedure) (Jim_Interp *interp, char *cmdName,
+JIM_STATIC int JIM_API(Jim_CreateProcedure) (Jim_Interp *interp, char *cmdName,
Jim_Obj *argListObjPtr, Jim_Obj *bodyObjPtr,
int arityMin, int arityMax);
-int JIM_API(Jim_DeleteCommand) (Jim_Interp *interp, char *cmdName);
-int JIM_API(Jim_RenameCommand) (Jim_Interp *interp, char *oldName,
+JIM_STATIC int JIM_API(Jim_DeleteCommand) (Jim_Interp *interp, char *cmdName);
+JIM_STATIC int JIM_API(Jim_RenameCommand) (Jim_Interp *interp, char *oldName,
char *newName);
-Jim_Cmd * JIM_API(Jim_GetCommand) (Jim_Interp *interp, Jim_Obj *objPtr,
- int flags);
-int JIM_API(Jim_SetVariable) (Jim_Interp *interp, Jim_Obj *nameObjPtr,
- Jim_Obj *valObjPtr);
-int JIM_API(Jim_SetVariableLink) (Jim_Interp *interp, Jim_Obj *nameObjPtr,
- Jim_Obj *targetNameObjPtr, Jim_CallFrame *targetCallFrame);
-Jim_Obj * JIM_API(Jim_GetVariable) (Jim_Interp *interp, Jim_Obj *nameObjPtr,
- int flags);
-int JIM_API(Jim_UnsetVariable) (Jim_Interp *interp, Jim_Obj *nameObjPtr,
- int flags);
+JIM_STATIC Jim_Cmd * JIM_API(Jim_GetCommand) (Jim_Interp *interp,
+ Jim_Obj *objPtr, int flags);
+JIM_STATIC int JIM_API(Jim_SetVariable) (Jim_Interp *interp,
+ Jim_Obj *nameObjPtr, Jim_Obj *valObjPtr);
+JIM_STATIC int JIM_API(Jim_SetVariableLink) (Jim_Interp *interp,
+ Jim_Obj *nameObjPtr, Jim_Obj *targetNameObjPtr,
+ Jim_CallFrame *targetCallFrame);
+JIM_STATIC Jim_Obj * JIM_API(Jim_GetVariable) (Jim_Interp *interp,
+ Jim_Obj *nameObjPtr, int flags);
+JIM_STATIC int JIM_API(Jim_UnsetVariable) (Jim_Interp *interp,
+ Jim_Obj *nameObjPtr, int flags);
/* call frame */
-int JIM_API(Jim_GetCallFrameByLevel) (Jim_Interp *interp, Jim_Obj *levelObjPtr,
- Jim_CallFrame **framePtrPtr, int *newLevelPtr);
+JIM_STATIC int JIM_API(Jim_GetCallFrameByLevel) (Jim_Interp *interp,
+ Jim_Obj *levelObjPtr, Jim_CallFrame **framePtrPtr,
+ int *newLevelPtr);
/* garbage collection */
-int JIM_API(Jim_Collect) (Jim_Interp *interp);
-void JIM_API(Jim_CollectIfNeeded) (Jim_Interp *interp);
+JIM_STATIC int JIM_API(Jim_Collect) (Jim_Interp *interp);
+JIM_STATIC void JIM_API(Jim_CollectIfNeeded) (Jim_Interp *interp);
/* index object */
-int JIM_API(Jim_GetIndex) (Jim_Interp *interp, Jim_Obj *objPtr, int *indexPtr);
+JIM_STATIC int JIM_API(Jim_GetIndex) (Jim_Interp *interp, Jim_Obj *objPtr,
+ int *indexPtr);
/* list object */
-Jim_Obj * JIM_API(Jim_NewListObj) (Jim_Interp *interp, Jim_Obj **elements,
- int len);
-void JIM_API(Jim_ListAppendElement) (Jim_Interp *interp, Jim_Obj *listPtr,
- Jim_Obj *objPtr);
-void JIM_API(Jim_ListAppendList) (Jim_Interp *interp, Jim_Obj *listPtr,
- Jim_Obj *appendListPtr);
-void JIM_API(Jim_ListLength) (Jim_Interp *interp, Jim_Obj *listPtr,
+JIM_STATIC Jim_Obj * JIM_API(Jim_NewListObj) (Jim_Interp *interp,
+ Jim_Obj **elements, int len);
+JIM_STATIC void JIM_API(Jim_ListAppendElement) (Jim_Interp *interp,
+ Jim_Obj *listPtr, Jim_Obj *objPtr);
+JIM_STATIC void JIM_API(Jim_ListAppendList) (Jim_Interp *interp,
+ Jim_Obj *listPtr, Jim_Obj *appendListPtr);
+JIM_STATIC void JIM_API(Jim_ListLength) (Jim_Interp *interp, Jim_Obj *listPtr,
int *intPtr);
-int JIM_API(Jim_ListIndex) (Jim_Interp *interp, Jim_Obj *listPrt, int index,
- Jim_Obj **objPtrPtr, int seterr);
-int JIM_API(Jim_SetListIndex) (Jim_Interp *interp, Jim_Obj *varNamePtr,
- Jim_Obj **indexv, int indexc, Jim_Obj *newObjPtr);
-Jim_Obj * JIM_API(Jim_ConcatObj) (Jim_Interp *interp, int objc, Jim_Obj **objv);
+JIM_STATIC int JIM_API(Jim_ListIndex) (Jim_Interp *interp, Jim_Obj *listPrt,
+ int index, Jim_Obj **objPtrPtr, int seterr);
+JIM_STATIC int JIM_API(Jim_SetListIndex) (Jim_Interp *interp,
+ Jim_Obj *varNamePtr, Jim_Obj **indexv, int indexc,
+ Jim_Obj *newObjPtr);
+JIM_STATIC Jim_Obj * JIM_API(Jim_ConcatObj) (Jim_Interp *interp, int objc,
+ Jim_Obj **objv);
/* dict object */
-Jim_Obj * JIM_API(Jim_NewDictObj) (Jim_Interp *interp, Jim_Obj **elements,
- int len);
-int JIM_API(Jim_DictKey) (Jim_Interp *interp, Jim_Obj *dictPtr, Jim_Obj *keyPtr,
- Jim_Obj **objPtrPtr, int flags);
-int JIM_API(Jim_DictKeysVector) (Jim_Interp *interp, Jim_Obj *dictPtr,
- Jim_Obj **keyv, int keyc, Jim_Obj **objPtrPtr, int flags);
-int JIM_API(Jim_GetIndex) (Jim_Interp *interp, Jim_Obj *objPtr, int *indexPtr);
-int JIM_API(Jim_SetDictKeysVector) (Jim_Interp *interp, Jim_Obj *varNamePtr,
- Jim_Obj **keyv, int keyc, Jim_Obj *newObjPtr);
+JIM_STATIC Jim_Obj * JIM_API(Jim_NewDictObj) (Jim_Interp *interp,
+ Jim_Obj **elements, int len);
+JIM_STATIC int JIM_API(Jim_DictKey) (Jim_Interp *interp, Jim_Obj *dictPtr,
+ Jim_Obj *keyPtr, Jim_Obj **objPtrPtr, int flags);
+JIM_STATIC int JIM_API(Jim_DictKeysVector) (Jim_Interp *interp,
+ Jim_Obj *dictPtr, Jim_Obj **keyv, int keyc,
+ Jim_Obj **objPtrPtr, int flags);
+JIM_STATIC int JIM_API(Jim_GetIndex) (Jim_Interp *interp, Jim_Obj *objPtr,
+ int *indexPtr);
+JIM_STATIC int JIM_API(Jim_SetDictKeysVector) (Jim_Interp *interp,
+ Jim_Obj *varNamePtr, Jim_Obj **keyv, int keyc,
+ Jim_Obj *newObjPtr);
/* return code object */
-int JIM_API(Jim_GetReturnCode) (Jim_Interp *interp, Jim_Obj *objPtr,
+JIM_STATIC int JIM_API(Jim_GetReturnCode) (Jim_Interp *interp, Jim_Obj *objPtr,
int *intPtr);
/* expression object */
-int JIM_API(Jim_EvalExpression) (Jim_Interp *interp, Jim_Obj *exprObjPtr,
- Jim_Obj **exprResultPtrPtr);
-int JIM_API(Jim_GetBoolFromExpr) (Jim_Interp *interp, Jim_Obj *exprObjPtr,
- int *boolPtr);
+JIM_STATIC int JIM_API(Jim_EvalExpression) (Jim_Interp *interp,
+ Jim_Obj *exprObjPtr, Jim_Obj **exprResultPtrPtr);
+JIM_STATIC int JIM_API(Jim_GetBoolFromExpr) (Jim_Interp *interp,
+ Jim_Obj *exprObjPtr, int *boolPtr);
/* integer object */
-int JIM_API(Jim_GetWide) (Jim_Interp *interp, Jim_Obj *objPtr,
+JIM_STATIC int JIM_API(Jim_GetWide) (Jim_Interp *interp, Jim_Obj *objPtr,
jim_wide *widePtr);
-int JIM_API(Jim_GetLong) (Jim_Interp *interp, Jim_Obj *objPtr, long *longPtr);
-void JIM_API(Jim_SetWide) (Jim_Interp *interp, Jim_Obj *objPtr,
+JIM_STATIC int JIM_API(Jim_GetLong) (Jim_Interp *interp, Jim_Obj *objPtr,
+ long *longPtr);
+JIM_STATIC void JIM_API(Jim_SetWide) (Jim_Interp *interp, Jim_Obj *objPtr,
+ jim_wide wideValue);
+JIM_STATIC Jim_Obj * JIM_API(Jim_NewIntObj) (Jim_Interp *interp,
jim_wide wideValue);
-Jim_Obj * JIM_API(Jim_NewIntObj) (Jim_Interp *interp, jim_wide wideValue);
/* shared strings */
-char JIM_API(*Jim_GetSharedString) (Jim_Interp *interp, char *str);
-void JIM_API(Jim_ReleaseSharedString) (Jim_Interp *interp, char *str);
+JIM_STATIC char JIM_API(*Jim_GetSharedString) (Jim_Interp *interp, char *str);
+JIM_STATIC void JIM_API(Jim_ReleaseSharedString) (Jim_Interp *interp, char *str);
/* commands utilities */
-void JIM_API(Jim_WrongNumArgs) (Jim_Interp *interp, int argc, Jim_Obj **argv,
- char *msg);
+JIM_STATIC void JIM_API(Jim_WrongNumArgs) (Jim_Interp *interp, int argc,
+ Jim_Obj **argv, char *msg);
/* API import/export functions */
-void* JIM_API(Jim_GetApi)(Jim_Interp *interp, char *funcname);
-int JIM_API(Jim_RegisterApi)(Jim_Interp *interp, char *funcname, void *funcptr);
+JIM_STATIC void* JIM_API(Jim_GetApi)(Jim_Interp *interp, char *funcname);
+JIM_STATIC int JIM_API(Jim_RegisterApi)(Jim_Interp *interp, char *funcname,
+ void *funcptr);
-#ifdef JIM_EXTENSION
+#ifndef __JIM_CORE__
/* This must be included "inline" inside the extension */
static void Jim_InitExtension(Jim_Interp *interp, char *version)
{
@@ -663,6 +691,6 @@ static void Jim_InitExtension(Jim_Interp *interp, char *version)
Jim_RegisterApi = Jim_GetApi(interp, "Jim_RegisterApi");
Jim_SetResultString(interp, version, -1);
}
-#endif /* JIM_EXTENSION */
+#endif /* __JIM_CORE__ */
#endif /* __JIM__H */