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

### 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_DStringInit, Tcl_DStringAppend, Tcl_DStringAppendElement, Tcl_DStringStartSublist, Tcl_DStringEndSublist, Tcl_DStringLength, Tcl_DStringValue, Tcl_DStringSetLength, Tcl_DStringTrunc, Tcl_DStringFree, Tcl_DStringResult, Tcl_DStringGetResult — 動的文字列を操作する　 manipulate dynamic strings
  SYNOPSIS
    #include <tcl.h>
    Tcl_DStringInit(dsPtr)
    char *
    Tcl_DStringAppend(dsPtr, bytes, length)
    char *
    Tcl_DStringAppendElement(dsPtr, element)
    Tcl_DStringStartSublist(dsPtr)
    Tcl_DStringEndSublist(dsPtr)
    int
    Tcl_DStringLength(dsPtr)
    char *
    Tcl_DStringValue(dsPtr)
    Tcl_DStringSetLength(dsPtr, newLength)
    Tcl_DStringTrunc(dsPtr, newLength)
    Tcl_DStringFree(dsPtr)
    Tcl_DStringResult(interp, dsPtr)
    Tcl_DStringGetResult(interp, dsPtr)
  引数 ARGUMENTS
    Tcl_DString *dsPtr (入出力in/out)
    const char *bytes (入力in)
    const char *element (入力in)
    int length (入力in)
    int newLength (入力in)
    Tcl_Interp *interp (入出力in/out)
  説明 DESCRIPTION
  KEYWORDS

### NAME

Tcl_DStringInit, Tcl_DStringAppend, Tcl_DStringAppendElement, Tcl_DStringStartSublist, Tcl_DStringEndSublist, Tcl_DStringLength, Tcl_DStringValue, Tcl_DStringSetLength, Tcl_DStringTrunc, Tcl_DStringFree, Tcl_DStringResult, Tcl_DStringGetResult — 動的文字列を操作する　 manipulate dynamic strings

### SYNOPSIS

#include <tcl.h>
Tcl_DStringInit(dsPtr)
char *
Tcl_DStringAppend(dsPtr, bytes, length)
char *
Tcl_DStringAppendElement(dsPtr, element)
Tcl_DStringStartSublist(dsPtr)
Tcl_DStringEndSublist(dsPtr)
int
Tcl_DStringLength(dsPtr)
char *
Tcl_DStringValue(dsPtr)
Tcl_DStringSetLength(dsPtr, newLength)
Tcl_DStringTrunc(dsPtr, newLength)
Tcl_DStringFree(dsPtr)
Tcl_DStringResult(interp, dsPtr)
Tcl_DStringGetResult(interp, dsPtr)

### 引数 ARGUMENTS

Tcl_DString *dsPtr (入出力in/out)
  動的文字列を管理する為に使われる構造へのポインター｡ Pointer to structure that is used to manage a dynamic string.

const char *bytes (入力in)
  動的文字列に追記する文字並びへのポインター｡ Pointer to characters to append to dynamic string.

const char *element (入力in)
  動的文字列にリスト要素として追記すべき文字への指示子｡　 Pointer to characters to append as list element to dynamic string.

int length (入力in)
  bytes から動的文字列に追加すべきバイトの個数｡もし ｰ1 の場合 null 終端文字迄の全ての文字を加える｡　 Number of bytes from bytes to add to dynamic string. If -1, add all characters up to null terminating character.

int newLength (入力in)
  動的文字列の為の新しい長さ､ null 終端文字は含まない｡ New length for dynamic string, not including null terminating character.

Tcl_Interp *interp (入出力in/out)
  結果を動的文字列から若しくはそこに設定すべき解釈実行機能｡　 Interpreter whose result is to be set from or moved to the dynamic string.

### 説明 DESCRIPTION

動的文字列は､次第に情報を追加していき任意の長さの文字列を作り上げる仕組みである｡もし動的文字列が短い場合､記憶域割当ての負担がない; 文字列が長くなるに従い追加的空間が必要に応じ割当てられる｡ 　　　 Dynamic strings provide a mechanism for building up arbitrarily long strings by gradually appending information. If the dynamic string is short then there will be no memory allocation overhead; as the string gets larger, additional space will be allocated as needed.

Tcl_DStringInit は､動的文字列を零長さに初期化する｡ Tcl_DString 構造は呼出し側が割付なければならない｡構造の現在の状態について何の仮定もつくられない; なんであれ既にその中にあるものは遺棄される｡もし構造が以前に使われている場合､古い文字列の為に割当てられたどの記憶域迄も解放する為に Tcl_DStringFree が呼ばれるべきである｡ Tcl_DStringInit initializes a dynamic string to zero length. The Tcl_DString structure must have been allocated by the caller. No assumptions are made about the current state of the structure; anything already in it is discarded. If the structure has been used previously, Tcl_DStringFree should be called first to free up any memory allocated for the old string.

Tcl_DStringAppend は､新しい情報を動的文字列に加え､もし必要なら､文字列の為に更に記憶域を割付ける｡もし length が零より小さい場合 bytes 内の全てが動的文字列に追記される; そうでない場合､ length は追記すべきバイトの数を指定する｡ Tcl_DStringAppend は新しい文字列の文字へのポインターを返す｡文字列は Tcl_DString 構造の string 欄から取戻され得る｡ Tcl_DStringAppend adds new information to a dynamic string, allocating more memory for the string if needed. If length is less than zero then everything in bytes is appended to the dynamic string; otherwise length specifies the number of bytes to append. Tcl_DStringAppend returns a pointer to the characters of the new string. The string can also be retrieved from the string field of the Tcl_DString structure.

Tcl_DStringAppendElement は､ Tcl_DStringAppend に似ている､違いはそれは length 引数を取らない(それは全ての element を追記する)､又､追記する前に､文字列から適切なリスト要素に変換する｡ Tcl_DStringAppendElement は､新しいリスト要素がリストか副リスト(即ち､現在の文字列が空か､一つの文字 “{” を含むか､現在の文字列の最後の２文字が “ {”). の先頭の要素でない限り､新しいリスト要素の前に区切りの空白を加える｡Tcl_DStringAppendElement は新しい文字列の文字へのポインタを返す｡ Tcl_DStringAppendElement is similar to Tcl_DStringAppend except that it does not take a length argument (it appends all of element) and it converts the string to a proper list element before appending. Tcl_DStringAppendElement adds a separator space before the new list element unless the new list element is the first in a list or sub-list (i.e. either the current string is empty, or it contains the single character “{”, or the last two characters of the current string are “ {”). Tcl_DStringAppendElement returns a pointer to the characters of the new string.

Tcl_DStringStartSublist と Tcl_DStringEndSublist は､入子のリストの作成に使うことができる｡それ自身が副リストのリスト要素を追加する為に､最初に Tcl_DStringStartSublist を呼び､次に副リスト内のそれぞれの要素の為に Tcl_DStringAppendElement を呼び､次に副リストを終える為に Tcl_DStringEndSublist を呼ぶ｡ Tcl_DStringStartSublist は､もし必要なら空白の区切りを追記し､左波括弧が続く; Tcl_DStringEndSublist は右波括弧を追記する｡リストはどの様な深さにも入子にできる｡ Tcl_DStringStartSublist and Tcl_DStringEndSublist can be used to create nested lists. To append a list element that is itself a sublist, first call Tcl_DStringStartSublist, then call Tcl_DStringAppendElement for each of the elements in the sublist, then call Tcl_DStringEndSublist to end the sublist. Tcl_DStringStartSublist appends a space character if needed, followed by an open brace; Tcl_DStringEndSublist appends a close brace. Lists can be nested to any depth.

Tcl_DStringLength は､動的文字列の現在の長さを返すマクロである(末尾の零文字を含まない)｡ Tcl_DStringValue は動的文字列の現在の内容へのポインターを返す｡ Tcl_DStringLength is a macro that returns the current length of a dynamic string (not including the terminating null character). Tcl_DStringValue is a macro that returns a pointer to the current contents of a dynamic string.

Tcl_DStringSetLength は動的文字列の長さを返す｡もし newLength が文字列の現在の長さより小さい場合､文字列は切詰められる｡もし newLength が文字列の現在の長さより大きい場合､文字列は長くされ､必要なら､新しい領域が割付られる｡但し､ Tcl_DStringSetLength は零文字の終端を与えない限り､新しい領域を初期化しない; 新しい領域を満たすことは呼出し側の責務である｡ Tcl_DStringSetLength は零長さに切詰められても､文字列の領域を解放しないので､猶 Tcl_DStringFree が呼ばれる必要がある｡ Tcl_DStringSetLength changes the length of a dynamic string. If newLength is less than the string's current length, then the string is truncated. If newLength is greater than the string's current length, then the string will become longer and new space will be allocated for the string if needed. However, Tcl_DStringSetLength will not initialize the new space except to provide a terminating null character; it is up to the caller to fill in the new space. Tcl_DStringSetLength does not free up the string's storage space even if the string is truncated to zero length, so Tcl_DStringFree will still need to be called.

Tcl_DStringTrunc は､動的文字列の長さを変更する｡この手続函数は今や批判がある｡代りに Tcl_DStringSetLength を使うべきである｡ Tcl_DStringTrunc changes the length of a dynamic string. This procedure is now deprecated. Tcl_DStringSetLength should be used instead.

Tcl_DStringFree は､文字列を使って終るときに呼出される｡それは文字列の為に割付けられたどの様な記憶域も解放し文字列値を空文字列に再初期化する｡ Tcl_DStringFree should be called when you are finished using the string. It frees up any memory that was allocated for the string and reinitializes the string's value to an empty string.

Tcl_DStringResult は interp の結果を dsPtr によって与えられた動的文字列の値に設定する｡それは dsPtr から解釈実行機能の結果にポインターを移すことにより行う｡これは新しい記憶域の割付と文字列複写の負担を節約する｡ Tcl_DStringResult も又動的文字列を空文字列に再初期化する｡ Tcl_DStringResult sets the result of interp to the value of the dynamic string given by dsPtr. It does this by moving a pointer from dsPtr to the interpreter's result. This saves the cost of allocating new memory and copying the string. Tcl_DStringResult also reinitializes the dynamic string to an empty string.

Tcl_DStringGetResult は Tcl_DStringResult の逆を行う｡それは dsPtr の値を interp の結果に設定し､ interp の結果を消去する｡もし可能なら､文字列の複写でなく､ポインターの移動により実施する｡ Tcl_DStringGetResult does the opposite of Tcl_DStringResult. It sets the value of dsPtr to the result of interp and it clears interp's result. If possible it does this by moving a pointer rather than by copying the string.

### KEYWORDS

append, dynamic string, free, result
Copyright © 1993 The Regents of the University of California.
Copyright © 1994-1996 Sun Microsystems, Inc.