Initial commit of OpenSPARC T2 design and verification files.
[OpenSPARC-T2-DV] / tools / src / nas,5.n2.os.2 / lib / python / man / man3 / Tcl_CreateCommand.3
CommitLineData
86530b38
AT
1'\"
2'\" Copyright (c) 1989-1993 The Regents of the University of California.
3'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.
4'\"
5'\" See the file "license.terms" for information on usage and redistribution
6'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
7'\"
8'\" RCS: @(#) $Id: CrtCommand.3,v 1.5.2.1 2004/07/16 20:46:52 andreas_kupries Exp $
9'\"
10'\" The definitions below are for supplemental macros used in Tcl/Tk
11'\" manual entries.
12'\"
13'\" .AP type name in/out ?indent?
14'\" Start paragraph describing an argument to a library procedure.
15'\" type is type of argument (int, etc.), in/out is either "in", "out",
16'\" or "in/out" to describe whether procedure reads or modifies arg,
17'\" and indent is equivalent to second arg of .IP (shouldn't ever be
18'\" needed; use .AS below instead)
19'\"
20'\" .AS ?type? ?name?
21'\" Give maximum sizes of arguments for setting tab stops. Type and
22'\" name are examples of largest possible arguments that will be passed
23'\" to .AP later. If args are omitted, default tab stops are used.
24'\"
25'\" .BS
26'\" Start box enclosure. From here until next .BE, everything will be
27'\" enclosed in one large box.
28'\"
29'\" .BE
30'\" End of box enclosure.
31'\"
32'\" .CS
33'\" Begin code excerpt.
34'\"
35'\" .CE
36'\" End code excerpt.
37'\"
38'\" .VS ?version? ?br?
39'\" Begin vertical sidebar, for use in marking newly-changed parts
40'\" of man pages. The first argument is ignored and used for recording
41'\" the version when the .VS was added, so that the sidebars can be
42'\" found and removed when they reach a certain age. If another argument
43'\" is present, then a line break is forced before starting the sidebar.
44'\"
45'\" .VE
46'\" End of vertical sidebar.
47'\"
48'\" .DS
49'\" Begin an indented unfilled display.
50'\"
51'\" .DE
52'\" End of indented unfilled display.
53'\"
54'\" .SO
55'\" Start of list of standard options for a Tk widget. The
56'\" options follow on successive lines, in four columns separated
57'\" by tabs.
58'\"
59'\" .SE
60'\" End of list of standard options for a Tk widget.
61'\"
62'\" .OP cmdName dbName dbClass
63'\" Start of description of a specific option. cmdName gives the
64'\" option's name as specified in the class command, dbName gives
65'\" the option's name in the option database, and dbClass gives
66'\" the option's class in the option database.
67'\"
68'\" .UL arg1 arg2
69'\" Print arg1 underlined, then print arg2 normally.
70'\"
71'\" RCS: @(#) $Id: man.macros,v 1.4 2000/08/25 06:18:32 ericm Exp $
72'\"
73'\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
74.if t .wh -1.3i ^B
75.nr ^l \n(.l
76.ad b
77'\" # Start an argument description
78.de AP
79.ie !"\\$4"" .TP \\$4
80.el \{\
81. ie !"\\$2"" .TP \\n()Cu
82. el .TP 15
83.\}
84.ta \\n()Au \\n()Bu
85.ie !"\\$3"" \{\
86\&\\$1 \\fI\\$2\\fP (\\$3)
87.\".b
88.\}
89.el \{\
90.br
91.ie !"\\$2"" \{\
92\&\\$1 \\fI\\$2\\fP
93.\}
94.el \{\
95\&\\fI\\$1\\fP
96.\}
97.\}
98..
99'\" # define tabbing values for .AP
100.de AS
101.nr )A 10n
102.if !"\\$1"" .nr )A \\w'\\$1'u+3n
103.nr )B \\n()Au+15n
104.\"
105.if !"\\$2"" .nr )B \\w'\\$2'u+\\n()Au+3n
106.nr )C \\n()Bu+\\w'(in/out)'u+2n
107..
108.AS Tcl_Interp Tcl_CreateInterp in/out
109'\" # BS - start boxed text
110'\" # ^y = starting y location
111'\" # ^b = 1
112.de BS
113.br
114.mk ^y
115.nr ^b 1u
116.if n .nf
117.if n .ti 0
118.if n \l'\\n(.lu\(ul'
119.if n .fi
120..
121'\" # BE - end boxed text (draw box now)
122.de BE
123.nf
124.ti 0
125.mk ^t
126.ie n \l'\\n(^lu\(ul'
127.el \{\
128.\" Draw four-sided box normally, but don't draw top of
129.\" box if the box started on an earlier page.
130.ie !\\n(^b-1 \{\
131\h'-1.5n'\L'|\\n(^yu-1v'\l'\\n(^lu+3n\(ul'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
132.\}
133.el \}\
134\h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\l'|0u-1.5n\(ul'
135.\}
136.\}
137.fi
138.br
139.nr ^b 0
140..
141'\" # VS - start vertical sidebar
142'\" # ^Y = starting y location
143'\" # ^v = 1 (for troff; for nroff this doesn't matter)
144.de VS
145.if !"\\$2"" .br
146.mk ^Y
147.ie n 'mc \s12\(br\s0
148.el .nr ^v 1u
149..
150'\" # VE - end of vertical sidebar
151.de VE
152.ie n 'mc
153.el \{\
154.ev 2
155.nf
156.ti 0
157.mk ^t
158\h'|\\n(^lu+3n'\L'|\\n(^Yu-1v\(bv'\v'\\n(^tu+1v-\\n(^Yu'\h'-|\\n(^lu+3n'
159.sp -1
160.fi
161.ev
162.\}
163.nr ^v 0
164..
165'\" # Special macro to handle page bottom: finish off current
166'\" # box/sidebar if in box/sidebar mode, then invoked standard
167'\" # page bottom macro.
168.de ^B
169.ev 2
170'ti 0
171'nf
172.mk ^t
173.if \\n(^b \{\
174.\" Draw three-sided box if this is the box's first page,
175.\" draw two sides but no top otherwise.
176.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
177.el \h'-1.5n'\L'|\\n(^yu-1v'\h'\\n(^lu+3n'\L'\\n(^tu+1v-\\n(^yu'\h'|0u'\c
178.\}
179.if \\n(^v \{\
180.nr ^x \\n(^tu+1v-\\n(^Yu
181\kx\h'-\\nxu'\h'|\\n(^lu+3n'\ky\L'-\\n(^xu'\v'\\n(^xu'\h'|0u'\c
182.\}
183.bp
184'fi
185.ev
186.if \\n(^b \{\
187.mk ^y
188.nr ^b 2
189.\}
190.if \\n(^v \{\
191.mk ^Y
192.\}
193..
194'\" # DS - begin display
195.de DS
196.RS
197.nf
198.sp
199..
200'\" # DE - end display
201.de DE
202.fi
203.RE
204.sp
205..
206'\" # SO - start of list of standard options
207.de SO
208.SH "STANDARD OPTIONS"
209.LP
210.nf
211.ta 5.5c 11c
212.ft B
213..
214'\" # SE - end of list of standard options
215.de SE
216.fi
217.ft R
218.LP
219See the \\fBoptions\\fR manual entry for details on the standard options.
220..
221'\" # OP - start of full description for a single option
222.de OP
223.LP
224.nf
225.ta 4c
226Command-Line Name: \\fB\\$1\\fR
227Database Name: \\fB\\$2\\fR
228Database Class: \\fB\\$3\\fR
229.fi
230.IP
231..
232'\" # CS - begin code excerpt
233.de CS
234.RS
235.nf
236.ta .25i .5i .75i 1i
237..
238'\" # CE - end code excerpt
239.de CE
240.fi
241.RE
242..
243.de UL
244\\$1\l'|0\(ul'\\$2
245..
246.TH Tcl_CreateCommand 3 "" Tcl "Tcl Library Procedures"
247.BS
248.SH NAME
249Tcl_CreateCommand \- implement new commands in C
250.SH SYNOPSIS
251.nf
252\fB#include <tcl.h>\fR
253.sp
254Tcl_Command
255\fBTcl_CreateCommand\fR(\fIinterp, cmdName, proc, clientData, deleteProc\fR)
256.SH ARGUMENTS
257.AS Tcl_CmdDeleteProc **deleteProcPtr
258.AP Tcl_Interp *interp in
259Interpreter in which to create new command.
260.VS 8.4
261.AP "CONST char" *cmdName in
262.VE
263Name of command.
264.AP Tcl_CmdProc *proc in
265Implementation of new command: \fIproc\fR will be called whenever
266\fIcmdName\fR is invoked as a command.
267.AP ClientData clientData in
268Arbitrary one-word value to pass to \fIproc\fR and \fIdeleteProc\fR.
269.AP Tcl_CmdDeleteProc *deleteProc in
270Procedure to call before \fIcmdName\fR is deleted from the interpreter;
271allows for command-specific cleanup. If NULL, then no procedure is
272called before the command is deleted.
273.BE
274
275.SH DESCRIPTION
276.PP
277\fBTcl_CreateCommand\fR defines a new command in \fIinterp\fR and associates
278it with procedure \fIproc\fR such that whenever \fIcmdName\fR is
279invoked as a Tcl command (via a call to \fBTcl_Eval\fR) the Tcl interpreter
280will call \fIproc\fR to process the command.
281It differs from \fBTcl_CreateObjCommand\fR in that a new string-based
282command is defined;
283that is, a command procedure is defined that takes an array of
284argument strings instead of objects.
285The object-based command procedures registered by \fBTcl_CreateObjCommand\fR
286can execute significantly faster than the string-based command procedures
287defined by \fBTcl_CreateCommand\fR.
288This is because they take Tcl objects as arguments
289and those objects can retain an internal representation that
290can be manipulated more efficiently.
291Also, Tcl's interpreter now uses objects internally.
292In order to invoke a string-based command procedure
293registered by \fBTcl_CreateCommand\fR,
294it must generate and fetch a string representation
295from each argument object before the call
296and create a new Tcl object to hold the string result returned by the
297string-based command procedure.
298New commands should be defined using \fBTcl_CreateObjCommand\fR.
299We support \fBTcl_CreateCommand\fR for backwards compatibility.
300.PP
301The procedures \fBTcl_DeleteCommand\fR, \fBTcl_GetCommandInfo\fR,
302and \fBTcl_SetCommandInfo\fR are used in conjunction with
303\fBTcl_CreateCommand\fR.
304.PP
305\fBTcl_CreateCommand\fR will delete an existing command \fIcmdName\fR,
306if one is already associated with the interpreter.
307It returns a token that may be used to refer
308to the command in subsequent calls to \fBTcl_GetCommandName\fR.
309If \fIcmdName\fR contains any \fB::\fR namespace qualifiers,
310then the command is added to the specified namespace;
311otherwise the command is added to the global namespace.
312If \fBTcl_CreateCommand\fR is called for an interpreter that is in
313the process of being deleted, then it does not create a new command
314and it returns NULL.
315\fIProc\fR should have arguments and result that match the type
316\fBTcl_CmdProc\fR:
317.CS
318typedef int Tcl_CmdProc(
319 ClientData \fIclientData\fR,
320 Tcl_Interp *\fIinterp\fR,
321 int \fIargc\fR,
322 CONST char *\fIargv\fR[]);
323.CE
324When \fIproc\fR is invoked the \fIclientData\fR and \fIinterp\fR
325parameters will be copies of the \fIclientData\fR and \fIinterp\fR
326arguments given to \fBTcl_CreateCommand\fR.
327Typically, \fIclientData\fR points to an application-specific
328data structure that describes what to do when the command procedure
329is invoked. \fIArgc\fR and \fIargv\fR describe the arguments to
330the command, \fIargc\fR giving the number of arguments (including
331the command name) and \fIargv\fR giving the values of the arguments
332as strings. The \fIargv\fR array will contain \fIargc\fR+1 values;
333the first \fIargc\fR values point to the argument strings, and the
334last value is NULL.
335.VS
336Note that the argument strings should not be modified as they may
337point to constant strings or may be shared with other parts of the
338interpreter.
339.VE
340.PP
341.VS
342Note that the argument strings are encoded in normalized UTF-8 since
343version 8.1 of Tcl.
344.VE
345.PP
346\fIProc\fR must return an integer code that is either \fBTCL_OK\fR, \fBTCL_ERROR\fR,
347\fBTCL_RETURN\fR, \fBTCL_BREAK\fR, or \fBTCL_CONTINUE\fR. See the Tcl overview man page
348for details on what these codes mean. Most normal commands will only
349return \fBTCL_OK\fR or \fBTCL_ERROR\fR. In addition, \fIproc\fR must set
350the interpreter result to point to a string value;
351in the case of a \fBTCL_OK\fR return code this gives the result
352of the command, and in the case of \fBTCL_ERROR\fR it gives an error message.
353The \fBTcl_SetResult\fR procedure provides an easy interface for setting
354the return value; for complete details on how the the interpreter result
355field is managed, see the \fBTcl_Interp\fR man page.
356Before invoking a command procedure,
357\fBTcl_Eval\fR sets the interpreter result to point to an empty string,
358so simple commands can return an empty result by doing nothing at all.
359.PP
360The contents of the \fIargv\fR array belong to Tcl and are not
361guaranteed to persist once \fIproc\fR returns: \fIproc\fR should
362not modify them, nor should it set the interpreter result to point
363anywhere within the \fIargv\fR values.
364Call \fBTcl_SetResult\fR with status \fBTCL_VOLATILE\fR if you want
365to return something from the \fIargv\fR array.
366.PP
367\fIDeleteProc\fR will be invoked when (if) \fIcmdName\fR is deleted.
368This can occur through a call to \fBTcl_DeleteCommand\fR or \fBTcl_DeleteInterp\fR,
369or by replacing \fIcmdName\fR in another call to \fBTcl_CreateCommand\fR.
370\fIDeleteProc\fR is invoked before the command is deleted, and gives the
371application an opportunity to release any structures associated
372with the command. \fIDeleteProc\fR should have arguments and
373result that match the type \fBTcl_CmdDeleteProc\fR:
374.CS
375typedef void Tcl_CmdDeleteProc(ClientData \fIclientData\fR);
376.CE
377The \fIclientData\fR argument will be the same as the \fIclientData\fR
378argument passed to \fBTcl_CreateCommand\fR.
379.PP
380
381.SH "SEE ALSO"
382Tcl_CreateObjCommand, Tcl_DeleteCommand, Tcl_GetCommandInfo, Tcl_SetCommandInfo, Tcl_GetCommandName, Tcl_SetObjResult
383
384.SH KEYWORDS
385bind, command, create, delete, interpreter, namespace