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(3), Tcl_IsShared(3), Tcl_GetBoolean(3)
KEYWORDS
boolean, value
Tcl 8.5 Tcl_BooleanObj(3)
tcl 8.6.13 - Generated Sun Jan 8 15:35:05 CST 2023
