NAME
TclX_Init, TclXCmd_Init, TclXLib_Init, TclX_Main - Extended
Tcl initialization.
SYNOPSIS
-ltclx -ltcl
#include "tclExtend.h"
extern char *tclAppName;
extern char *tclAppLongname;
extern char *tclAppVersion;
extern int tclAppPatchlevel;
int
Tcl_AppInit (Tcl_Interp *interp);
int
TclX_Init (Tcl_Interp *interp);
int
TclXCmd_Init (Tcl_Interp *interp);
int
TclXLib_Init (Tcl_Interp *interp);
void
TclX_Main (int argc,
char **argv,
Tcl_AppInitProc *appInitProc);
int
TkX_Init (Tcl_Interp *interp);
void
TkX_Main (int argc,
char **argv,
Tcl_AppInitProc *appInitProc);
DESCRIPTION
These functions are used to initialize Extended Tcl and
applications based on Extended Tcl. This manual page also
discusses various issues and approaches of integrating TclX
into other applications.
tclAppName
The application name to be returned by the infox command.
This should be a short mnemonic. This value maybe altered
from the default by the application.
tclAppLongname
The application long name to be returned by the infox
command. This should be a natural language string. This
value maybe altered from the default by the application.
tclAppVersion
The application version string to be returned by the infox
command. procedures are called. This value maybe altered
from the default by the application.
tclAppPatchlevel
The application patchlevel to be returned by the infox
command. procedures are called. This value maybe altered
from the default by the application.
tclX_library
The path to the TclX runtime library. This directory
contains the initialization file evaluated by TclX_Init and
is also appended to auto_path. This variable is initialized
to the compile-time specified install location. The value
maybe modified before TclX_Init or TclXLib_Init are called
to use another library in a particular application. If its
set to NULL, no library will be used unless override by
tclX_libraryEnv. Setting tclX_libraryEnv and this variable
to NULL causes no library directory or initialization file
to be used.
tclX_libraryEnv
Environment variable used to override the path stored in
tclX_library. The value maybe modified before TclX_Init or
TclXLib_Init are called to use another environment variable
for a particular application. If its set to NULL, no
environment variable will allow to override. Defaults to
"TCL_LIBRARY".
tclX_initFile
The initialization file for TclX_Init to source. By default
the file "TclInit.tcl" in the TclX library directory is
sourced. If set to an absolute path, it is not assumed to
be in the TclX library directory and is independent of a
library path being specified. If set to NULL, not
initialization file is evaluated.
Tcl_AppInit
This function is used to initialize an TclX based
application. It is intended to the the only file that is
modified for most applications. There are two versions of
this function, one for applications built on just TclX and
the other for applications built on TclX and Tk.
The TclX version of this function is found in tclXAppInit.c
and the Tk version is found in tkXAppInit.c. It should be
modified according to the instructions in these files to
initialize a TclX based application.
A custom application is then linked in a manner similar to:
cc tclXAppInit.o mystuff.a libtclx.a libtcl.a ${SYSLIBS} -o myapp
or
cc tkXAppInit.o mystuff.a libtkx.a libtk.a libtclx.a libtcl.a \
${SYSLIBS} -o myapp
TclX_Init
Initializes Extended Tcl, adding the extended command set to
the interpreter. This is called from Tcl_AppInit.
Normally, this function is used in an application in place
of the Tcl_Init function. If used in this way, the UCB Tcl
run time environment is not required and startup will be
faster. This function may also be called after Tcl_Init has
been called. In this case, the Tcl library mechanism
defined in init.tcl will be replaced with the TclX
mechanism.
Parameters
o interp - A pointer to the interpreter to add the
commands to.
Returns:
TCL_OK if all is ok, TCL_ERROR if an error occurred.
TclXCmd_Init
Add the TclX command set to the interpreter, with the
exception of the TclX library management commands. This is
normally called by TclX_Init and should only be used if you
don't want the TclX library handling.
Parameters
o interp - A pointer to the interpreter to add the
commands to.
Returns:
TCL_OK if all is ok, TCL_ERROR if an error occurred.
TclXLib_Init
Add the TclX library management commands to the interpreter.
This is normally called by TclX_Init. It also sets the Tcl
variable "tclx_library" to TclX library directory.
Parameters
o interp - A pointer to the interpreter to add the
commands to.
Returns:
TCL_OK if all is ok, TCL_ERROR if an error occurred.
TclX_Main
This function parses the command line according to the TclX
shell specification (Unix shell compatible). It creates an
interpreter and calls the specified function appInitProc to
initialize any application specific commands. It then
either evaluates the command of script specified on the
command line or enters an interactive command loop. This
procedure never returns, it exits the process when it's
done. Using the TclX shell also gives you SIGINT handling
in interactive shells.
TkX_Init
Initializes Extended Tcl Tk environment. This is called
from Tcl_AppInit. Normally, this function is used in an
application in place of the Tk_Init function. If used in
this way, the UCB Tk run time environment is not required
and startup will be faster. This function may also be
called after Tk_Init has been called. In this case, the
TclX Tk runtime environment will not be user or required.
Parameters
o interp - A pointer to the interpreter to add the
commands to.
Returns:
TCL_OK if all is ok, TCL_ERROR if an error occurred.
TclX_Main
This function parses the command line according to the wish
shell specification. It creates an interpreter and calls
the specified function appInitProc to initialize any
application specific commands. It then either evaluates the
command of script specified on the command line or enters an
interactive command loop. This procedure never returns, it
exits the process when it's done. Using the TclX wish shell
gives you SIGINT handling in interactive shells, otherwise
it is identical to standard wish.
INTEGRATING TCLX WITH OTHER EXTENSIONS AND APPLICATIONS
There are two aspects to integrating TclX with other
applications. Does the application use the Tcl/Tk standard
runtime or rely only on the TclX runtime and are the Tcl and
Tk shells based on the standard Tcl/Tk shells or the TclX
shells. The tclAppInit.c is the only file that will
normally need to be modified.
The normal approach to add TclX to an application is to
replace the calls to Tcl_Init with TclX_Init and Tk_Init
with TkX_Init. TclX has a functional superset of the Tcl
and Tk runtimes. The TclX, used alone, does not require the
standard runtime environments to be installed on the system.
It supports faster auto loading of the runtime routines and
has support for multiple version of TclX being installed
(use master directory install option for most flexability).
However, some people are more comfortable adding Tcl in the
same way as other extensions. That is, calling TclX_Init
after Tcl_Init and TkX_Init after Tk_Init. Currently,
calling TkX_Init is uncessary if the Tk_Init has been
called.
If only the TclX command set, but not the procedure library
and runtime is desired, then TclXCmd_Init is called after
Tcl_Init.
To get the TclX shell in a Tcl only application, with the
tcl command functionallity, call TclX_Main from the main
function instead of Tcl_Main. This shell has arguments
conforming to other Unix shells and SIGINT signal handling
when interactive,.
To get the Tclx shell in a Tk application, with the wishx
command functionallity, call TkX_Main from the main function
instead of Tk_Main. This shell has SIGINT signal handling
when interactive,