Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

ns_tclinitmodule(3aolserv) [debian man page]

Ns_TclInit(3aolserver)					   AOLserver Library Procedures 				    Ns_TclInit(3aolserver)

__________________________________________________________________________________________________________________________________________________

NAME
Ns_TclInitInterps, Ns_TclInitModule, Ns_TclInterpServer, Ns_TclLibrary - library procedures SYNOPSIS
#include "ns.h" int Ns_TclInitInterps(server, initProc, arg) Ns_TclInitModule(arg, arg) char * Ns_TclInterpServer(interp) char * Ns_TclLibrary(void) ARGUMENTS
char *server (in) Name of virtual server. Ns_TclInterpInitProc *initProc (in) Procedure to call to initialize interps. void *arg (in) Callback data to pass to initProc. Tcl_Interp *interp (in) Tcl interp to get server. _________________________________________________________________ DESCRIPTION
Ns_TclInitInterps arranges for initProc to be called on the startup initialization interp. initProc should have arguments and result that match the type Ns_TclInterpInitProc: typedef int Ns_TclInterpInitProc(Tcl_Interp *interp, void *arg); The arg parameter to initProc is a copy of the arg argument given to Ns_TclInitInterps. A typical initProc will create new commands in the given interp with Tcl_CreateCommand. The following AOLserver module example results in the msg command being in all interps. The command simply sets the "hello" static string as the interp result: static Ns_TclInterpInitProc AddCmds; static Tcl_CmdProc MsgCmd; int Ns_ModuleInit(char *server, char *module) { static char *arg = "hello"; return Ns_TclInitInterps(server, AddCmds, arg); } static int AddCmds(Tcl_Interp *interp, void *arg) { Tcl_CreateCommand(interp, "msg", MsgCmd, arg, NULL); return TCL_OK; } static int MsgCmd(ClientData arg, Tcl_Interp *interp, int argc, char **argv) { Tcl_SetResult(interp, (char *) arg, TCL_STATIC); return TCL_OK; } In AOLserver 3.x, the effect of Ns_TclInitInterps is to invoke initProc immediately on the single initializaton interp of the server and the result of Ns_TclInitInterps is the return code of initProc. The state of this interp (command, procedures) will then be copied to other interps when created via the Ns_TclAllocInterp routine. This differs from the original AOLserver 2.0 where initProc was called on each interp in an interp pool, the 2.1-2.3 behavior where initProc was called once on an interp linked to the per-server shared command tables, and the upcoming 4.0 behavior where initProc is called at interp create time. In fact, the 4.0 behavior is that of the Ns_TclReg- isterAtCreate routine. In practice, if your initProc does nothing but create commands with NULL or shared client data the effect is the same in all releases. Ns_TclInterpServer returns the virtual server in which the given interp was created. Ns_TclLibrary returns the shared Tcl library of the server installation (e.g., /usr/local/aolserver/modules/tcl). SEE ALSO
Ns_TclRegisterAtCreate(3), Ns_TclAllocInterp(3) KEYWORDS
AOLserver 4.0 Ns_TclInit(3aolserver)

Check Out this Related Man Page

Tcl_StaticPackage(3)					      Tcl Library Procedures					      Tcl_StaticPackage(3)

__________________________________________________________________________________________________________________________________________________

NAME
Tcl_StaticPackage - make a statically linked package available via the 'load' command SYNOPSIS
#include <tcl.h> Tcl_StaticPackage(interp, pkgName, initProc, safeInitProc) ARGUMENTS
Tcl_Interp *interp (in) If not NULL, points to an interpreter into which the package has already been loaded (i.e., the caller has already invoked the appropriate initialization procedure). NULL means the package has not yet been incorporated into any interpreter. const char *pkgName (in) Name of the package; should be properly capitalized (first letter upper-case, all others lower-case). Tcl_PackageInitProc *initProc (in) Procedure to invoke to incorporate this package into a trusted interpreter. Tcl_PackageInitProc *safeInitProc (in) Procedure to call to incorporate this package into a safe interpreter (one that will exe- cute untrusted scripts). NULL means the package cannot be used in safe interpreters. _________________________________________________________________ DESCRIPTION
This procedure may be invoked to announce that a package has been linked statically with a Tcl application and, optionally, that it has already been loaded into an interpreter. Once Tcl_StaticPackage has been invoked for a package, it may be loaded into interpreters using the load command. Tcl_StaticPackage is normally invoked only by the Tcl_AppInit procedure for the application, not by packages for them- selves (Tcl_StaticPackage should only be invoked for statically loaded packages, and code in the package itself should not need to know whether the package is dynamically or statically loaded). When the load command is used later to load the package into an interpreter, one of initProc and safeInitProc will be invoked, depending on whether the target interpreter is safe or not. initProc and safeInitProc must both match the following prototype: typedef int Tcl_PackageInitProc(Tcl_Interp *interp); The interp argument identifies the interpreter in which the package is to be loaded. The initialization procedure must return TCL_OK or TCL_ERROR to indicate whether or not it completed successfully; in the event of an error it should set the interpreter's result to point to an error message. The result or error from the initialization procedure will be returned as the result of the load command that caused the initialization procedure to be invoked. KEYWORDS
initialization procedure, package, static linking Tcl 7.5 Tcl_StaticPackage(3)
Man Page