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 or objPtr.

       char         *string       (in)      Expression   to    be
                                            evaluated.   Must  be
                                            in  writable   memory
                                            (the       expression
                                            parser  makes  tempo­
                                            rary 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.
_________________________________________________________________

       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_ExprBooleanObj,
       and  Tcl_ExprStringObj.   Those  object-based   procedures
       evaluate  an  expression held in a Tcl object instead of a
       string.  The object argument can retain an internal repre­
       sentation that is more efficient to execute.

       The interp argument refers to an interpreter used to eval­
       uate 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 describ­
       ing 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  *dou­
       blePtr.   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 float­
       ing-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 expres­
       sion's actual value is an integer then Tcl_ExprString con­
       verts  it  to  a  string  using sprintf with a ``%d'' con­
       verter.  If the expression's actual value is  a  floating-
       point number, then Tcl_ExprString calls Tcl_PrintDouble to
       Tcl_ExprLongObj,  Tcl_ExprDoubleObj,   Tcl_ExprBooleanObj,
       Tcl_ExprObj



KEYWORDS

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