tcl7.6 C API - ExprLong






NAME

     Tcl_ExprLong,        Tcl_ExprDouble,        Tcl_ExprBoolean,
     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  return-
                                          ing).

     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 initial-
     ized  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 successfully
     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 pro-
     cedure 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 con-
     verted 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