⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crtcommand.3

📁 linux系统下的音频通信
💻 3
字号:
'\"'\" Copyright (c) 1989-1993 The Regents of the University of California.'\" Copyright (c) 1994-1997 Sun Microsystems, Inc.'\"'\" See the file "license.terms" for information on usage and redistribution'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.'\" '\" SCCS: @(#) CrtCommand.3 1.29 97/06/04 17:23:53'\" .so man.macros.TH Tcl_CreateCommand 3 "" Tcl "Tcl Library Procedures".BS.SH NAMETcl_CreateCommand \- implement new commands in C.SH SYNOPSIS.nf\fB#include <tcl.h>\fR.spTcl_Command\fBTcl_CreateCommand\fR(\fIinterp, cmdName, proc, clientData, deleteProc\fR).SH ARGUMENTS.AS Tcl_CmdDeleteProc **deleteProcPtr.AP Tcl_Interp *interp inInterpreter in which to create new command..AP char *cmdName inName of command..AP Tcl_CmdProc *proc inImplementation of new command:  \fIproc\fR will be called whenever\fIcmdName\fR is invoked as a command..AP ClientData clientData inArbitrary one-word value to pass to \fIproc\fR and \fIdeleteProc\fR..AP Tcl_CmdDeleteProc *deleteProc inProcedure to call before \fIcmdName\fR is deleted from the interpreter;allows for command-specific cleanup.  If NULL, then no procedure iscalled before the command is deleted..BE.SH DESCRIPTION.PP\fBTcl_CreateCommand\fR defines a new command in \fIinterp\fR and associatesit with procedure \fIproc\fR such that whenever \fIcmdName\fR isinvoked as a Tcl command (via a call to \fBTcl_Eval\fR) the Tcl interpreterwill call \fIproc\fR to process the command.It differs from \fBTcl_CreateObjCommand\fR in that a new string-basedcommand is defined;that is, a command procedure is defined that takes an array ofargument strings instead of objects.The object-based command procedures registered by \fBTcl_CreateObjCommand\fRcan execute significantly faster than the string-based command proceduresdefined by \fBTcl_CreateCommand\fR.This is because they take Tcl objects as argumentsand those objects can retain an internal representation thatcan be manipulated more efficiently.Also, Tcl's interpreter now uses objects internally.In order to invoke a string-based command procedureregistered by \fBTcl_CreateCommand\fR,it must generate and fetch a string representationfrom each argument object before the calland create a new Tcl object to hold the string result returned by thestring-based command procedure.New commands should be defined using \fBTcl_CreateObjCommand\fR.We support \fBTcl_CreateCommand\fR for backwards compatibility..PPThe procedures \fBTcl_DeleteCommand\fR, \fBTcl_GetCommandInfo\fR,and \fBTcl_SetCommandInfo\fR are used in conjunction with\fBTcl_CreateCommand\fR..PP\fBTcl_CreateCommand\fR will delete an existing command \fIcmdName\fR,if one is already associated with the interpreter.It returns a token that may be used to referto the command in subsequent calls to \fBTcl_GetCommandName\fR.If \fIcmdName\fR contains any \fB::\fR namespace qualifiers,then the command is added to the specified namespace;otherwise the command is added to the global namespace.If \fBTcl_CreateCommand\fR is called for an interpreter that is inthe process of being deleted, then it does not create a new commandand it returns NULL.\fIProc\fR should have arguments and result that match the type\fBTcl_CmdProc\fR:.CStypedef int Tcl_CmdProc(	ClientData \fIclientData\fR,	Tcl_Interp *\fIinterp\fR,	int \fIargc\fR,	char *\fIargv\fR[]);.CEWhen \fIproc\fR is invoked the \fIclientData\fR and \fIinterp\fRparameters will be copies of the \fIclientData\fR and \fIinterp\fRarguments given to \fBTcl_CreateCommand\fR.Typically, \fIclientData\fR points to an application-specificdata structure that describes what to do when the command procedureis invoked.  \fIArgc\fR and \fIargv\fR describe the arguments tothe command, \fIargc\fR giving the number of arguments (includingthe command name) and \fIargv\fR giving the values of the argumentsas strings.  The \fIargv\fR array will contain \fIargc\fR+1 values;the first \fIargc\fR values point to the argument strings, and thelast value is NULL..PP\fIProc\fR must return an integer code that is either \fBTCL_OK\fR, \fBTCL_ERROR\fR,\fBTCL_RETURN\fR, \fBTCL_BREAK\fR, or \fBTCL_CONTINUE\fR.  See the Tcl overview man pagefor details on what these codes mean.  Most normal commands will onlyreturn \fBTCL_OK\fR or \fBTCL_ERROR\fR.  In addition, \fIproc\fR must setthe interpreter result to point to a string value;in the case of a \fBTCL_OK\fR return code this gives the resultof the command, and in the case of \fBTCL_ERROR\fR it gives an error message.The \fBTcl_SetResult\fR procedure provides an easy interface for settingthe return value;  for complete details on how the the interpreter resultfield is managed, see the \fBTcl_Interp\fR man page.Before invoking a command procedure,\fBTcl_Eval\fR sets the interpreter result to point to an empty string,so simple commands can return an empty result by doing nothing at all..PPThe contents of the \fIargv\fR array belong to Tcl and are notguaranteed to persist once \fIproc\fR returns:  \fIproc\fR shouldnot modify them, nor should it set the interpreter result to pointanywhere within the \fIargv\fR values.Call \fBTcl_SetResult\fR with status \fBTCL_VOLATILE\fR if you wantto return something from the \fIargv\fR array..PP\fIDeleteProc\fR will be invoked when (if) \fIcmdName\fR is deleted.This can occur through a call to \fBTcl_DeleteCommand\fR or \fBTcl_DeleteInterp\fR,or by replacing \fIcmdName\fR in another call to \fBTcl_CreateCommand\fR.\fIDeleteProc\fR is invoked before the command is deleted, and gives theapplication an opportunity to release any structures associatedwith the command.  \fIDeleteProc\fR should have arguments andresult that match the type \fBTcl_CmdDeleteProc\fR:.CStypedef void Tcl_CmdDeleteProc(ClientData \fIclientData\fR);.CEThe \fIclientData\fR argument will be the same as the \fIclientData\fRargument passed to \fBTcl_CreateCommand\fR..PP.SH "SEE ALSO"Tcl_CreateObjCommand, Tcl_DeleteCommand, Tcl_GetCommandInfo, Tcl_SetCommandInfo, Tcl_GetCommandName, Tcl_SetObjResult.SH KEYWORDSbind, command, create, delete, interpreter, namespace

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -