diff options
author | Steve Bennett <steveb@workware.net.au> | 2010-10-15 09:56:22 +1000 |
---|---|---|
committer | Steve Bennett <steveb@workware.net.au> | 2010-10-15 09:56:22 +1000 |
commit | 60d8c0ee82e6ee4119283b59f1f2f53d220efe79 (patch) | |
tree | 4ab5adfcbf4237cc790e9088f2fa1b8675c8eb38 /examples | |
parent | 1ec055dfbe6db8839064d891e64e46e136c39b09 (diff) | |
download | jimtcl-60d8c0ee82e6ee4119283b59f1f2f53d220efe79.zip jimtcl-60d8c0ee82e6ee4119283b59f1f2f53d220efe79.tar.gz jimtcl-60d8c0ee82e6ee4119283b59f1f2f53d220efe79.tar.bz2 |
Cutover to new workware fork of Jim Tcl
Note that this commit removes some files and undoes
some commits which will be reapplied later.
This is the easiest way to switch across.
Signed-off-by: Steve Bennett <steveb@workware.net.au>
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 "---------------------------------------------------------" |