Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
Tcl_IntObj(3)		     Tcl Library Procedures		   Tcl_IntObj(3)

________________________________________________________________________________

NAME
     Tcl_NewIntObj,  Tcl_NewLongObj,  Tcl_NewWideIntObj, Tcl_SetIntObj, Tcl_Set-
     LongObj,	 Tcl_SetWideIntObj,    Tcl_GetIntFromObj,    Tcl_GetLongFromObj,
     Tcl_GetWideIntFromObj,  Tcl_NewBignumObj,	Tcl_SetBignumObj, Tcl_GetBignum-
     FromObj, 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_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>

     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
     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_Obj *objPtr (in/out)		   For	 Tcl_SetIntObj,  Tcl_SetLongObj,
					   Tcl_SetWideIntObj, and  Tcl_SetBignu-
					   mObj,  this	points	to  the value in
					   which to  store  an	integral  value.
					   For	  Tcl_GetIntFromObj,	Tcl_Get-
					   LongFromObj,   Tcl_GetWideIntFromObj,
					   Tcl_GetBignumFromObj,  and  Tcl_Take-
					   BignumFromObj,  this  refers  to  the
					   value from which to retrieve an inte-
					   gral value.

     Tcl_Interp *interp (in/out)	   When  non-NULL,  an	error message is
					   left here  when  integral  value  re-
					   trieval 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 in-
					   teger value retrieved from objPtr.

     Tcl_WideInt *widePtr (out) 	   Points to place to store the wide in-
					   teger 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 ini-
					   tialize  a  multi-precision	 integer
					   value.
________________________________________________________________________________

DESCRIPTION
     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 stan-
     dard.  The Tcl_WideInt type is a typedef defined to be whatever signed  in-
     tegral  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 int, long long int, __int64, or	something  else.
     The mp_int type is a multiple-precision integer type defined by the LibTom-
     Math multiple-precision integer library.

     The  Tcl_NewIntObj, Tcl_NewLongObj, Tcl_NewWideIntObj, 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, 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_GetIntFromObj, Tcl_GetLongFromObj, Tcl_GetWideIntFromObj, Tcl_Get-
     BignumFromObj, 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 gov-
     erned 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 ob-
     jPtr  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.

SEE ALSO
     Tcl_NewObj, Tcl_DecrRefCount, Tcl_IncrRefCount, Tcl_GetObjResult

KEYWORDS
     integer, integer value, integer type, internal representation, value, value
     type, string representation

Tcl				       8.5			   Tcl_IntObj(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=Tcl_GetWideIntFromObj.tcl86&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help