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  inter­
                                                       preter
                                                       into which
                                                       the  pack­
                                                       age    has
                                                       already
                                                       been
                                                       loaded
                                                       (i.e., the
                                                       caller has
                                                       already
                                                       invoked
                                                       the appro­
                                                       priate
                                                       initial­
                                                       ization
                                                       proce­
                                                       dure).
                                                       NULL means
                                                       the  pack­
                                                       age hasn't
                                                       yet   been
                                                       incorpo­
                                                       rated into
                                                       any inter­
                                                       preter.

       char                  *pkgName        (in)      Name    of
                                                       the  pack­
                                                       age;
                                                       should  be
                                                       properly
                                                       capital­
                                                       ized
                                                       (first
                                                       letter
                                                       upper-
                                                       case,  all
                                                       case).

       Tcl_PackageInitProc   *initProc       (in)      Procedure
                                                       to  invoke
                                                       to  incor­
                                                       porate
                                                       this pack­
                                                       age into a
                                                       trusted
                                                       inter­
                                                       preter.

       Tcl_PackageInitProc   *safeInitProc   (in)      Procedure
                                                       to call to
                                                       incorpo­
                                                       rate  this
                                                       package
                                                       into     a
                                                       safe
                                                       inter­
                                                       preter
                                                       (one  that
                                                       will  exe­
                                                       cute
                                                       untrusted
                                                       scripts).
                                                       NULL means
                                                       the  pack­
                                                       age  can't
                                                       be used in
                                                       safe
                                                       inter­
                                                       preters.
_________________________________________________________________



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 inter­
       preter.  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 themselves (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
              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 pro­
       cedure  will be returned as the result of the load command
       that caused the initialization procedure to be invoked.



KEYWORDS

       initialization procedure, package, static linking