- NAME
- Tcl_NewIntObj, Tcl_NewLongObj, Tcl_NewWideIntObj, Tcl_NewWideUIntObj, Tcl_SetIntObj, Tcl_SetLongObj, Tcl_SetWideIntObj, Tcl_SetWideUIntObj, Tcl_GetIntFromObj, Tcl_GetIntForIndex, Tcl_GetLongFromObj, Tcl_GetWideIntFromObj, Tcl_GetWideUIntFromObj, Tcl_NewBignumObj, Tcl_SetBignumObj, Tcl_GetBignumFromObj, Tcl_TakeBignumFromObj — manipulate Tcl values as integers
- SYNOPSIS
- #include <tcl.h>
- Tcl_Obj *
- Tcl_NewIntObj(intValue)
- Tcl_Obj *
- Tcl_NewLongObj(longValue)
- Tcl_Obj *
- Tcl_NewWideIntObj(wideValue)
- Tcl_Obj *
- Tcl_NewWideUIntObj(uwideValue)
- Tcl_SetIntObj(objPtr, intValue)
- Tcl_SetLongObj(objPtr, longValue)
- Tcl_SetWideIntObj(objPtr, wideValue)
- Tcl_SetWideUIntObj(objPtr, uwideValue)
- int
- Tcl_GetIntFromObj(interp, objPtr, intPtr)
- int
- Tcl_GetIntForIndex(interp, objPtr, endValue, indexPtr)
- int
- Tcl_GetLongFromObj(interp, objPtr, longPtr)
- int
- Tcl_GetWideIntFromObj(interp, objPtr, widePtr)
- int
- Tcl_GetWideUIntFromObj(interp, objPtr, uwidePtr)
- int
- Tcl_GetSizeIntFromObj(interp, objPtr, sizePtr)
- #include <tclTomMath.h>
- Tcl_Obj *
- Tcl_NewBignumObj(bigValue)
- Tcl_SetBignumObj(objPtr, bigValue)
- int
- Tcl_GetBignumFromObj(interp, objPtr, bigValue)
- int
- Tcl_TakeBignumFromObj(interp, objPtr, bigValue)
- int
- Tcl_InitBignumFromDouble(interp, doubleValue, bigValue)
- ARGUMENTS
- DESCRIPTION
- REFERENCE COUNT MANAGEMENT
- SEE ALSO
- KEYWORDS
Tcl_NewIntObj, Tcl_NewLongObj, Tcl_NewWideIntObj, Tcl_NewWideUIntObj, Tcl_SetIntObj, Tcl_SetLongObj, Tcl_SetWideIntObj, Tcl_SetWideUIntObj, Tcl_GetIntFromObj, Tcl_GetIntForIndex, Tcl_GetLongFromObj, Tcl_GetWideIntFromObj, Tcl_GetWideUIntFromObj, Tcl_NewBignumObj, Tcl_SetBignumObj, Tcl_GetBignumFromObj, Tcl_TakeBignumFromObj — manipulate Tcl values as integers
#include <tcl.h>
Tcl_Obj *
Tcl_NewIntObj(
intValue)
Tcl_Obj *
Tcl_NewLongObj(
longValue)
Tcl_Obj *
Tcl_NewWideIntObj(
wideValue)
Tcl_Obj *
Tcl_NewWideUIntObj(
uwideValue)
Tcl_SetIntObj(
objPtr, intValue)
Tcl_SetLongObj(
objPtr, longValue)
Tcl_SetWideIntObj(
objPtr, wideValue)
Tcl_SetWideUIntObj(
objPtr, uwideValue)
int
Tcl_GetIntFromObj(
interp, objPtr, intPtr)
int
Tcl_GetIntForIndex(
interp, objPtr, endValue, indexPtr)
int
Tcl_GetLongFromObj(
interp, objPtr, longPtr)
int
Tcl_GetWideIntFromObj(
interp, objPtr, widePtr)
int
Tcl_GetWideUIntFromObj(
interp, objPtr, uwidePtr)
int
Tcl_GetSizeIntFromObj(
interp, objPtr, sizePtr)
#include <tclTomMath.h>
Tcl_Obj *
Tcl_NewBignumObj(
bigValue)
Tcl_SetBignumObj(
objPtr, bigValue)
int
Tcl_GetBignumFromObj(
interp, objPtr, bigValue)
int
Tcl_TakeBignumFromObj(
interp, objPtr, bigValue)
int
Tcl_InitBignumFromDouble(
interp, doubleValue, bigValue)
- Tcl_Size endValue (in)
-
Tcl_GetIntForIndex will return this when the input value is "end".
- int intValue (in)
-
Integer value used to initialize or set a Tcl value.
- long longValue (in)
-
Long integer value used to initialize or set a Tcl value.
- Tcl_WideInt wideValue (in)
-
Wide integer value used to initialize or set a Tcl value.
- Tcl_WideUInt uwideValue (in)
-
Unsigned wide integer value used to initialize or set a Tcl value.
- Tcl_Obj *objPtr (in/out)
-
For Tcl_SetIntObj, Tcl_SetLongObj, Tcl_SetWideIntObj,
Tcl_SetWideUIntObj,
and Tcl_SetBignumObj, this points to the value in which to store an
integral value. For Tcl_GetIntFromObj, Tcl_GetLongFromObj,
Tcl_GetWideIntFromObj, Tcl_GetBignumFromObj, and
Tcl_TakeBignumFromObj, this refers to the value from which
to retrieve an integral value.
- Tcl_Interp *interp (in/out)
-
When non-NULL, an error message is left here when integral value
retrieval fails.
- int *intPtr (out)
-
Points to place to store the integer value retrieved from objPtr.
- long *longPtr (out)
-
Points to place to store the long integer value retrieved from objPtr.
- Tcl_Size *indexPtr (out)
-
Points to place to store the Tcl_Size value retrieved from objPtr.
- Tcl_WideInt *widePtr (out)
-
Points to place to store the wide integer value retrieved from objPtr.
- Tcl_WideUInt *uwidePtr (out)
-
Points to place to store the unsigned wide integer value retrieved from objPtr.
- Tcl_Size *sizePtr (out)
-
Points to place to store the Tcl_Size integer value retrieved from objPtr.
- mp_int *bigValue (in/out)
-
Points to a multi-precision integer structure declared by the LibTomMath
library.
- double doubleValue (in)
-
Double value from which the integer part is determined and
used to initialize a multi-precision integer value.
These procedures are used to create, modify, and read Tcl values
that hold integral values.
The different routines exist to accommodate different integral types in C
with which values might be exchanged. The C integral types for which Tcl
provides value exchange routines are int, long int,
Tcl_WideInt, and mp_int. The int and long int types
are provided by the C language standard. The Tcl_WideInt type is a
typedef defined to be whatever signed integral type covers at least the
64-bit integer range (-9223372036854775808 to 9223372036854775807). Depending
on the platform and the C compiler, the actual type might be
long long int, or something else.
The mp_int type is a multiple-precision integer type defined
by the LibTomMath multiple-precision integer library.
The Tcl_NewIntObj, Tcl_NewLongObj, Tcl_NewWideIntObj,
Tcl_NewWideUIntObj, and Tcl_NewBignumObj
routines each create and return a new Tcl value initialized to the
integral value of the argument. The returned Tcl value is unshared.
The Tcl_SetIntObj, Tcl_SetLongObj, Tcl_SetWideIntObj,
Tcl_SetWideUIntObj, and Tcl_SetBignumObj
routines each set the value of an existing Tcl value pointed to by objPtr
to the integral value provided by the other argument. The objPtr
argument must point to an unshared Tcl value. Any attempt to set the
value of a shared Tcl value violates Tcl's copy-on-write policy. Any
existing string representation or internal representation in the unshared
Tcl value will be freed as a consequence of setting the new value.
The Tcl_GetIntForIndex routine attempts to retrieve an index
value from the Tcl value objPtr. If the attempt succeeds,
then TCL_OK is returned, and the value is written to the
storage provided by the caller. The attempt might fail if
objPtr does not hold an index value. If the attempt fails,
then TCL_ERROR is returned, and if interp is non-NULL,
an error message is left in interp. The Tcl_ObjType
of objPtr may be changed to make subsequent calls to the
same routine more efficient.
The Tcl_GetIntFromObj, Tcl_GetLongFromObj,
Tcl_GetWideIntFromObj, Tcl_GetSizeIntFromObj,
Tcl_GetBignumFromObj, and
Tcl_TakeBignumFromObj routines attempt to retrieve an integral
value of the appropriate type from the Tcl value objPtr. If the
attempt succeeds, then TCL_OK is returned, and the value is
written to the storage provided by the caller. The attempt might
fail if objPtr does not hold an integral value, or if the
value exceeds the range of the target type. If the attempt fails,
then TCL_ERROR is returned, and if interp is non-NULL,
an error message is left in interp. The Tcl_ObjType
of objPtr may be changed to make subsequent calls to the
same routine more efficient. Unlike the other functions,
Tcl_TakeBignumFromObj may set the content of the Tcl value
objPtr to an empty string in the process of retrieving the
multiple-precision integer value.
The choice between Tcl_GetBignumFromObj and
Tcl_TakeBignumFromObj is governed by how the caller will
continue to use objPtr. If after the mp_int value
is retrieved from objPtr, the caller will make no more
use of objPtr, then using Tcl_TakeBignumFromObj
permits Tcl to detect when an unshared objPtr permits the
value to be moved instead of copied, which should be more efficient.
If anything later in the caller requires
objPtr to continue to hold the same value, then
Tcl_GetBignumFromObj must be chosen.
The Tcl_InitBignumFromDouble routine is a utility procedure
that extracts the integer part of doubleValue and stores that
integer value in the mp_int value bigValue.
Tcl_NewIntObj,
Tcl_NewLongObj,
Tcl_NewWideIntObj, and
Tcl_NewBignumObj always return a zero-reference object, much like
Tcl_NewObj.
Tcl_SetIntObj, Tcl_SetLongObj, Tcl_SetWideIntObj, and
Tcl_SetBignumObj do not modify the reference count of their objPtr
arguments, but do require that the object be unshared.
Tcl_GetIntFromObj, Tcl_GetIntForIndex, Tcl_GetLongFromObj,
Tcl_GetWideIntFromObj, Tcl_GetBignumFromObj, and
Tcl_TakeBignumFromObj do not modify the reference count of their
objPtr arguments; they only read. Note however that this function may
set the interpreter result; if that is the only place that is holding a
reference to the object, it will be deleted. Also note that if
Tcl_TakeBignumFromObj is given an unshared value, the value of that
object may be modified; it is intended to be used when the value is
“consumed”
by the operation at this point.
Tcl_NewObj,
Tcl_DecrRefCount,
Tcl_IncrRefCount,
Tcl_GetObjResult
integer,
integer value,
integer type,
internal representation,
value,
value type,
string representation
Copyright © 1996-1997 Sun Microsystems, Inc.