Tcl_PkgRequire, Tcl_PkgRequireEx, Tcl_PkgPresent, Tcl_Pkg­
       PresentEx, Tcl_PkgProvide, Tcl_PkgProvideEx - package ver­
       sion control


       #include <tcl.h>

       char *
       Tcl_PkgRequire(interp, name, version, exact)

       char *
       Tcl_PkgRequireEx(interp, name, version, exact, clientDataPtr)

       char *
       Tcl_PkgPresent(interp, name, version, exact)

       char *
       Tcl_PkgPresentEx(interp, name, version, exact, clientDataPtr)

       Tcl_PkgProvide(interp, name, version)

       Tcl_PkgProvideEx(interp, name, version, clientData)


       Tcl_Interp     *interp         (in)      Interpreter where
                                                package is needed
                                                or available.

       char           *name           (in)      Name  of package.

       char           *version        (in)      A version  string
                                                consisting of one
                                                or  more  decimal
                                                numbers separated
                                                by dots.

       int            exact           (in)      Non-zero    means
                                                that   only   the
                                                particular   ver­
                                                sion specified by
                                                version        is
                                                acceptable.  Zero
                                                means that  newer
                                                versions     than
                                                version are  also
                                                acceptable     as
                                                long as they have
                                                the   same  major

       ClientData     clientData      (in)      Arbitrary   value
                                                to be  associated
                                                with the package.

       ClientData     *clientDataPtr  (out)     Pointer to  place
                                                to    store   the
                                                value  associated
                                                with the matching
                                                package.  It   is
                                                only  changed  if
                                                the  pointer   is
                                                not  NULL and the
                                                function     com­
                                                pleted   success­


       These procedures provide C-level interfaces to Tcl's pack­
       age and version management facilities.

       Tcl_PkgRequire  is  equivalent to the package require com­
       mand, Tcl_PkgPresent is equivalent to the package  present
       command,  and  Tcl_PkgProvide is equivalent to the package
       provide command.

       See the documentation for the Tcl commands for details  on
       what these procedures do.

       If  Tcl_PkgPresent or Tcl_PkgRequire complete successfully
       they return a pointer to the version string for  the  ver­
       sion  of  the  package that is provided in the interpreter
       (which may be different than version); if an error  occurs
       they  return NULL and leave an error message in the inter­
       preter's result.

       Tcl_PkgProvide returns TCL_OK  if  it  completes  success­
       fully;  if an error occurs it returns TCL_ERROR and leaves
       an error message in the interpreter's result.

       Tcl_PkgProvideEx,  Tcl_PkgPresentEx  and  Tcl_PkgRequireEx
       allow  the setting and retrieving of the client data asso­
       ciated with the package. In all other  respects  they  are
       equivalent to the matching functions.


       package, present, provide, require, version