Tcl_WrongNumArgs — generate standard error message for wrong number of arguments
Tcl_WrongNumArgs(interp, objc, objv, message)
Tcl_WrongNumArgs is a utility procedure that is invoked by
command procedures when they discover that they have received the
wrong number of arguments. Tcl_WrongNumArgs generates a
standard error message and stores it in the result value of
interp. The message includes the objc initial
elements of objv plus message. For example, if
objv consists of the values foo and bar,
objc is 1, and message is
then interp's result value will be set to the following
- Tcl_Interp interp (in)
Interpreter in which error will be reported: error message gets stored
in its result value.
- int objc (in)
Number of leading arguments from objv to include in error
- Tcl_Obj *const objv (in)
Arguments to command that had the wrong number of arguments.
- const char *message (in)
Additional error information to print after leading arguments
from objv. This typically gives the acceptable syntax
of the command. This argument may be NULL.
wrong # args: should be "foo fileName count"
If objc is 2, the result will be set to the following string:
wrong # args: should be "foo bar fileName count"
Objc is usually 1, but may be 2 or more for commands like
string and the Tk widget commands, which use the first argument
as a subcommand.
Some of the values in the objv array may be abbreviations for
a subcommand. The command
Tcl_GetIndexFromObj will convert the abbreviated string value
into an indexObject. If an error occurs in the parsing of the
subcommand we would like to use the full subcommand name rather than
the abbreviation. If the Tcl_WrongNumArgs command finds any
indexObjects in the objv array it will use the full subcommand
name in the error message instead of the abbreviated name that was
originally passed in. Using the above example, let us assume that
bar is actually an abbreviation for barfly and the value
is now an indexObject because it was passed to
Tcl_GetIndexFromObj. In this case the error message would be:
wrong # args: should be "foo barfly fileName count"
The objv argument to Tcl_WrongNumArgs should be the exact
arguments passed to the command or method implementation function that is
calling Tcl_WrongNumArgs. As such, all values referenced in it should
have reference counts greater than zero; this is usually a non-issue.
command, error message, wrong number of arguments
Copyright © 1994-1997 Sun Microsystems, Inc.