Tcl_BooleanObj(3) Tcl Library Procedures Tcl_BooleanObj(3)
____________________________________________________________________________
NAME
Tcl_NewBooleanObj, Tcl_SetBooleanObj, Tcl_GetBooleanFromObj -
store/retrieve boolean value in a Tcl_Obj
SYNOPSIS
#include <tcl.h> Tcl_Obj *
Tcl_NewBooleanObj(
intValue)
Tcl_SetBooleanObj(
objPtr, intValue)
int
Tcl_GetBooleanFromObj(
interp, objPtr, intPtr)
ARGUMENTS
int
intValue (in) Integer value to be stored as a
boolean value in a Tcl_Obj.
Tcl_Obj
*objPtr (in/out) Points to the Tcl_Obj in which to
store, or from which to retrieve a
boolean value.
Tcl_Interp
*interp (in/out) If a boolean value cannot be
retrieved, an error message is left
in the interpreter's result value
unless
interp is NULL.
int
*intPtr (out) Points to place where
Tcl_GetBooleanFromObj stores the
boolean value (0 or 1) obtained
from
objPtr.
____________________________________________________________________________
DESCRIPTION
These procedures are used to pass boolean values to and from Tcl as
Tcl_Obj's. When storing a boolean value into a Tcl_Obj, any non-zero
integer value in
intValue is taken to be the boolean value
1, and the
integer value
0 is taken to be the boolean value
0.
Tcl_NewBooleanObj creates a new Tcl_Obj, stores the boolean value
intValue in it, and returns a pointer to the new Tcl_Obj. The new
Tcl_Obj has reference count of zero.
Tcl_SetBooleanObj accepts
objPtr, a pointer to an existing Tcl_Obj,
and stores in the Tcl_Obj
*objPtr the boolean value
intValue. This
is a write operation on
*objPtr, so
objPtr must be unshared.
Attempts to write to a shared Tcl_Obj will panic. A successful write
of
intValue into
*objPtr implies the freeing of any former value
stored in
*objPtr.
Tcl_GetBooleanFromObj attempts to retrieve a boolean value from the
value stored in
*objPtr. If
objPtr holds a string value recognized
by
Tcl_GetBoolean, then the recognized boolean value is written at
the address given by
intPtr. If
objPtr holds any value recognized as
a number by Tcl, then if that value is zero a 0 is written at the
address given by
intPtr and if that value is non-zero a 1 is written
at the address given by
intPtr. In all cases where a value is
written at the address given by
intPtr,
Tcl_GetBooleanFromObj returns
TCL_OK. If the value of
objPtr does not meet any of the conditions
above, then
TCL_ERROR is returned and an error message is left in the
interpreter's result unless
interp is NULL.
Tcl_GetBooleanFromObj may also make changes to the internal fields of
*objPtr so that
future calls to
Tcl_GetBooleanFromObj on the same
objPtr can be
performed more efficiently.
Note that the routines
Tcl_GetBooleanFromObj and
Tcl_GetBoolean are
not functional equivalents. The set of values for which
Tcl_GetBooleanFromObj will return
TCL_OK is strictly larger than the
set of values for which
Tcl_GetBoolean will do the same. For
example, the value "5" passed to
Tcl_GetBooleanFromObj will lead to a
TCL_OK return (and the boolean value 1), while the same value passed
to
Tcl_GetBoolean will lead to a
TCL_ERROR return.
SEE ALSO
Tcl_NewObj, Tcl_IsShared, Tcl_GetBoolean
KEYWORDS
boolean, value
Tcl 8.5 Tcl_BooleanObj(3)