Exemplo n.º 1
0
int
main(int argc, char **argv)
{
	Jim_Interp *interp;

	interp = NULL;

	/* Create Jim instance */
	interp = Jim_CreateInterp();
	assert(interp != NULL && "couldn't create interpreter!");

	/* We register base commands, so that we actually implement Tcl. */
	Jim_RegisterCoreCommands(interp);

	/* And initialise any static extensions */
	Jim_InitStaticExtensions(interp);


	/* Print a string to standard output */
	Jim_Eval(interp, "puts {Hello world!}");

	/* Free the interpreter */
	Jim_FreeInterp(interp);
	return (EXIT_SUCCESS);
}
Exemplo n.º 2
0
/*
 * 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;

	/* 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);

	/* And initialise any static extensions */
	Jim_InitStaticExtensions(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_MakeErrorMessage(interp);
		fprintf(stderr, "%s\n", Jim_GetString(Jim_GetResult(interp), NULL));
		Jim_FreeInterp(interp);
		exit(EXIT_FAILURE);
	}

	Jim_FreeInterp(interp);
	return (EXIT_SUCCESS);
}
Exemplo n.º 3
0
/**
 * [interp] creates a new interpreter.
 */
static int JimInterpCommand(Jim_Interp *interp, int argc, Jim_Obj *const *argv)
{
    Jim_Interp *child;
    char buf[32];

    if (argc != 1) {
        Jim_WrongNumArgs(interp, 1, argv, "");
        return JIM_ERR;
    }

    /* Create the interpreter command */
    child = Jim_CreateInterp();
    Jim_RegisterCoreCommands(child);
    Jim_InitStaticExtensions(child);

    /* Copy some core variables to the new interpreter */
    JimInterpCopyVariable(child, interp, "argv", NULL);
    JimInterpCopyVariable(child, interp, "argc", NULL);
    JimInterpCopyVariable(child, interp, "argv0", NULL);
    JimInterpCopyVariable(child, interp, "jim::argv0", NULL);
    JimInterpCopyVariable(child, interp, "jim::exe", NULL);

    /* Allow the child interpreter to find the parent */
    Jim_SetAssocData(child, "interp.parent", NULL, interp);

    snprintf(buf, sizeof(buf), "interp.handle%ld", Jim_GetId(interp));
    Jim_CreateCommand(interp, buf, JimInterpSubCmdProc, child, JimInterpDelProc);
    Jim_SetResultString(interp, buf, -1);
    return JIM_OK;
}
Exemplo n.º 4
0
es_Interp* es_init_interp() {
  es_Interp *interp = NULL;

  interp = Jim_CreateInterp();
  Jim_RegisterCoreCommands(interp);
  Jim_InitStaticExtensions(interp);

  // load scripts
  es_eval_tcl(interp,es_tcl_script_config);

  // register commands
  es_jim_register_commands(interp);

  return interp;
}
Exemplo n.º 5
0
int main(int argc, char **argv)
{
	int i, retval;
	char arg[MAX_ARGSIZE];
	char arglist[MAX_ARGSIZE]; 

	Jim_Interp *interp;

	interp = NULL;
	arglist[0] = '\0';

	for (i=1; i<argc; i++) {
		if (strlen(argv[i]) > MAX_ARGSIZE-4) {
			printf("Argument #%d extends maximum size, skip it\n", i);
			continue;
		}
		if ( (strlen(arglist) + strlen(argv[i])) > MAX_ARGSIZE-4) {
			printf("Argument #%d would extend maximum list size, skip it\n", i);
			continue;
		}
		sprintf(arg,"{%s} ",argv[i]);
		strncat(arglist,arg,MAX_ARGSIZE-1);
	}

	char code[sizeof(RAW) + sizeof(arglist) + 28];
	sprintf(code, "set argv {%s}\nset argc %d\n", arglist, argc-1);
	strncat(code, RAW, sizeof(RAW));

	/* Create Jim instance */
	interp = Jim_CreateInterp();
	assert(interp != NULL && "Could not create interpreter!");

	/* Register base commands, actually implementing Tcl */
	Jim_RegisterCoreCommands(interp);

	/* Initialize any static extensions */
	Jim_InitStaticExtensions(interp);

	/* Evaluate the script that's now in "code" */
	retval = Jim_Eval(interp, code);
	if (retval < 0)
		printf("Evaluation returned error %d\n", retval);

	/* Free the interpreter */
	Jim_FreeInterp(interp);
	return (EXIT_SUCCESS);
}