ABCDEFGHIJKLMNOPQRSTUVWXYZ

ExprLong

Tcl_ExprLong(3)             Tcl Library Procedures             Tcl_ExprLong(3)



______________________________________________________________________________

NAME
       Tcl_ExprLong,  Tcl_ExprDouble, Tcl_ExprBoolean, Tcl_ExprString - evalu-
       ate an expression

SYNOPSIS
       #include <tcl.h>

       int
       Tcl_ExprLong(interp, string, longPtr)

       int
       Tcl_ExprDouble(interp, string, doublePtr)

       int
       Tcl_ExprBoolean(interp, string, booleanPtr)

       int
       Tcl_ExprString(interp, string)

ARGUMENTS
       Tcl_Interp   *interp       (in)      Interpreter in  whose  context  to
                                            evaluate string or objPtr.

       char         *string       (in)      Expression  to be evaluated.  Must
                                            be in writable memory (the expres-
                                            sion  parser makes temporary modi-
                                            fications  to  the  string  during
                                            parsing,  which  it  undoes before
                                            returning).

       long         *longPtr      (out)     Pointer to location  in  which  to
                                            store  the  integer  value  of the
                                            expression.

       int          *doublePtr    (out)     Pointer to location  in  which  to
                                            store  the floating-point value of
                                            the expression.

       int          *booleanPtr   (out)     Pointer to location  in  which  to
                                            store the 0/1 boolean value of the
                                            expression.
_________________________________________________________________


DESCRIPTION
       These four procedures all evaluate the expression given by  the  string
       argument  and  return  the  result in one of four different forms.  The
       expression can have any of the forms  accepted  by  the  expr  command.
       Note  that  these  procedures have been largely replaced by the object-
       based   procedures   Tcl_ExprLongObj,   Tcl_ExprDoubleObj,    Tcl_Expr-
       BooleanObj, and Tcl_ExprObj.  Those object-based procedures evaluate an
       expression held in a Tcl object instead of a string.  The object  argu-
       ment  can  retain  an internal representation that is more efficient to
       execute.

       The interp argument refers to  an  interpreter  used  to  evaluate  the
       expression  (e.g.  for variables and nested Tcl commands) and to return
       error information.

       For all of these procedures the return value is a standard Tcl  result:
       TCL_OK  means  the expression was successfully evaluated, and TCL_ERROR
       means that an error  occurred  while  evaluating  the  expression.   If
       TCL_ERROR is returned then the interpreter's result will hold a message
       describing the error.  If an error occurs while executing a Tcl command
       embedded in the expression then that error will be returned.

       If the expression is successfully evaluated, then its value is returned
       in one  of  four  forms,  depending  on  which  procedure  is  invoked.
       Tcl_ExprLong  stores an integer value at *longPtr.  If the expression's
       actual value is a floating-point number, then it  is  truncated  to  an
       integer.  If the expression's actual value is a non-numeric string then
       an error is returned.

       Tcl_ExprDouble stores a floating-point value  at  *doublePtr.   If  the
       expression's  actual  value is an integer, it is converted to floating-
       point.  If the expression's actual value is a non-numeric  string  then
       an error is returned.

       Tcl_ExprBoolean  stores  a  0/1  integer  value at *booleanPtr.  If the
       expression's actual value is an integer or floating-point number,  then
       they  store 0 at *booleanPtr if the value was zero and 1 otherwise.  If
       the expression's actual value is a non-numeric string then it  must  be
       one of the values accepted by Tcl_GetBoolean such as ``yes'' or ``no'',
       or else an error occurs.

       Tcl_ExprString returns the value of the expression as a  string  stored
       in  the  interpreter's  result.  If the expression's actual value is an
       integer then Tcl_ExprString converts it to a string using sprintf  with
       a  ``%d''  converter.   If the expression's actual value is a floating-
       point number, then Tcl_ExprString calls Tcl_PrintDouble to  convert  it
       to a string.


SEE ALSO
       Tcl_ExprLongObj, Tcl_ExprDoubleObj, Tcl_ExprBooleanObj, Tcl_ExprObj


KEYWORDS
       boolean, double, evaluate, expression, integer, object, string



Tcl                                   7.0                      Tcl_ExprLong(3)