diff options
Diffstat (limited to 'examples')
-rw-r--r-- | examples/Makefile | 24 | ||||
-rw-r--r-- | examples/README | 36 | ||||
-rw-r--r-- | examples/jim_command.c | 95 | ||||
-rw-r--r-- | examples/jim_hello.c | 56 | ||||
-rw-r--r-- | examples/jim_inline.c | 83 | ||||
-rw-r--r-- | examples/jim_list.c | 112 | ||||
-rw-r--r-- | examples/jim_obj.c | 72 | ||||
-rw-r--r-- | examples/jim_return.c | 95 | ||||
-rw-r--r-- | examples/print.tcl | 5 |
9 files changed, 0 insertions, 578 deletions
diff --git a/examples/Makefile b/examples/Makefile deleted file mode 100644 index e2e3e9d..0000000 --- a/examples/Makefile +++ /dev/null @@ -1,24 +0,0 @@ -CFLAGS+= -Wall -pedantic -g -ggdb -CFLAGS+= -L .. -Wl,-R.. -I .. -CFLAGS+= -ljim - -EXAMPLES= \ - jim_command \ - jim_hello \ - jim_inline \ - jim_list \ - jim_obj \ - jim_return - -all: libjim.so $(EXAMPLES) - -libjim.so: - @echo ----------------------------------------------------------- - @echo " Remember to call \"make libjim\" before trying our examples" - @echo ----------------------------------------------------------- - cp ../libjim.so libjim.so - -clean: - rm -rf $(EXAMPLES) - rm -rf *.core - rm -rf libjim.so diff --git a/examples/README b/examples/README deleted file mode 100644 index d3fc8be..0000000 --- a/examples/README +++ /dev/null @@ -1,36 +0,0 @@ -Jim examples -============ -BSD 2-clause license, (c) 2010 Wojciech A. Koszek <wkoszek@FreeBSD.org> - - -This directory contains examples of Jim interpreter API. In order to start -working with Jim API one may just want to copy existing example .c file -into new file, modify Makefile and start working on a new program. - -Existing examples -================= - -jim_command - Simple command implementation in Jim's API. Command is then executed - in a script encoded within a program. - -jim_hello - Standard "Hello world!" program. - -jim_inline - Similar "Hello world!" program, but the result comes from a Tcl - script interpreted in Jim. Result is printed back on a terminal. - -jim_list - Will teach you how to create a list in Jim's API. Once created, - will show how to name and export it, so that variable is visible in - the script's source code. Once done, interpretation of separate - print.tcl file is presented. As a result, the script can print a - list members created from within ANSI C program. - -jim_obj - Basic object creation in Jim. - -jim_return - Similar to jim_command example, but implemented command actually - returns a value. diff --git a/examples/jim_command.c b/examples/jim_command.c deleted file mode 100644 index e4963a1..0000000 --- a/examples/jim_command.c +++ /dev/null @@ -1,95 +0,0 @@ -/*- - * Copyright (c) 2010 Wojciech A. Koszek <wkoszek@FreeBSD.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Id$ - */ - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#define JIM_EMBEDDED -#include <jim.h> - -/* - * Program which we want to get executed. - */ -#define JIM_PROGRAM "if {1 < 2} { MySampleCommand sample }" - -static int -MySampleCommandFunc(Jim_Interp *interp, int argc, Jim_Obj *const *argv) -{ - const char *str; - int len; - - if (argc != 2) { - Jim_WrongNumArgs(interp, 1, argv, "string"); - return (JIM_ERR); - } - - str = Jim_GetString(argv[1], &len); - assert(str != NULL); - Jim_fprintf(interp, interp->cookie_stdout, "%s\n", str); - - return (JIM_OK); -} - -/* - * Now we try to write big enough code to duplication our array in Jim's - * list implementation. Later, we try to load a sample script in Tcl that - * could print our list. - */ -int -main(int argc, char **argv) -{ - Jim_Interp *interp; - int error; - - /* This is the first function embedders should call. */ - Jim_InitEmbedded(); - - /* Create an interpreter. */ - interp = Jim_CreateInterp(); - assert(interp != NULL && "couldn't create interpreter"); - - /* We register base commands, so that we actually implement Tcl. */ - Jim_RegisterCoreCommands(interp); - - /* Register our Jim commands. */ - Jim_CreateCommand(interp, "MySampleCommand", MySampleCommandFunc, - NULL, NULL); - - /* Run a script. */ - error = Jim_Eval(interp, JIM_PROGRAM); - if (error == JIM_ERR) { - Jim_FreeInterp(interp); - Jim_PrintErrorMessage(interp); - exit(EXIT_FAILURE); - } - - Jim_FreeInterp(interp); - return (EXIT_SUCCESS); -} diff --git a/examples/jim_hello.c b/examples/jim_hello.c deleted file mode 100644 index 0f60fc9..0000000 --- a/examples/jim_hello.c +++ /dev/null @@ -1,56 +0,0 @@ -/*- - * Copyright (c) 2010 Wojciech A. Koszek <wkoszek@FreeBSD.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Id$ - */ -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> - -#define JIM_EMBEDDED -#include <jim.h> - -int -main(int argc, char **argv) -{ - Jim_Interp *interp; - - interp = NULL; - - /* This is the first function embedders should call. */ - Jim_InitEmbedded(); - - /* Create Jim instance */ - interp = Jim_CreateInterp(); - assert(interp != NULL && "couldn't create interpreter!"); - - /* Print a string to standard output */ - Jim_fprintf(interp, interp->cookie_stdout, "Hello world!\n"); - Jim_fflush(interp, interp->cookie_stdout); - - /* Free the interpreter */ - Jim_FreeInterp(interp); - return (EXIT_SUCCESS); -} diff --git a/examples/jim_inline.c b/examples/jim_inline.c deleted file mode 100644 index efb9984..0000000 --- a/examples/jim_inline.c +++ /dev/null @@ -1,83 +0,0 @@ -/*- - * Copyright (c) 2010 Wojciech A. Koszek <wkoszek@FreeBSD.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Id$ - */ - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#define JIM_EMBEDDED -#include <jim.h> - -/* - * Program which we want to get executed. - */ -#define JIM_PROGRAM "puts \"Hello world!\"" - -/* - * Now we try to write big enough code to duplication our array in Jim's - * list implementation. Later, we try to load a sample script in Tcl that - * could print our list. - */ -int -main(int argc, char **argv) -{ - Jim_Interp *interp; - Jim_Obj *errstr; - int error; - - errstr = NULL; - error = 0; - - /* This is the first function embedders should call. */ - Jim_InitEmbedded(); - - /* Create an interpreter */ - interp = Jim_CreateInterp(); - assert(interp != NULL && "couldn't create interpreter"); - - /* - * Then, we register base commands, so that we actually implement Tcl. - */ - Jim_RegisterCoreCommands(interp); - - /* - * Parse a script. - */ - error = Jim_Eval(interp, JIM_PROGRAM); - if (error == JIM_ERR) { - fprintf(stderr, "Couldn't execute Jim's script. " - "Error occured\n"); - Jim_PrintErrorMessage(interp); - Jim_FreeInterp(interp); - exit(EXIT_FAILURE); - } - - Jim_FreeInterp(interp); - return (EXIT_SUCCESS); -} diff --git a/examples/jim_list.c b/examples/jim_list.c deleted file mode 100644 index 8271658..0000000 --- a/examples/jim_list.c +++ /dev/null @@ -1,112 +0,0 @@ -/*- - * Copyright (c) 2010 Wojciech A. Koszek <wkoszek@FreeBSD.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Id$ - */ - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#define JIM_EMBEDDED -#include <jim.h> - -/* - * We have a list of sample words in 'C'.. - */ -const char *strings[] = { - "simple", - "strings", - "which", - "should", - "get", - "interpreted", - "by", - "Jim", -}; - -/* - * We have macros which let us to easily obtain of array presented above - */ -#define ARRAY_SIZE(a) (sizeof((a)) / sizeof((a)[0])) -#define SAMPLE_OBJS ARRAY_SIZE(strings) - -/* - * Now we try to write big enough code to duplication our array in Jim's - * list implementation. Later, we try to load a sample script in Tcl that - * could print our list. - */ -int -main(int argc, char **argv) -{ - Jim_Interp *interp; - Jim_Obj *obj[SAMPLE_OBJS]; - Jim_Obj *list; - int i; - int error; - - /* This is the first function embedders should call. */ - Jim_InitEmbedded(); - - /* Create an interpreter */ - interp = Jim_CreateInterp(); - - /* Create an empty list */ - list = Jim_NewListObj(interp, NULL, 0); - assert(list != NULL); - - /* - * For each string.. - */ - for (i = 0; i < SAMPLE_OBJS; i++) { - /* Duplicate it as an array member. */ - obj[i] = Jim_NewStringObj(interp, strings[i], -1); - assert(obj[i] != NULL); - - /* We append newly created object to the list */ - Jim_ListAppendElement(interp, list, obj[i]); - } - - /* - * We bind a Tcl's name with our list, so that Tcl script can - * identify the variable. - */ - Jim_SetVariableStr(interp, "MYLIST", list); - - /* - * Register base commands, so that we actually implement Tcl. - */ - Jim_RegisterCoreCommands(interp); - - /* - * Parse a script - */ - error = Jim_EvalFile(interp, "./print.tcl"); - if (error == JIM_ERR) - Jim_PrintErrorMessage(interp); - Jim_FreeInterp(interp); - return (EXIT_SUCCESS); -} diff --git a/examples/jim_obj.c b/examples/jim_obj.c deleted file mode 100644 index 6bf0fc9..0000000 --- a/examples/jim_obj.c +++ /dev/null @@ -1,72 +0,0 @@ -/*- - * Copyright (c) 2010 Wojciech A. Koszek <wkoszek@FreeBSD.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Id$ - */ -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#define JIM_EMBEDDED -#include <jim.h> - -#define OBJ_DESC "hello world" - -int -main(int argc, char **argv) -{ - Jim_Interp *interp; - Jim_Obj *obj; - const char *obj_desc; - int obj_size; - - obj = NULL; - obj_desc = NULL; - obj_size = -1; - - /* This is the first function embedders should call. */ - Jim_InitEmbedded(); - - /* Create an interpreter */ - interp = Jim_CreateInterp(); - - /* Create some empty object */ - obj = Jim_NewObj(interp); - - /* Name the object */ - Jim_InitStringRep(obj, OBJ_DESC, strlen(OBJ_DESC)) ; - - /* Obtain internal representation of an object */ - obj_desc = Jim_GetString(obj, &obj_size); - assert(obj_desc != NULL && "Jim should return NULL as a description"); - printf("Object described as '%s'; object size is %d\n", obj_desc, - obj_size); - - Jim_FreeObj(interp, obj); - Jim_FreeInterp(interp); - - return (EXIT_SUCCESS); -} diff --git a/examples/jim_return.c b/examples/jim_return.c deleted file mode 100644 index 4e7f4c8..0000000 --- a/examples/jim_return.c +++ /dev/null @@ -1,95 +0,0 @@ -/*- - * Copyright (c) 2010 Wojciech A. Koszek <wkoszek@FreeBSD.org> - * All rights reserved. - * - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions - * are met: - * 1. Redistributions of source code must retain the above copyright - * notice, this list of conditions and the following disclaimer. - * 2. Redistributions in binary form must reproduce the above copyright - * notice, this list of conditions and the following disclaimer in the - * documentation and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND - * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS - * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) - * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT - * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY - * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF - * SUCH DAMAGE. - * - * $Id$ - */ - -#include <assert.h> -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -#define JIM_EMBEDDED -#include <jim.h> - -/* - * Program which we want to get executed. - */ -#define JIM_PROGRAM "set l [CountChars Sample]; puts $l" - -/* - * Our function. - */ -static int -CountCharsFunc(Jim_Interp *interp, int argc, Jim_Obj *const *argv) -{ - const char *str; - int len; - - if (argc != 2) { - Jim_WrongNumArgs(interp, 1, argv, "string"); - return (JIM_ERR); - } - str = Jim_GetString(argv[1], &len); - Jim_SetResult(interp, Jim_NewIntObj(interp, (jim_wide)len)); - return (JIM_OK); -} - -/* - * Now we try to write big enough code to duplication our array in Jim's - * list implementation. Later, we try to load a sample script in Tcl that - * could print our list. - */ -int -main(int argc, char **argv) -{ - Jim_Interp *interp; - int error; - - /* This is the first function embedders should call. */ - Jim_InitEmbedded(); - - /* Create an interpreter. */ - interp = Jim_CreateInterp(); - assert(interp != NULL && "couldn't create interpreter"); - - /* We register base commands, so that we actually implement Tcl. */ - Jim_RegisterCoreCommands(interp); - - /* Register our Jim command. */ - Jim_CreateCommand(interp, "CountChars", CountCharsFunc, - NULL, NULL); - - /* Run a script. */ - error = Jim_Eval(interp, JIM_PROGRAM); - if (error == JIM_ERR) { - Jim_FreeInterp(interp); - Jim_PrintErrorMessage(interp); - exit(EXIT_FAILURE); - } - - Jim_FreeInterp(interp); - return (EXIT_SUCCESS); -} diff --git a/examples/print.tcl b/examples/print.tcl deleted file mode 100644 index e05d48b..0000000 --- a/examples/print.tcl +++ /dev/null @@ -1,5 +0,0 @@ -puts "-- List present in an array constructed from C program --" -foreach {str} $MYLIST { - puts $str -} -puts "---------------------------------------------------------" |