2 '\" Copyright (c) 1998-1999 Scriptics Corporation
4 '\" See the file "license.terms" for information on usage and redistribution
5 '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
7 .TH Tcl_InitStubs 3 8.1 Tcl "Tcl Library Procedures"
8 .\" The -*- nroff -*- definitions below are for supplemental macros used
9 .\" in Tcl/Tk manual entries.
11 .\" .AP type name in/out ?indent?
12 .\" Start paragraph describing an argument to a library procedure.
13 .\" type is type of argument (int, etc.), in/out is either "in", "out",
14 .\" or "in/out" to describe whether procedure reads or modifies arg,
15 .\" and indent is equivalent to second arg of .IP (shouldn't ever be
16 .\" needed; use .AS below instead)
19 .\" Give maximum sizes of arguments for setting tab stops. Type and
20 .\" name are examples of largest possible arguments that will be passed
21 .\" to .AP later. If args are omitted, default tab stops are used.
24 .\" Start box enclosure. From here until next .BE, everything will be
25 .\" enclosed in one large box.
28 .\" End of box enclosure.
31 .\" Begin code excerpt.
36 .\" .VS ?version? ?br?
37 .\" Begin vertical sidebar, for use in marking newly-changed parts
38 .\" of man pages. The first argument is ignored and used for recording
39 .\" the version when the .VS was added, so that the sidebars can be
40 .\" found and removed when they reach a certain age. If another argument
41 .\" is present, then a line break is forced before starting the sidebar.
44 .\" End of vertical sidebar.
47 .\" Begin an indented unfilled display.
50 .\" End of indented unfilled display.
53 .\" Start of list of standard options for a Tk widget. The manpage
54 .\" argument defines where to look up the standard options; if
55 .\" omitted, defaults to "options". The options follow on successive
56 .\" lines, in three columns separated by tabs.
59 .\" End of list of standard options for a Tk widget.
61 .\" .OP cmdName dbName dbClass
62 .\" Start of description of a specific option. cmdName gives the
63 .\" option's name as specified in the class command, dbName gives
64 .\" the option's name in the option database, and dbClass gives
65 .\" the option's class in the option database.
68 .\" Print arg1 underlined, then print arg2 normally.
71 .\" Print arg1 in quotes, then arg2 normally (for trailing punctuation).
74 .\" Print an open parenthesis, arg1 in quotes, then arg2 normally
75 .\" (for trailing punctuation) and then a closing parenthesis.
77 .\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
81 .\" # Start an argument description
85 . ie !"\\$2"" .TP \\n()Cu
90 \&\\$1 \\fI\\$2\\fP (\\$3)
103 .\" # define tabbing values for .AP
106 .if !"\\$1"" .nr )A \\w'\\$1'u+3n
109 .if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
110 .nr )C \\n()Bu+\\w'(in/out)'u+2n
112 .AS Tcl_Interp Tcl_CreateInterp in/out
113 .\" # BS - start boxed text
114 .\" # ^y = starting y location
122 .if n \l'\\n(.lu\(ul'
125 .\" # BE - end boxed text (draw box now)
130 .ie n \l'\\n(^lu\(ul'
132 .\" Draw four-sided box normally, but don't draw top of
133 .\" box if the box started on an earlier page.
135 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
138 \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
145 .\" # VS - start vertical sidebar
146 .\" # ^Y = starting y location
147 .\" # ^v = 1 (for troff; for nroff this doesn't matter)
151 .ie n 'mc \s12\(br\s0
154 .\" # VE - end of vertical sidebar
162 \h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
169 .\" # Special macro to handle page bottom: finish off current
170 .\" # box/sidebar if in box/sidebar mode, then invoked standard
171 .\" # page bottom macro.
178 .\" Draw three-sided box if this is the box's first page,
179 .\" draw two sides but no top otherwise.
180 .ie !\\n(^b-1 \h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
181 .el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
184 .nr ^x \\n(^tu+1v-\\n(^Yu
185 \kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
198 .\" # DS - begin display
204 .\" # DE - end display
210 .\" # SO - start of list of standard options
212 'ie '\\$1'' .ds So \\fBoptions\\fR
213 'el .ds So \\fB\\$1\\fR
214 .SH "STANDARD OPTIONS"
220 .\" # SE - end of list of standard options
225 See the \\*(So manual entry for details on the standard options.
227 .\" # OP - start of full description for a single option
232 Command-Line Name: \\fB\\$1\\fR
233 Database Name: \\fB\\$2\\fR
234 Database Class: \\fB\\$3\\fR
238 .\" # CS - begin code excerpt
244 .\" # CE - end code excerpt
249 .\" # UL - underline word
253 .\" # QW - apply quotation marks to word
255 .ie '\\*(lq'"' ``\\$1''\\$2
256 .\"" fix emacs highlighting
257 .el \\*(lq\\$1\\*(rq\\$2
259 .\" # PQ - apply parens and quotation marks to word
261 .ie '\\*(lq'"' (``\\$1''\\$2)\\$3
262 .\"" fix emacs highlighting
263 .el (\\*(lq\\$1\\*(rq\\$2)\\$3
265 .\" # QR - quoted range
267 .ie '\\*(lq'"' ``\\$1''\\-``\\$2''\\$3
268 .\"" fix emacs highlighting
269 .el \\*(lq\\$1\\*(rq\\-\\*(lq\\$2\\*(rq\\$3
271 .\" # MT - "empty" string
277 Tcl_InitStubs \- initialize the Tcl stubs mechanism
280 \fB#include <tcl.h>\fR
283 \fBTcl_InitStubs\fR(\fIinterp, version, exact\fR)
285 .AS Tcl_Interp *interp
286 .AP Tcl_Interp *interp in
287 Tcl interpreter handle.
288 .AP "const char" *version in
289 A version string consisting of one or more decimal numbers
292 Non-zero means that only the particular version specified by
293 \fIversion\fR is acceptable.
294 Zero means that versions newer than \fIversion\fR are also
295 acceptable as long as they have the same major version number
300 The Tcl stubs mechanism defines a way to dynamically bind
301 extensions to a particular Tcl implementation at run time.
302 This provides two significant benefits to Tcl users:
304 Extensions that use the stubs mechanism can be loaded into
305 multiple versions of Tcl without being recompiled or
308 Extensions that use the stubs mechanism can be dynamically
309 loaded into statically-linked Tcl applications.
311 The stubs mechanism accomplishes this by exporting function tables
312 that define an interface to the Tcl API. The extension then accesses
313 the Tcl API through offsets into the function table, so there are no
314 direct references to any of the Tcl library's symbols. This
315 redirection is transparent to the extension, so an extension writer
316 can continue to use all public Tcl functions as documented.
318 The stubs mechanism requires no changes to applications incorporating
319 Tcl interpreters. Only developers creating C-based Tcl extensions
320 need to take steps to use the stubs mechanism with their extensions.
322 Enabling the stubs mechanism for an extension requires the following
325 Call \fBTcl_InitStubs\fR in the extension before calling any other
328 Define the \fBUSE_TCL_STUBS\fR symbol. Typically, you would include the
329 \fB\-DUSE_TCL_STUBS\fR flag when compiling the extension.
331 Link the extension with the Tcl stubs library instead of the standard
332 Tcl library. For example, to use the Tcl 8.6 ABI on Unix platforms,
333 the library name is \fIlibtclstub8.6.a\fR; on Windows platforms, the
334 library name is \fItclstub86.lib\fR.
336 If the extension also requires the Tk API, it must also call
337 \fBTk_InitStubs\fR to initialize the Tk stubs interface and link
338 with the Tk stubs libraries. See the \fBTk_InitStubs\fR page for
341 \fBTcl_InitStubs\fR attempts to initialize the stub table pointers
342 and ensure that the correct version of Tcl is loaded. In addition
343 to an interpreter handle, it accepts as arguments a version number
344 and a Boolean flag indicating whether the extension requires
345 an exact version match or not. If \fIexact\fR is 0, then the
346 extension is indicating that newer versions of Tcl are acceptable
347 as long as they have the same major version number as \fIversion\fR;
348 non-zero means that only the specified \fIversion\fR is acceptable.
349 \fBTcl_InitStubs\fR returns a string containing the actual version
350 of Tcl satisfying the request, or NULL if the Tcl version is not
351 acceptable, does not support stubs, or any other error condition occurred.