Provided by: tcl8.5-doc_8.5.19-1_all bug

NAME

       Tcl_NewIntObj,   Tcl_NewLongObj,  Tcl_NewWideIntObj,  Tcl_SetIntObj,  Tcl_SetLongObj,  Tcl_SetWideIntObj,
       Tcl_GetIntFromObj,   Tcl_GetLongFromObj,   Tcl_GetWideIntFromObj,   Tcl_NewBignumObj,   Tcl_SetBignumObj,
       Tcl_GetBignumFromObj, Tcl_TakeBignumFromObj - manipulate Tcl objects as integer values

SYNOPSIS

       #include <tcl.h>

       Tcl_Obj *
       Tcl_NewIntObj(intValue)

       Tcl_Obj *
       Tcl_NewLongObj(longValue)

       Tcl_Obj *
       Tcl_NewWideIntObj(wideValue)

       Tcl_SetIntObj(objPtr, intValue)

       Tcl_SetLongObj(objPtr, longValue)

       Tcl_SetWideIntObj(objPtr, wideValue)

       int
       Tcl_GetIntFromObj(interp, objPtr, intPtr)

       int
       Tcl_GetLongFromObj(interp, objPtr, longPtr)

       int
       Tcl_GetWideIntFromObj(interp, objPtr, widePtr)

       #include <tclTomMath.h>                                                                                   2

       Tcl_Obj *                                                                                                 2
       Tcl_NewBignumObj(bigValue)                                                                                2

       Tcl_SetBignumObj(objPtr, bigValue)                                                                        2

       int                                                                                                       2
       Tcl_GetBignumFromObj(interp, objPtr, bigValue)                                                            2

       int                                                                                                       2
       Tcl_TakeBignumFromObj(interp, objPtr, bigValue)                                                           2

       int                                                                                                       2
       Tcl_InitBignumFromDouble(interp, doubleValue, bigValue)                                                   2

ARGUMENTS

       int intValue (in)                     Integer value used to initialize or set a Tcl object.

       long longValue (in)                   Long integer value used to initialize or set a Tcl object.

       Tcl_WideInt wideValue (in)            Wide integer value used to initialize or set a Tcl object.

       Tcl_Obj *objPtr (in/out)              For    Tcl_SetIntObj,    Tcl_SetLongObj,   Tcl_SetWideIntObj,   and
                                             Tcl_SetBignumObj, this points to the object in which  to  store  an
                                             integral   value.    For   Tcl_GetIntFromObj,   Tcl_GetLongFromObj,
                                             Tcl_GetWideIntFromObj,          Tcl_GetBignumFromObj,           and
                                             Tcl_TakeBignumFromObj,  this  refers  to  the  object 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_WideInt *widePtr (out)            Points to place to store the  wide  integer  value  retrieved  from
                                             objPtr.

       mp_int *bigValue (in/out)             Points  to  a  multi-precision  integer  structure  declared by the 2
                                             LibTomMath library.

       double doubleValue (in)               Double value from which the integer part is determined and used  to 2
                                             initialize a multi-precision integer value.
________________________________________________________________________________________________________________

DESCRIPTION

       These procedures are used to create, modify, and read Tcl objects that hold integral values.              2

       The  different  routines  exist  to  accommodate different integral types in C with which values might be 2
       exchanged.  The C integral types for which Tcl provides  value  exchange  routines  are  int,  long  int, 2
       Tcl_WideInt,  and  mp_int.   The  int  and  long  int types are provided by the C language standard.  The 2
       Tcl_WideInt type is a typedef defined to be whatever signed integral type  covers  at  least  the  64-bit 2
       integer  range  (-9223372036854775808  to  9223372036854775807).   Depending  on  the  platform and the C 2
       compiler, the actual type might be long int, long long int, int64, or something else.  The mp_int type is 2
       a multiple-precision integer type defined by the LibTomMath multiple-precision integer library.           2

       The Tcl_NewIntObj, Tcl_NewLongObj, Tcl_NewWideIntObj,  and  Tcl_NewBignumObj  routines  each  create  and 2
       return  a  new  Tcl object initialized to the integral value of the argument.  The returned Tcl object is 2
       unshared.                                                                                                 2

       The Tcl_SetIntObj, Tcl_SetLongObj, Tcl_SetWideIntObj, and Tcl_SetBignumObj routines each set the value of 2
       an existing Tcl object pointed to by objPtr to the integral value provided by the  other  argument.   The 2
       objPtr  argument  must  point  to  an  unshared Tcl object.  Any attempt to set the value of a shared Tcl 2
       object  violates  Tcl's  copy-on-write  policy.   Any  existing   string   representation   or   internal 2
       representation in the unshared Tcl object will be freed as a consequence of setting the new value.        2

       The    Tcl_GetIntFromObj,    Tcl_GetLongFromObj,    Tcl_GetWideIntFromObj,    Tcl_GetBignumFromObj,   and 2
       Tcl_TakeBignumFromObj routines attempt to retrieve an integral value of the appropriate type from the Tcl 2
       object objPtr.  If the attempt succeeds, then TCL_OK is returned, and the value is written to the storage 2
       provided by the caller.  The attempt might fail if objPtr does not hold an  integral  value,  or  if  the 2
       value  exceeds  the  range  of the target type.  If the attempt fails, then TCL_ERROR is returned, and if 2
       interp is non-NULL, an error message is left in interp.  The Tcl_ObjType of objPtr may be changed to make 2
       subsequent calls to the same routine more efficient. Unlike the  other  functions,  Tcl_TakeBignumFromObj 2
       may  set  the  content  of  the  Tcl  object  objPtr  to an empty string in the process of retrieving the 2
       multiple-precision integer value.                                                                         2

       The choice between Tcl_GetBignumFromObj and Tcl_TakeBignumFromObj is governed  by  how  the  caller  will 2
       continue to use objPtr.  If after the mp_int value is retrieved from objPtr, the caller will make no more 2
       use of objPtr, then using Tcl_TakeBignumFromObj permits Tcl to detect when an unshared objPtr permits the 2
       value  to  be  moved  instead of copied, which should be more efficient.  If anything later in the caller 2
       requires objPtr to continue to hold the same value, then Tcl_GetBignumFromObj must be chosen.             2

       The Tcl_InitBignumFromDouble routine is a utility procedure that extracts the integer part of doubleValue 2
       and stores that integer value in the mp_int value bigValue.

SEE ALSO

       Tcl_NewObj, Tcl_DecrRefCount, Tcl_IncrRefCount, Tcl_GetObjResult

KEYWORDS

       integer,  integer  object,  integer  type,  internal  representation,   object,   object   type,   string
       representation

Tcl                                                    8.5                                      Tcl_IntObj(3tcl)