## Tcl8.6.17/Tk8.6.17 Documentation > Tcl C API > IntObj

### Tcl/Tk Applications | Tcl Commands | Tk Commands | [incr Tcl] Package Commands | SQLite3 Package Commands | TDBC Package Commands | tdbc::mysql Package Commands | tdbc::odbc Package Commands | tdbc::postgres Package Commands | tdbc::sqlite3 Package Commands | Thread Package Commands | Tcl C API | Tk C API | [incr Tcl] Package C API | TDBC Package C API

  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 — 整数としての Tcl 値 を操作する　 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)
    long longValue (入力in)
    Tcl_WideInt wideValue (入力in)
    Tcl_Obj *objPtr (入出力in/out)
    Tcl_Interp *interp (入出力in/out)
    int *intPtr (出力out)
    long *longPtr (出力out)
    Tcl_WideInt *widePtr (出力out)
    mp_int *bigValue (入出力in/out)
    double doubleValue (入力in)
  説明 DESCRIPTION
  SEE ALSO
  KEYWORDS

### 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 — 整数としての Tcl 値 を操作する　 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)
  Tcl 値を初期化或いは設定するために使われる整数｡　 Integer value used to initialize or set a Tcl value.

long longValue (入力in)
  Tcl 値を初期化或いは設定するために使われる長精度整数｡　 Long integer value used to initialize or set a Tcl value.

Tcl_WideInt wideValue (入力in)
  Tcl 値を初期化或いは設定するために使われる長々精度整数｡　 Wide integer value used to initialize or set a Tcl value.

Tcl_Obj *objPtr (入出力in/out)
  Tcl_SetIntObj と Tcl_SetLongObj と Tcl_SetWideIntObj と Tcl_SetBignumObj については､これはその中に積分値を保存するための値を指す｡ Tcl_GetIntFromObj と Tcl_GetLongFromObj と Tcl_GetWideIntFromObj と Tcl_GetBignumFromObj と Tcl_TakeBignumFromObj については､これはそこから積分値を取り出す値を参照する｡　 For Tcl_SetIntObj, Tcl_SetLongObj, Tcl_SetWideIntObj, 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)
  objPtr から取出した整数値を保存する為の場所を指す｡　 Points to place to store the integer value retrieved from objPtr.

long *longPtr (出力out)
  objPtr から取出した長精度整数値を保存する為の場所を指す｡　 Points to place to store the long integer value retrieved from objPtr.

Tcl_WideInt *widePtr (出力out)
  objPtr から取出した長々精度整数値を保存する為の場所を指す｡　 Points to place to store the wide integer value retrieved from objPtr.

mp_int *bigValue (入出力in/out)
  LibTomMath 外部函数により宣言された多精度整数構造を指す｡ 　　 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.

### 説明 DESCRIPTION

これ等の手続函数は整数値を保有する Tcl 値の作成､修正､読込みに使われる｡ 　　　 These procedures are used to create, modify, and read Tcl values that hold integral values.

C 言語の異なる整数型を収容する為の異なる機能譜が存在し､それにより値が変換される｡ Tcl が値変換機能を提供する C 言語の整数型は､ int, long int, Tcl_WideInt, and mp_intである｡ int と long int は C 言語標準によって与えられる｡ Tcl_WideInt 型は､何処であれ符号付整数型が少なくとも 64-ビット整数範囲(-9223372036854775808 から 9223372036854775807)を含む｡OSと C 言語機械翻訳譜に依存して､実際の型は long int, long long int, __int64, 等､であるかもしれない｡ mp_int 型は､ LibTomMath 多倍精度整数外部函数に定義された多倍精度整数型である｡ 　　 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 int, long long int, __int64, or something else. The mp_int type is a multiple-precision integer type defined by the LibTomMath multiple-precision integer library.

Tcl_NewIntObj と Tcl_NewLongObj と Tcl_NewWideIntObj と Tcl_NewBignumObj 機能譜は引数の整数値に初期化された新しい Tcl 値を作り返す｡返される Tcl 値は非共有である｡ 　　　 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.

Tcl_SetIntObj と Tcl_SetLongObj と Tcl_SetWideIntObj と Tcl_SetBignumObj 機能譜はそれぞれ objPtr によって指された既存の Tcl 値の値を､他の引数によって与えられた整数値に設定する｡ objPtr 引数は非共有 Tcl 値を指さなければならない｡共有された Tcl 値の値を設定する如何なる試みも Tcl の記入遅延の理念に抵触する｡非共有 Tcl 値内のどの既存の文字列表現や内部表現も新しい値の設定の結果として解放される｡ 　　　 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.

Tcl_GetIntFromObj と Tcl_GetLongFromObj と Tcl_GetWideIntFromObj と Tcl_GetBignumFromObj と Tcl_TakeBignumFromObj 機能譜は Tcl 値 objPtr から適切な型の整数値を取出す事を試みる｡もし試みが成功すると TCL_OK が返され､値は呼出し側の提供した記憶域に保存する｡もし objPtr が整数値を保有していないか､値が目的の型の範囲を超えている場合は試みが失敗する｡試みが失敗すると TCL_ERROR が返され､もし解釈実行機能が非-NULL の場合､不都合伝言文が解釈実行機能内に残される｡ objPtr の Tcl_ObjType は同じ機能譜への引続いた呼出しを更に効果的にする為に変わるかもしれない｡他の函数とは異なり､ Tcl_TakeBignumFromObj は Tcl 値 objPtr の内容を多倍精度整数値を取出す処理課程内で空文字列に設定するかもしれない｡ 　　　 The Tcl_GetIntFromObj, Tcl_GetLongFromObj, Tcl_GetWideIntFromObj, 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.

Tcl_GetBignumFromObj と Tcl_TakeBignumFromObj の間の選択は如何に呼出し側が objPtr の使用を継続するかに支配される｡もし objPtr から mp_int 値が取出された後､呼出し側が objPtr の更なる使用をしない場合､ Tcl_TakeBignumFromObj の使用は Tcl に､非共有 objPtr を検出した時は複写でなく効率的な移動を許容する｡もし後に何か呼出し側が objPtr に同じ値の保有を続けるよう要求するなら､ Tcl_GetBignumFromObj が選ばれなければならない｡ 　　　 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.

Tcl_InitBignumFromDouble 機能譜は利便手続函数であり､ doubleValue の整数部分を抜出し､その整数値を mp_int 値 bigValue に保存する｡ 　　 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
Copyright © 1996-1997 Sun Microsystems, Inc.