Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Tcl_InitStubs(3)	     Tcl Library Procedures		Tcl_InitStubs(3)

________________________________________________________________________________

NAME
     Tcl_InitStubs - initialize the Tcl stubs mechanism

SYNOPSIS
     #include <tcl.h>

     const char *
     Tcl_InitStubs(interp, version, exact)

ARGUMENTS
     Tcl_Interp *interp (in)	      Tcl interpreter handle.

     const char *version (in)	      A version string, indicating which minimal
				      version of Tcl is accepted.  Normally just
				      "8.6".  Or  "8.6-" if both 8.6 and 9.0 are
				      accepted.

     int exact (in)		      1 means that only the  particular  version
				      specified by version is accepted.  0 means
				      that  versions newer than version are also
				      accepted.  If  theversion  ends  with   -,
				      higher  major  versions  are  accepted  as
				      well, otherwise the major version must  be
				      the  same  as in version.  Other bits have
				      no effect.
________________________________________________________________________________

INTRODUCTION
     The Tcl stubs mechanism defines a way to dynamically bind extensions  to  a
     particular  Tcl  implementation at run time.  This provides two significant
     benefits to Tcl users:

     1)   Extensions that use the stubs mechanism can be  loaded  into	multiple
	  versions  of	Tcl without being recompiled or relinked, as long as the
	  major Tcl version is the same.

     2)   Extensions that use the stubs mechanism can be dynamically loaded into
	  statically-linked Tcl applications.

     The stubs mechanism accomplishes this by exporting function tables that de-
     fine an interface to the Tcl API.	The extension then accesses the Tcl  API
     through  offsets into the function table, so there are no direct references
     to any of the Tcl library's symbols.  This redirection  is  transparent  to
     the  extension,  so  an extension writer can continue to use all public Tcl
     functions as documented.

     The stubs mechanism requires no changes to applications  incorporating  Tcl
     interpreters.  Only developers creating C-based Tcl extensions need to take
     steps to use the stubs mechanism with their extensions.

     Enabling the stubs mechanism for an extension requires the following steps:

     1)   Call Tcl_InitStubs in the extension before calling any other Tcl func-
	  tions.

     2)   Define  the  USE_TCL_STUBS  symbol.	Typically, you would include the
	  -DUSE_TCL_STUBS flag when compiling the extension.

     3)   Link the extension with the Tcl stubs library instead of the	standard
	  Tcl  library.   For example, to use the Tcl 8.6 ABI on Unix platforms,
	  the library name is libtclstub8.6.a; on Windows platforms, the library
	  name is tclstub86.lib.

     If the extension also requires the Tk API, it must also  call  Tk_InitStubs
     to  initialize the Tk stubs interface and link with the Tk stubs libraries.
     See the Tk_InitStubs page for more information.

DESCRIPTION
     Tcl_InitStubs attempts to initialize the stub  table  pointers  and  ensure
     that  the	correct version of Tcl is loaded.  In addition to an interpreter
     handle, it accepts as arguments a version number and a Boolean  flag  indi-
     cating  whether  the  extension requires an exact version match or not.  If
     exact is 0, then versions newer than version are also accepted. If  thever-
     sion ends with -, higher major versions are accepted as well, otherwise the
     major version must be the same as in version.  1 means that only the speci-
     fied  version  is	accepted.  version can be any construct as described for
     package require (PACKAGE manual page in the section REQUIREMENT).	Multiple
     requirement strings like with package require are not supported.

     Tcl_InitStubs returns a string containing the actual version of Tcl  satis-
     fying  the  request,  or  NULL if the Tcl version is not accepted, does not
     support stubs, or any other error condition occurred.

SEE ALSO
     Tk_InitStubs package

KEYWORDS
     stubs

Tcl				       8.1			Tcl_InitStubs(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=Tcl_InitStubs.tcl86&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help