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