diff options
Diffstat (limited to 'doc/TraceCmd.3')
-rw-r--r-- | doc/TraceCmd.3 | 55 |
1 files changed, 24 insertions, 31 deletions
diff --git a/doc/TraceCmd.3 b/doc/TraceCmd.3 index 5c84249..020f1ca 100644 --- a/doc/TraceCmd.3 +++ b/doc/TraceCmd.3 @@ -25,10 +25,11 @@ void .AS Tcl_CommandTraceProc prevClientData .AP Tcl_Interp *interp in Interpreter containing the command. -.AP "CONST char" *cmdName in +.AP "const char" *cmdName in Name of command. .AP int flags in -OR-ed collection of the value TCL_TRACE_RENAME and TCL_TRACE_DELETE. +OR'ed collection of the values \fBTCL_TRACE_RENAME\fR and +\fBTCL_TRACE_DELETE\fR. .AP Tcl_CommandTraceProc *proc in Procedure to call when specified operations occur to \fIcmdName\fR. .AP ClientData clientData in @@ -38,19 +39,18 @@ If non-NULL, gives last value returned by \fBTcl_CommandTraceInfo\fR, so this call will return information about next trace. If NULL, this call will return information about first trace. .BE - .SH DESCRIPTION .PP \fBTcl_TraceCommand\fR allows a C procedure to monitor operations performed on a Tcl command, so that the C procedure is invoked whenever the command is renamed or deleted. If the trace is created -successfully then \fBTcl_TraceCommand\fR returns TCL_OK. If an error +successfully then \fBTcl_TraceCommand\fR returns \fBTCL_OK\fR. If an error occurred (e.g. \fIcmdName\fR specifies a non-existent command) then -TCL_ERROR is returned and an error message is left in the +\fBTCL_ERROR\fR is returned and an error message is left in the interpreter's result. .PP The \fIflags\fR argument to \fBTcl_TraceCommand\fR indicates when the -trace procedure is to be invoked. It consists of an OR-ed combination +trace procedure is to be invoked. It consists of an OR'ed combination of any of the following values: .TP \fBTCL_TRACE_RENAME\fR @@ -64,10 +64,10 @@ Whenever one of the specified operations occurs to the command, match the type \fBTcl_CommandTraceProc\fR: .CS typedef void Tcl_CommandTraceProc( - ClientData \fIclientData\fR, + ClientData \fIclientData\fR, Tcl_Interp *\fIinterp\fR, - CONST char *\fIoldName\fR, - CONST char *\fInewName\fR, + const char *\fIoldName\fR, + const char *\fInewName\fR, int \fIflags\fR); .CE The \fIclientData\fR and \fIinterp\fR parameters will have the same @@ -77,17 +77,17 @@ data structure that describes what to do when \fIproc\fR is invoked. \fIOldName\fR gives the name of the command being renamed, and \fInewName\fR gives the name that the command is being renamed to (or an empty string or NULL when the command is being deleted.) -\fIFlags\fR is an OR-ed combination of bits potentially providing -several pieces of information. One of the bits TCL_TRACE_RENAME and -TCL_TRACE_DELETE will be set in \fIflags\fR to indicate which +\fIFlags\fR is an OR'ed combination of bits potentially providing +several pieces of information. One of the bits \fBTCL_TRACE_RENAME\fR and +\fBTCL_TRACE_DELETE\fR will be set in \fIflags\fR to indicate which operation is being performed on the command. The bit -TCL_TRACE_DESTROYED will be set in \fIflags\fR if the trace is about +\fBTCL_TRACE_DESTROYED\fR will be set in \fIflags\fR if the trace is about to be destroyed; this information may be useful to \fIproc\fR so that it can clean up its own internal data structures (see the section -TCL_TRACE_DESTROYED below for more details). Lastly, the bit -TCL_INTERP_DESTROYED will be set if the entire interpreter is being +\fBTCL_TRACE_DESTROYED\fR below for more details). Lastly, the bit +\fBTCL_INTERP_DESTROYED\fR will be set if the entire interpreter is being destroyed. When this bit is set, \fIproc\fR must be especially -careful in the things it does (see the section TCL_INTERP_DESTROYED +careful in the things it does (see the section \fBTCL_INTERP_DESTROYED\fR below). .PP \fBTcl_UntraceCommand\fR may be used to remove a trace. If the @@ -109,7 +109,7 @@ argument. If the \fIprevClientData\fR argument is NULL then the return value corresponds to the first (most recently created) matching trace, or NULL if there are no matching traces. -If the \fIprevClientData\fR argument isn't NULL, then it should +If the \fIprevClientData\fR argument is not NULL, then it should be the return value from a previous call to \fBTcl_CommandTraceInfo\fR. In this case, the new return value will correspond to the next matching trace after the one whose \fIclientData\fR matches @@ -117,15 +117,13 @@ matching trace after the one whose \fIclientData\fR matches or if there are no more matching traces after it. This mechanism makes it possible to step through all of the traces for a given command that have the same \fIproc\fR. - .SH "CALLING COMMANDS DURING TRACES" .PP During rename traces, the command being renamed is visible with both names simultaneously, and the command still exists during delete -traces (if TCL_INTERP_DESTROYED is not set). However, there is no +traces (if \fBTCL_INTERP_DESTROYED\fR is not set). However, there is no mechanism for signaling that an error occurred in a trace procedure, so great care should be taken that errors do not get silently lost. - .SH "MULTIPLE TRACES" .PP It is possible for multiple traces to exist on the same command. @@ -137,32 +135,27 @@ If the command being renamed is renamed by one of its rename traces, that renaming takes precedence over the one that triggered the trace and the collection of traces will not be reexecuted; if several traces rename the command, the last renaming takes precedence. - .SH "TCL_TRACE_DESTROYED FLAG" .PP -In a delete callback to \fIproc\fR, the TCL_TRACE_DESTROYED bit +In a delete callback to \fIproc\fR, the \fBTCL_TRACE_DESTROYED\fR bit is set in \fIflags\fR. - -'\" Perhaps need some more comments here? - DKF - +.\" Perhaps need some more comments here? - DKF .SH "TCL_INTERP_DESTROYED" .PP When an interpreter is destroyed, unset traces are called for all of its commands. -The TCL_INTERP_DESTROYED bit will be set in the \fIflags\fR +The \fBTCL_INTERP_DESTROYED\fR bit will be set in the \fIflags\fR argument passed to the trace procedures. Trace procedures must be extremely careful in what they do if -the TCL_INTERP_DESTROYED bit is set. +the \fBTCL_INTERP_DESTROYED\fR bit is set. It is not safe for the procedures to invoke any Tcl procedures on the interpreter, since its state is partially deleted. All that trace procedures should do under these circumstances is to clean up and free their own internal data structures. - .SH BUGS .PP -Tcl doesn't do any error checking to prevent trace procedures -from misusing the interpreter during traces with TCL_INTERP_DESTROYED +Tcl does not do any error checking to prevent trace procedures +from misusing the interpreter during traces with \fBTCL_INTERP_DESTROYED\fR set. - .SH KEYWORDS clientData, trace, command |