Provided by: aolserver4-dev_4.5.1-18.1_amd64 bug

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_TclRegisterAtCreate 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