ExprLong


     _________________________________________________________________

     NAME
          Tcl_ExprLong, Tcl_ExprDouble, Tcl_ExprBool, Tcl_ExprString -
          evaluate 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.

          char         *string       (in)      Expression    to     be
                                               evaluated.   Must be in
                                               writable  memory   (the
                                               expression parser makes
                                               temporary modifications
                                               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 an expression,  returning
          the  result  in one of four different forms.  The expression
          is given by the string argument, and it can have any of  the
          forms  accepted  by  the  expr command.  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.   Interp->result  is   assumed   to   be
          initialized   in  the  standard  fashion  when  any  of  the
          procedures are invoked.

          For all of these procedures the return value is  a  standard
          Tcl  result:   TCL_OK  means  the expression was succesfully
          evaluated, and TCL_ERROR means that an error occurred  while
          evaluating  the  expression.   If TCL_ERROR is returned then
          interp->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 Tcl_ExprBoolean stores 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 interp->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.


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