Tcl_ExprLong (3)
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 *booleanPtr
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 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 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 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.
interp->result is assumed to be initialized
in the standard fashion when they 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 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 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.
SEE ALSO
Tcl_ExprLongObj Tcl_ExprDoubleObj Tcl_ExprBooleanObj Tcl_ExprObj
KEYWORDS
boolean, double, evaluate, expression, integer, object, string
'\"
'\" Copyright (c) 1995-1996 Sun Microsystems, Inc.
'\"
'\" See the file "license.terms" for information on usage and redistribution
'\" of this file, and for a DISCLAIMER OF ALL WARRANTIES.
'\"
'\" SCCS: @(#) Notifier.3 1.11 96/06/05 18:00:17
'\"
'\" The definitions below are for supplemental macros used in Tcl/Tk
'\" manual entries.
'\"
'\" .AP type name in/out ?indent?
'\" Start paragraph describing an argument to a library procedure.
'\" type is type of argument (int, etc.), in/out is either "in", "out",
'\" or "in/out" to describe whether procedure reads or modifies arg,
'\" and indent is equivalent to second arg of .IP (shouldn't ever be
'\" needed; use .AS below instead)
'\"
'\" .AS ?type? ?name?
'\" Give maximum sizes of arguments for setting tab stops. Type and
'\" name are examples of largest possible arguments that will be passed
'\" to .AP later. If args are omitted, default tab stops are used.
'\"
'\" .BS
'\" Start box enclosure. From here until next .BE, everything will be
'\" enclosed in one large box.
'\"
'\" .BE
'\" End of box enclosure.
'\"
'\" .CS
'\" Begin code excerpt.
'\"
'\" .CE
'\" End code excerpt.
'\"
'\" .VS ?br?
'\" Begin vertical sidebar, for use in marking newly-changed parts
'\" of man pages. If an argument is present, then a line break is
'\" forced before starting the sidebar.
'\"
'\" .VE
'\" End of vertical sidebar.
'\"
'\" .DS
'\" Begin an indented unfilled display.
'\"
'\" .DE
'\" End of indented unfilled display.
'\"
'\" .SO
'\" Start of list of standard options for a Tk widget. The
'\" options follow on successive lines, in four columns separated
'\" by tabs.
'\"
'\" .SE
'\" End of list of standard options for a Tk widget.
'\"
'\" .OP cmdName dbName dbClass
'\" Start of description of a specific option. cmdName gives the
'\" option's name as specified in the class command, dbName gives
'\" the option's name in the option database, and dbClass gives
'\" the option's class in the option database.
'\"
'\" .UL arg1 arg2
'\" Print arg1 underlined, then print arg2 normally.
'\"
'\" SCCS: @(#) man.macros 1.8 96/02/15 20:02:24
'\"
'\" # Set up traps and other miscellaneous stuff for Tcl/Tk man pages.
t .wh -1.3i ^B
^l \n(.l
b
'\" # Start an argument description
AP
!"\\$4"" .TP \\$4
\{\
!"\\$2"" .TP \\n()Cu
.TP 15
|