manpagez: man pages & more
man ParseArgs(3)
Home | html | info | man
Tcl_ParseArgsObjv(3)        Tcl Library Procedures        Tcl_ParseArgsObjv(3)




NAME

       Tcl_ParseArgsObjv - parse arguments according to a tabular description


SYNOPSIS

       #include <tcl.h>

       int
       Tcl_ParseArgsObjv(interp, argTable, objcPtr, objv, remObjv)


ARGUMENTS

       Where to store error messages.  Pointer to array of option descriptors.
       A pointer to variable holding number of arguments in objv. Will be mod-
       ified to hold number of arguments left in the unprocessed argument list
       stored in remObjv.  The array of arguments to be parsed.  Pointer to  a
       variable  that will hold the array of unprocessed arguments.  Should be
       NULL if no return of unprocessed arguments is required. If  objcPtr  is
       updated  to  a  non-zero value, the array returned through this must be
       deallocated using ckfree.


DESCRIPTION

       The Tcl_ParseArgsObjv function provides a system for  parsing  argument
       lists  of  the  form Such argument lists are commonly found both in the
       arguments to a program and in the arguments to an individual  Tcl  com-
       mand. This parser assumes that the order of the arguments does not mat-
       ter, other than in so far as later copies of a duplicated option  over-
       riding earlier ones.

       The argument array is described by the objcPtr and objv parameters, and
       an array of unprocessed arguments is returned through the  objcPtr  and
       remObjv  parameters;  if no return of unprocessed arguments is desired,
       the remObjv parameter should be NULL. If any problems happen, including
       if  the option is selected, an error message is left in the interpreter
       result and TCL_ERROR is returned. Otherwise, the interpreter result  is
       left unchanged and TCL_OK is returned.

       The  collection  of arguments to be parsed is described by the argTable
       parameter. This points to a table of descriptor structures that is ter-
       minated  by an entry with the type field set to TCL_ARGV_END. As conve-
       nience, the following prototypical entries are provided:

       TCL_ARGV_AUTO_HELP
              Enables the argument processor to provide help when  passed  the
              argument

       TCL_ARGV_AUTO_REST
              Instructs  the argument processor that arguments after are to be
              unprocessed.

       TCL_ARGV_TABLE_END
              Marks the end of the table of argument descriptors.

   ARGUMENT DESCRIPTOR ENTRIES
       Each entry of the argument descriptor table must be a structure of type
       Tcl_ArgvInfo. The structure is defined as this:

       typedef struct {
           int type;
           const char *keyStr;
           void *srcPtr;
           void *dstPtr;
           const char *helpStr;
           ClientData clientData; } Tcl_ArgvInfo;

       The  keyStr  field contains the name of the option; by convention, this
       will normally begin with a character.  The  type,  srcPtr,  dstPtr  and
       clientData fields describe the interpretation of the value of the argu-
       ment, as described below. The helpStr field gives  some  text  that  is
       used to provide help to users when they request it.

       As  noted  above, the type field is used to describe the interpretation
       of the argument's value. The following values are acceptable values for
       type:

       TCL_ARGV_CONSTANT
              The argument does not take any following value argument. If this
              argument is present, the int pointed to by the srcPtr  field  is
              copied to the dstPtr field. The clientData field is ignored.

       TCL_ARGV_END
              This value marks the end of all option descriptors in the table.
              All other fields are ignored.

       TCL_ARGV_FLOAT
              This argument takes a following floating point  value  argument.
              The  value  (once parsed by Tcl_GetDoubleFromObj) will be stored
              as a double-precision value in the variable pointed  to  by  the
              dstPtr field. The srcPtr and clientData fields are ignored.

       TCL_ARGV_FUNC
              This argument optionally takes a following value argument; it is
              up to the handler callback function passed in srcPtr to  decide.
              That function will have the following signature:

              typedef int (Tcl_ArgvFuncProc)(
                      ClientData clientData,
                      Tcl_Obj *objPtr,
                      void *dstPtr);

              The  result is a boolean value indicating whether to consume the
              following argument. The clientData is the value from  the  table
              entry,  the  objPtr  is  the value that represents the following
              argument or NULL if there are no following arguments at all, and
              the  dstPtr  argument to the Tcl_ArgvFuncProc is the location to
              write the parsed value to.

       TCL_ARGV_GENFUNC
              This argument takes zero or more following arguments;  the  han-
              dler  callback  function passed in srcPtr returns how many (or a
              negative number to signal an error, in which case it should also
              set  the interpreter result). The function will have the follow-
              ing signature:

              typedef int (Tcl_ArgvGenFuncProc)(
                      ClientData clientData,
                      Tcl_Interp *interp,
                      int objc,
                      Tcl_Obj *const *objv,
                      void *dstPtr);

              The clientData is the value from the table entry, the interp  is
              where to store any error messages, the keyStr is the name of the
              argument, objc and objv describe an array of all  the  remaining
              arguments, and dstPtr argument to the Tcl_ArgvGenFuncProc is the
              location to write the parsed value (or values) to.

       TCL_ARGV_HELP
              This special argument does not take any  following  value  argu-
              ment,  but instead causes Tcl_ParseArgsObjv to generate an error
              message describing the arguments  supported.  All  other  fields
              except the helpStr field are ignored.

       TCL_ARGV_INT
              This  argument  takes  a  following  integer value argument. The
              value (once parsed by Tcl_GetIntFromObj) will be  stored  as  an
              int  in  the variable pointed to by the dstPtr field. The srcPtr
              field is ignored.

       TCL_ARGV_REST
              This special argument does not take any  following  value  argu-
              ment,  but  instead  marks  all  following  arguments to be left
              unprocessed.  The  srcPtr,  dstPtr  and  clientData  fields  are
              ignored.

       TCL_ARGV_STRING
              This argument takes a following string value argument. A pointer
              to the string will be stored at dstPtr; the string  inside  will
              have a lifetime linked to the lifetime of the string representa-
              tion of the argument value that it came from, and so  should  be
              copied  if  it  needs  to be retained. The srcPtr and clientData
              fields are ignored.


SEE ALSO

       Tcl_GetIndexFromObj(3), Tcl_Main(3), Tcl_CreateObjCommand(3)


KEYWORDS

       argument, parse



Tcl                                   8.6                 Tcl_ParseArgsObjv(3)

tcl 8.6.0 - Generated Sun Jan 13 10:35:18 CST 2013
© manpagez.com 2000-2025
Individual documents may contain additional copyright information.