diff options
-rw-r--r-- | Makefile | 2 | ||||
-rw-r--r-- | jim-posix.c | 1 | ||||
-rw-r--r-- | jim-win32.c | 1 | ||||
-rw-r--r-- | jim-win32com.c | 1 | ||||
-rw-r--r-- | jim.c | 17 | ||||
-rw-r--r-- | jim.h | 26 |
6 files changed, 41 insertions, 7 deletions
@@ -14,7 +14,7 @@ INSTALL_DATA= $(INSTALL) -m 644 DESTDIR= /usr/local/bin/ PROGRAMS= jim -JIM_OBJECTS= jim.o +JIM_OBJECTS= jim.o jimsh.o stopit: @echo "Use:" diff --git a/jim-posix.c b/jim-posix.c index 5e942aa..ca230e4 100644 --- a/jim-posix.c +++ b/jim-posix.c @@ -3,6 +3,7 @@ #include <string.h> #include <errno.h> +#define JIM_EXTENSION #include "jim.h" extern int errno; diff --git a/jim-win32.c b/jim-win32.c index c336014..4cbf481 100644 --- a/jim-win32.c +++ b/jim-win32.c @@ -26,6 +26,7 @@ #include <psapi.h> #include <ctype.h> +#define JIM_EXTENSION #include "jim.h" #if _MSC_VER >= 1000 diff --git a/jim-win32com.c b/jim-win32com.c index 3bab6e8..b2fd692 100644 --- a/jim-win32com.c +++ b/jim-win32com.c @@ -25,6 +25,7 @@ #include <stdarg.h> #include <ctype.h> +#define JIM_EXTENSION #include "jim.h" #if _MSC_VER >= 1000 @@ -3661,6 +3661,15 @@ Jim_Interp *Jim_CreateInterp(void) return i; } +/* This is the only function Jim exports directly without + * to use the STUB system. It is only used by embedders + * in order to get an interpreter with the Jim API pointers + * registered. */ +Jim_Interp *ExportedJimCreateInterp(void) +{ + return Jim_CreateInterp(); +} + void Jim_FreeInterp(Jim_Interp *i) { Jim_CallFrame *cf = i->framePtr, *prevcf, *nextcf; @@ -6914,6 +6923,8 @@ void JimRegisterCoreApi(Jim_Interp *interp) { interp->getApiFuncPtr = Jim_GetApi; Jim_RegisterApi(interp, "Jim_Alloc", Jim_Alloc); + Jim_RegisterApi(interp, "Jim_Eval", Jim_Eval); + Jim_RegisterApi(interp, "Jim_EvalFile", Jim_EvalFile); Jim_RegisterApi(interp, "Jim_EvalObj", Jim_EvalObj); Jim_RegisterApi(interp, "Jim_EvalObjVector", Jim_EvalObjVector); Jim_RegisterApi(interp, "Jim_InitHashTable", Jim_InitHashTable); @@ -6982,8 +6993,8 @@ void JimRegisterCoreApi(Jim_Interp *interp) Jim_RegisterApi(interp, "Jim_SetDictKeysVector", Jim_SetDictKeysVector); Jim_RegisterApi(interp, "Jim_SubstObj", Jim_SubstObj); Jim_RegisterApi(interp, "Jim_RegisterApi", Jim_RegisterApi); - Jim_RegisterApi(interp, "Jim_PrintErrorMessage", Jim_RegisterApi); - Jim_RegisterApi(interp, "Jim_InteractivePrompt", Jim_RegisterApi); + Jim_RegisterApi(interp, "Jim_PrintErrorMessage", Jim_PrintErrorMessage); + Jim_RegisterApi(interp, "Jim_InteractivePrompt", Jim_InteractivePrompt); } /* ----------------------------------------------------------------------------- @@ -8523,6 +8534,7 @@ int Jim_InteractivePrompt(void) return 0; } +#if 0 int main(int argc, char **argv) { int retcode; @@ -8561,3 +8573,4 @@ int main(int argc, char **argv) Jim_FreeInterp(interp); return retcode; } +#endif @@ -445,11 +445,16 @@ typedef struct Jim_Reference { #define Jim_FreeHashTableIterator(iter) Jim_Free(iter) #ifndef __JIM_CORE__ -#define JIM_API(x) (*x) -#define JIM_STATIC +# if defined JIM_EXTENSION || defined JIM_EMBEDDED +# define JIM_API(x) (*x) +# define JIM_STATIC +# else +# define JIM_API(x) (*x) +# define JIM_STATIC extern +# endif #else -#define JIM_API(x) x -#define JIM_STATIC static +# define JIM_API(x) x +# define JIM_STATIC static #endif /* __JIM_CORE__ */ /* Memory allocation */ @@ -457,6 +462,8 @@ JIM_STATIC void * JIM_API(Jim_Alloc) (int size); JIM_STATIC char * JIM_API(Jim_StrDup) (char *s); /* evaluation */ +JIM_STATIC int JIM_API(Jim_Eval)(Jim_Interp *interp, char *script); +JIM_STATIC int JIM_API(Jim_EvalFile)(Jim_Interp *interp, char *filename); 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); @@ -639,6 +646,8 @@ static void Jim_InitExtension(Jim_Interp *interp, char *version) Jim_GetApi = interp->getApiFuncPtr; Jim_Alloc = Jim_GetApi(interp, "Jim_Alloc"); + Jim_Eval = Jim_GetApi(interp, "Jim_Eval"); + Jim_EvalFile = Jim_GetApi(interp, "Jim_EvalFile"); Jim_EvalObj = Jim_GetApi(interp, "Jim_EvalObj"); Jim_EvalObjVector = Jim_GetApi(interp, "Jim_EvalObjVector"); Jim_InitHashTable = Jim_GetApi(interp, "Jim_InitHashTable"); @@ -711,6 +720,15 @@ static void Jim_InitExtension(Jim_Interp *interp, char *version) Jim_InteractivePrompt = Jim_GetApi(interp, "Jim_InteractivePrompt"); Jim_SetResultString(interp, version, -1); } + +#ifdef JIM_EMBEDDED +Jim_Interp *ExportedJimCreateInterp(void); +static void Jim_InitEmbedded(void) { + Jim_Interp *i = ExportedJimCreateInterp(); + Jim_InitExtension(i, ""); + Jim_FreeInterp(i); +} +#endif /* JIM_EMBEDDED */ #endif /* __JIM_CORE__ */ #endif /* __JIM__H */ |