HPUX CrtCommand[3]

CrtCommand in anderen Kapiteln des hpux Handbuch:
Tcl_CreateCommand(3) Tcl Tcl_CreateCommand(3)
Tcl Library Procedures Tcl Library Procedures
___________________________________________________________________________
NAME
Tcl_CreateCommand, Tcl_DeleteCommand, Tcl_GetCommandInfo,
Tcl_SetCommandInfo - implement new commands in C
SYNOPSIS
#include <tcl.h>
Tcl_CreateCommand(interp, cmdName, proc, clientData, deleteProc)
int
Tcl_DeleteCommand(interp, cmdName)
int |
Tcl_GetCommandInfo(interp, cmdName, infoPtr) |
int |
Tcl_SetCommandInfo(interp, cmdName, infoPtr) |
ARGUMENTS
Tcl_Interp *interp (in) Interpreter in which
to create new command.
char *cmdName (in) Name of command.
Tcl_CmdProc *proc (in) Implementation of new
command: proc will be
called whenever
cmdName is invoked as
a command.
ClientData clientData (in) Arbitrary one-word
value to pass to proc
and deleteProc.
Tcl_CmdDeleteProc *deleteProc (in) Procedure to call
before cmdName is
deleted from the
interpreter; allows
for command-specific
cleanup. If NULL,
then no procedure is
called before the
command is deleted.
Tcl_CmdInfo *infoPtr (in/out) Pointer to structure |
containing various |
information about a |
- 1 - Formatted: August 11, 1996
Tcl_CreateCommand(3) Tcl Tcl_CreateCommand(3)
Tcl Library Procedures Tcl Library Procedures
Tcl command. |
___________________________________________________________________________
DESCRIPTION
Tcl_CreateCommand defines a new command in interp and associates it
with procedure proc such that whenever cmdName is invoked as a Tcl
command (via a call to Tcl_Eval) the Tcl interpreter will call proc to
process the command. If there is already a command cmdName associated
with the interpreter, it is deleted. Proc should have arguments and
result that match the type Tcl_CmdProc:
typedef int Tcl_CmdProc(
ClientData clientData,
Tcl_Interp *interp,
int argc,
char *argv[]);
When proc is invoked the clientData and interp parameters will be
copies of the clientData and interp arguments given to
Tcl_CreateCommand. Typically, clientData points to an application-
specific data structure that describes what to do when the command
procedure is invoked. Argc and argv describe the arguments to the
command, argc giving the number of arguments (including the command
name) and argv giving the values of the arguments as strings. The
argv array will contain argc+1 values; the first argc values point to
the argument strings, and the last value is NULL.
Proc must return an integer code that is either TCL_OK, TCL_ERROR,
TCL_RETURN, TCL_BREAK, or TCL_CONTINUE. See the Tcl overview man page
for details on what these codes mean. Most normal commands will only
return TCL_OK or TCL_ERROR. In addition, proc must set interp->result
to point to a string value; in the case of a TCL_OK return code this
gives the result of the command, and in the case of TCL_ERROR it gives
an error message. The Tcl_SetResult procedure provides an easy
interface for setting the return value; for complete details on how
the interp->result field is managed, see the Tcl_Interp man page.
Before invoking a command procedure, Tcl_Eval sets interp->result to
point to an empty string, so simple commands can return an empty
result by doing nothing at all.
The contents of the argv array belong to Tcl and are not guaranteed to |
persist once proc returns: proc should not modify them, nor should it |
set interp->result to point anywhere within the argv values. Call |
Tcl_SetResult with status TCL_VOLATILE if you want to return something |
from the argv array. |
DeleteProc will be invoked when (if) cmdName is deleted. This can
occur through a call to Tcl_DeleteCommand or Tcl_DeleteInterp, or by
replacing cmdName in another call to Tcl_CreateCommand. DeleteProc is
invoked before the command is deleted, and gives the application an
- 2 - Formatted: August 11, 1996
Tcl_CreateCommand(3) Tcl Tcl_CreateCommand(3)
Tcl Library Procedures Tcl Library Procedures
opportunity to release any structures associated with the command.
DeleteProc should have arguments and result that match the type
Tcl_CmdDeleteProc:
typedef void Tcl_CmdDeleteProc(ClientData clientData);
The clientData argument will be the same as the clientData argument
passed to Tcl_CreateCommand.
Tcl_DeleteCommand deletes a command from a command interpreter. Once
the call completes, attempts to invoke cmdName in interp will result
in errors. If cmdName isn't bound as a command in interp then
Tcl_DeleteCommand does nothing and returns -1; otherwise it returns
0. There are no restrictions on cmdName: it may refer to a built-in
command, an application-specific command, or a Tcl procedure.
Tcl_GetCommandInfo checks to see whether its cmdName argument exists |
as a command in interp. If not then it returns 0. Otherwise it |
places information about the command in the structure pointed to by |
infoPtr and returns 1. Tcl_CmdInfo structures have fields named proc, |
clientData, and deleteProc, which have the same meaning as the |
corresponding arguments to Tcl_CreateCommand. There is also a field |
deleteData, which is the ClientData value to pass to deleteProc; it |
is normally the same as clientData but may be set independently using |
the Tcl_SetCommandInfo procedure. |
Tcl_SetCommandInfo is used to modify the procedures and ClientData |
values associated with a command. Its cmdName argument is the name of |
a command in interp. If this command exists then Tcl_SetCommandInfo |
returns 0. Otherwise, it copies the information from *infoPtr to |
Tcl's internal structure for the command and returns 1. Note that |
this procedure allows the ClientData for a command's deletion |
procedure to be given a different value than the ClientData for its |
command procedure. |
KEYWORDS
bind, command, create, delete, interpreter
- 3 - Formatted: August 11, 1996