OSDN Git Service

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