OSDN Git Service

FIRST REPOSITORY
[eos/hostdependOTHERS.git] / CELLLINUX64 / util / CELLLINUX64 / man / man3 / Tcl_CreateCommand.3
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 2002/08/05 03:24:39 dgp 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
219 See 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
226 Command-Line Name:      \\fB\\$1\\fR
227 Database Name:  \\fB\\$2\\fR
228 Database 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
249 Tcl_CreateCommand \- implement new commands in C
250 .SH SYNOPSIS
251 .nf
252 \fB#include <tcl.h>\fR
253 .sp
254 Tcl_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
259 Interpreter in which to create new command.
260 .VS 8.4
261 .AP "CONST char" *cmdName in
262 .VE
263 Name of command.
264 .AP Tcl_CmdProc *proc in
265 Implementation of new command:  \fIproc\fR will be called whenever
266 \fIcmdName\fR is invoked as a command.
267 .AP ClientData clientData in
268 Arbitrary one-word value to pass to \fIproc\fR and \fIdeleteProc\fR.
269 .AP Tcl_CmdDeleteProc *deleteProc in
270 Procedure to call before \fIcmdName\fR is deleted from the interpreter;
271 allows for command-specific cleanup.  If NULL, then no procedure is
272 called 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
278 it with procedure \fIproc\fR such that whenever \fIcmdName\fR is
279 invoked as a Tcl command (via a call to \fBTcl_Eval\fR) the Tcl interpreter
280 will call \fIproc\fR to process the command.
281 It differs from \fBTcl_CreateObjCommand\fR in that a new string-based
282 command is defined;
283 that is, a command procedure is defined that takes an array of
284 argument strings instead of objects.
285 The object-based command procedures registered by \fBTcl_CreateObjCommand\fR
286 can execute significantly faster than the string-based command procedures
287 defined by \fBTcl_CreateCommand\fR.
288 This is because they take Tcl objects as arguments
289 and those objects can retain an internal representation that
290 can be manipulated more efficiently.
291 Also, Tcl's interpreter now uses objects internally.
292 In order to invoke a string-based command procedure
293 registered by \fBTcl_CreateCommand\fR,
294 it must generate and fetch a string representation
295 from each argument object before the call
296 and create a new Tcl object to hold the string result returned by the
297 string-based command procedure.
298 New commands should be defined using \fBTcl_CreateObjCommand\fR.
299 We support \fBTcl_CreateCommand\fR for backwards compatibility.
300 .PP
301 The procedures \fBTcl_DeleteCommand\fR, \fBTcl_GetCommandInfo\fR,
302 and \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,
306 if one is already associated with the interpreter.
307 It returns a token that may be used to refer
308 to the command in subsequent calls to \fBTcl_GetCommandName\fR.
309 If \fIcmdName\fR contains any \fB::\fR namespace qualifiers,
310 then the command is added to the specified namespace;
311 otherwise the command is added to the global namespace.
312 If \fBTcl_CreateCommand\fR is called for an interpreter that is in
313 the process of being deleted, then it does not create a new command
314 and it returns NULL.
315 \fIProc\fR should have arguments and result that match the type
316 \fBTcl_CmdProc\fR:
317 .CS
318 typedef int Tcl_CmdProc(
319         ClientData \fIclientData\fR,
320         Tcl_Interp *\fIinterp\fR,
321         int \fIargc\fR,
322         CONST char *\fIargv\fR[]);
323 .CE
324 When \fIproc\fR is invoked the \fIclientData\fR and \fIinterp\fR
325 parameters will be copies of the \fIclientData\fR and \fIinterp\fR
326 arguments given to \fBTcl_CreateCommand\fR.
327 Typically, \fIclientData\fR points to an application-specific
328 data structure that describes what to do when the command procedure
329 is invoked.  \fIArgc\fR and \fIargv\fR describe the arguments to
330 the command, \fIargc\fR giving the number of arguments (including
331 the command name) and \fIargv\fR giving the values of the arguments
332 as strings.  The \fIargv\fR array will contain \fIargc\fR+1 values;
333 the first \fIargc\fR values point to the argument strings, and the
334 last value is NULL.  
335 .VS
336 Note that the argument strings should not be modified as they may
337 point to constant strings or may be shared with other parts of the
338 interpreter.
339 .VE
340 .PP
341 \fIProc\fR must return an integer code that is either \fBTCL_OK\fR, \fBTCL_ERROR\fR,
342 \fBTCL_RETURN\fR, \fBTCL_BREAK\fR, or \fBTCL_CONTINUE\fR.  See the Tcl overview man page
343 for details on what these codes mean.  Most normal commands will only
344 return \fBTCL_OK\fR or \fBTCL_ERROR\fR.  In addition, \fIproc\fR must set
345 the interpreter result to point to a string value;
346 in the case of a \fBTCL_OK\fR return code this gives the result
347 of the command, and in the case of \fBTCL_ERROR\fR it gives an error message.
348 The \fBTcl_SetResult\fR procedure provides an easy interface for setting
349 the return value;  for complete details on how the the interpreter result
350 field is managed, see the \fBTcl_Interp\fR man page.
351 Before invoking a command procedure,
352 \fBTcl_Eval\fR sets the interpreter result to point to an empty string,
353 so simple commands can return an empty result by doing nothing at all.
354 .PP
355 The contents of the \fIargv\fR array belong to Tcl and are not
356 guaranteed to persist once \fIproc\fR returns:  \fIproc\fR should
357 not modify them, nor should it set the interpreter result to point
358 anywhere within the \fIargv\fR values.
359 Call \fBTcl_SetResult\fR with status \fBTCL_VOLATILE\fR if you want
360 to return something from the \fIargv\fR array.
361 .PP
362 \fIDeleteProc\fR will be invoked when (if) \fIcmdName\fR is deleted.
363 This can occur through a call to \fBTcl_DeleteCommand\fR or \fBTcl_DeleteInterp\fR,
364 or by replacing \fIcmdName\fR in another call to \fBTcl_CreateCommand\fR.
365 \fIDeleteProc\fR is invoked before the command is deleted, and gives the
366 application an opportunity to release any structures associated
367 with the command.  \fIDeleteProc\fR should have arguments and
368 result that match the type \fBTcl_CmdDeleteProc\fR:
369 .CS
370 typedef void Tcl_CmdDeleteProc(ClientData \fIclientData\fR);
371 .CE
372 The \fIclientData\fR argument will be the same as the \fIclientData\fR
373 argument passed to \fBTcl_CreateCommand\fR.
374 .PP
375
376 .SH "SEE ALSO"
377 Tcl_CreateObjCommand, Tcl_DeleteCommand, Tcl_GetCommandInfo, Tcl_SetCommandInfo, Tcl_GetCommandName, Tcl_SetObjResult
378
379 .SH KEYWORDS
380 bind, command, create, delete, interpreter, namespace