[25] | 1 | '\" |
---|
| 2 | '\" Copyright (c) 1996-1997 Sun Microsystems, Inc. |
---|
| 3 | '\" |
---|
| 4 | '\" See the file "license.terms" for information on usage and redistribution |
---|
| 5 | '\" of this file, and for a DISCLAIMER OF ALL WARRANTIES. |
---|
| 6 | '\" |
---|
| 7 | '\" RCS: @(#) $Id: IntObj.3,v 1.14 2007/12/13 15:22:31 dgp Exp $ |
---|
| 8 | '\" |
---|
| 9 | .so man.macros |
---|
| 10 | .TH Tcl_IntObj 3 8.5 Tcl "Tcl Library Procedures" |
---|
| 11 | .BS |
---|
| 12 | .SH NAME |
---|
| 13 | 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 |
---|
| 14 | .SH SYNOPSIS |
---|
| 15 | .nf |
---|
| 16 | \fB#include <tcl.h>\fR |
---|
| 17 | .sp |
---|
| 18 | Tcl_Obj * |
---|
| 19 | \fBTcl_NewIntObj\fR(\fIintValue\fR) |
---|
| 20 | .sp |
---|
| 21 | Tcl_Obj * |
---|
| 22 | \fBTcl_NewLongObj\fR(\fIlongValue\fR) |
---|
| 23 | .sp |
---|
| 24 | Tcl_Obj * |
---|
| 25 | \fBTcl_NewWideIntObj\fR(\fIwideValue\fR) |
---|
| 26 | .sp |
---|
| 27 | \fBTcl_SetIntObj\fR(\fIobjPtr, intValue\fR) |
---|
| 28 | .sp |
---|
| 29 | \fBTcl_SetLongObj\fR(\fIobjPtr, longValue\fR) |
---|
| 30 | .sp |
---|
| 31 | \fBTcl_SetWideIntObj\fR(\fIobjPtr, wideValue\fR) |
---|
| 32 | .sp |
---|
| 33 | int |
---|
| 34 | \fBTcl_GetIntFromObj\fR(\fIinterp, objPtr, intPtr\fR) |
---|
| 35 | .sp |
---|
| 36 | int |
---|
| 37 | \fBTcl_GetLongFromObj\fR(\fIinterp, objPtr, longPtr\fR) |
---|
| 38 | .sp |
---|
| 39 | int |
---|
| 40 | \fBTcl_GetWideIntFromObj\fR(\fIinterp, objPtr, widePtr\fR) |
---|
| 41 | .sp |
---|
| 42 | .sp |
---|
| 43 | .VS 8.5 |
---|
| 44 | \fB#include <tclTomMath.h>\fR |
---|
| 45 | .sp |
---|
| 46 | Tcl_Obj * |
---|
| 47 | \fBTcl_NewBignumObj\fR(\fIbigValue\fR) |
---|
| 48 | .sp |
---|
| 49 | \fBTcl_SetBignumObj\fR(\fIobjPtr, bigValue\fR) |
---|
| 50 | .sp |
---|
| 51 | int |
---|
| 52 | \fBTcl_GetBignumFromObj\fR(\fIinterp, objPtr, bigValue\fR) |
---|
| 53 | .sp |
---|
| 54 | int |
---|
| 55 | \fBTcl_TakeBignumFromObj\fR(\fIinterp, objPtr, bigValue\fR) |
---|
| 56 | .sp |
---|
| 57 | int |
---|
| 58 | \fBTcl_InitBignumFromDouble\fR(\fIinterp, doubleValue, bigValue\fR) |
---|
| 59 | .VE 8.5 |
---|
| 60 | .SH ARGUMENTS |
---|
| 61 | .AS Tcl_WideInt doubleValue in/out |
---|
| 62 | .AP int intValue in |
---|
| 63 | Integer value used to initialize or set a Tcl object. |
---|
| 64 | .AP long longValue in |
---|
| 65 | Long integer value used to initialize or set a Tcl object. |
---|
| 66 | .AP Tcl_WideInt wideValue in |
---|
| 67 | Wide integer value used to initialize or set a Tcl object. |
---|
| 68 | .AP Tcl_Obj *objPtr in/out |
---|
| 69 | For \fBTcl_SetIntObj\fR, \fBTcl_SetLongObj\fR, \fBTcl_SetWideIntObj\fR, |
---|
| 70 | and \fBTcl_SetBignumObj\fR, this points to the object in which to store an |
---|
| 71 | integral value. For \fBTcl_GetIntFromObj\fR, \fBTcl_GetLongFromObj\fR, |
---|
| 72 | \fBTcl_GetWideIntFromObj\fR, \fBTcl_GetBignumFromObj\fR, and |
---|
| 73 | \fBTcl_TakeBignumFromObj\fR, this refers to the object from which |
---|
| 74 | to retrieve an integral value. |
---|
| 75 | .AP Tcl_Interp *interp in/out |
---|
| 76 | When non-NULL, an error message is left here when integral value |
---|
| 77 | retrieval fails. |
---|
| 78 | .AP int *intPtr out |
---|
| 79 | Points to place to store the integer value retrieved from \fIobjPtr\fR. |
---|
| 80 | .AP long *longPtr out |
---|
| 81 | Points to place to store the long integer value retrieved from \fIobjPtr\fR. |
---|
| 82 | .AP Tcl_WideInt *widePtr out |
---|
| 83 | Points to place to store the wide integer value retrieved from \fIobjPtr\fR. |
---|
| 84 | .AP mp_int *bigValue in/out |
---|
| 85 | .VS 8.5 |
---|
| 86 | Points to a multi-precision integer structure declared by the LibTomMath |
---|
| 87 | library. |
---|
| 88 | .VE 8.5 |
---|
| 89 | .AP double doubleValue in |
---|
| 90 | .VS 8.5 |
---|
| 91 | Double value from which the integer part is determined and |
---|
| 92 | used to initialize a multi-precision integer value. |
---|
| 93 | .VE 8.5 |
---|
| 94 | .BE |
---|
| 95 | |
---|
| 96 | .SH DESCRIPTION |
---|
| 97 | .PP |
---|
| 98 | .VS 8.5 |
---|
| 99 | These procedures are used to create, modify, and read Tcl objects |
---|
| 100 | that hold integral values. |
---|
| 101 | .PP |
---|
| 102 | The different routines exist to accomodate different integral types in C |
---|
| 103 | with which values might be exchanged. The C integral types for which Tcl |
---|
| 104 | provides value exchange routines are \fBint\fR, \fBlong int\fR, |
---|
| 105 | \fBTcl_WideInt\fR, and \fBmp_int\fR. The \fBint\fR and \fBlong int\fR types |
---|
| 106 | are provided by the C language standard. The \fBTcl_WideInt\fR type is a |
---|
| 107 | typedef defined to be whatever signed integral type covers at least the |
---|
| 108 | 64-bit integer range (-9223372036854775808 to 9223372036854775807). Depending |
---|
| 109 | on the platform and the C compiler, the actual type might be |
---|
| 110 | \fBlong int\fR, \fBlong long int\fR, \fBint64\fR, or something else. |
---|
| 111 | The \fBmp_int\fR type is a multiple-precision integer type defined |
---|
| 112 | by the LibTomMath multiple-precision integer library. |
---|
| 113 | .PP |
---|
| 114 | The \fBTcl_NewIntObj\fR, \fBTcl_NewLongObj\fR, \fBTcl_NewWideIntObj\fR, |
---|
| 115 | and \fBTcl_NewBignumObj\fR routines each create and return a new |
---|
| 116 | Tcl object initialized to the integral value of the argument. The |
---|
| 117 | returned Tcl object is unshared. |
---|
| 118 | .PP |
---|
| 119 | The \fBTcl_SetIntObj\fR, \fBTcl_SetLongObj\fR, \fBTcl_SetWideIntObj\fR, |
---|
| 120 | and \fBTcl_SetBignumObj\fR routines each set the value of an existing |
---|
| 121 | Tcl object pointed to by \fIobjPtr\fR to the integral value provided |
---|
| 122 | by the other argument. The \fIobjPtr\fR argument must point to an |
---|
| 123 | unshared Tcl object. Any attempt to set the value of a shared Tcl object |
---|
| 124 | violates Tcl's copy-on-write policy. Any existing string representation |
---|
| 125 | or internal representation in the unshared Tcl object will be freed |
---|
| 126 | as a consequence of setting the new value. |
---|
| 127 | .PP |
---|
| 128 | The \fBTcl_GetIntFromObj\fR, \fBTcl_GetLongFromObj\fR, |
---|
| 129 | \fBTcl_GetWideIntFromObj\fR, \fBTcl_GetBignumFromObj\fR, and |
---|
| 130 | \fBTcl_TakeBignumFromObj\fR routines attempt to retrieve an integral |
---|
| 131 | value of the appropriate type from the Tcl object \fIobjPtr\fR. If the |
---|
| 132 | attempt succeeds, then \fBTCL_OK\fR is returned, and the value is |
---|
| 133 | written to the storage provided by the caller. The attempt might |
---|
| 134 | fail if \fIobjPtr\fR does not hold an integral value, or if the |
---|
| 135 | value exceeds the range of the target type. If the attempt fails, |
---|
| 136 | then \fBTCL_ERROR\fR is returned, and if \fIinterp\fR is non-NULL, |
---|
| 137 | an error message is left in \fIinterp\fR. The \fBTcl_ObjType\fR |
---|
| 138 | of \fIobjPtr\fR may be changed to make subsequent calls to the |
---|
| 139 | same routine more efficient. Unlike the other functions, |
---|
| 140 | \fBTcl_TakeGetBignumFromObj\fR may set the content of the Tcl object |
---|
| 141 | \fIobjPtr\fR to an empty string in the process of retrieving the |
---|
| 142 | multiple-precision integer value. |
---|
| 143 | .PP |
---|
| 144 | The choice between \fBTcl_GetBignumFromObj\fR and |
---|
| 145 | \fBTcl_TakeGetBignumFromObj\fR is governed by how the caller will |
---|
| 146 | continue to use \fIobjPtr\fR. If after the \fBmp_int\fR value |
---|
| 147 | is retrieved from \fIobjPtr\fR, the caller will make no more |
---|
| 148 | use of \fIobjPtr\fR, then using \fBTcl_TakeGetBignumFromObj\fR |
---|
| 149 | permits Tcl to detect when an unshared \fIobjPtr\fR permits the |
---|
| 150 | value to be moved instead of copied, which should be more efficient. |
---|
| 151 | If anything later in the caller requires |
---|
| 152 | \fIobjPtr\fR to continue to hold the same value, then |
---|
| 153 | \fBTcl_GetBignumFromObj\fR must be chosen. |
---|
| 154 | .PP |
---|
| 155 | The \fBTcl_InitBignumFromDouble\fR routine is a utility procedure |
---|
| 156 | that extracts the integer part of \fIdoubleValue\fR and stores that |
---|
| 157 | integer value in the \fBmp_int\fR value \fIbigValue\fR. |
---|
| 158 | .VE 8.5 |
---|
| 159 | .SH "SEE ALSO" |
---|
| 160 | Tcl_NewObj, Tcl_DecrRefCount, Tcl_IncrRefCount, Tcl_GetObjResult |
---|
| 161 | .SH KEYWORDS |
---|
| 162 | integer, integer object, integer type, internal representation, object, object type, string representation |
---|