aboutsummaryrefslogtreecommitdiff
path: root/examples
diff options
context:
space:
mode:
Diffstat (limited to 'examples')
-rw-r--r--examples/Makefile24
-rw-r--r--examples/README36
-rw-r--r--examples/jim_command.c95
-rw-r--r--examples/jim_hello.c56
-rw-r--r--examples/jim_inline.c83
-rw-r--r--examples/jim_list.c112
-rw-r--r--examples/jim_obj.c72
-rw-r--r--examples/jim_return.c95
-rw-r--r--examples/print.tcl5
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 "---------------------------------------------------------"