Scripts¶
Scripts クラスは TJS2 に関するメソッドやプロパティを管理します。このクラスからオブジェクトを作成することはできません。
メンバー一覧¶
プロパティ¶
メソッド¶
- execStorage
- evalStorage
- compileStorage
- exec
- eval
- dump
- getTraceString
- setCallMissing
- getClassNames
- dumpStringHeap
textEncoding¶
プロパティ \ アクセス: r/w
解説
スクリプトを読み込む時に使用するテキストエンコーディングを指定
スクリプトを読み込む時に使用するテキストエンコーディングを指定します。
現在指定できるのは"UTF-8"か"Shift_JIS"のどちらかです。
execStorage¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
storage |
|
実行するストレージを指定します。 |
mode |
'' |
ファイルを読み込む際のモード文字列を指定します。"o" に続いてオフセットを10進で指定するとファイルのそのバイト位置からの読み込みになります。 |
context |
global |
実行コンテキストを指定します。 |
戻り値
スクリプトを実行した結果が戻ります。
解説
ストレージ上のスクリプトの実行
指定されたストレージを読み込み、その内容を TJS2 スクリプトとして実行します。
スクリプトを実行中に発生した例外はこのメソッド内では捕捉されませんので、このメソッドの 呼び出し側で捕捉することができます。
evalStorage¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
storage |
|
評価するストレージを指定します。 |
mode |
'' |
ファイルを読み込む際のモード文字列を指定します。"o" に続いてオフセットを10進で指定するとファイルのそのバイト位置からの読み込みになります。 |
context |
global |
実行コンテキストを指定します。 |
戻り値
式を評価した結果が戻ります。
解説
ストレージ上の式の評価
指定されたストレージを読み込み、その内容を TJS2 式として評価します。
スクリプトを実行中に発生した例外はこのメソッド内では捕捉されませんので、このメソッドの 呼び出し側で捕捉することができます。
compileStorage¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
inputfile |
|
コンパイル対象ストレージを指定します。 |
outputfile |
|
出力バイトコードストレージを指定します。 |
isresult |
false |
戻り値が必要かどうかを指定します。 |
outputdebug |
false |
デバッグ情報を含めるかどうかを指定します。 |
isexpression |
false |
式かどうかを指定します。 |
解説
ストレージ上のスクリプトのコンパイル
指定されたストレージを読み込み、その内容をコンパイルしてバイトコードファイルとして出力します。
コンパイルされたバイトコードファイルは execStorage もしくは、evalStorage で通常のスクリプトと同じように実行できます。
関連: Scripts.execStorage / Scripts.evalStorage
exec¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
script |
|
実行するスクリプトを文字列で指定します。 |
name |
'' |
エラーメッセージ用ファイル名の指定 |
linesof |
0 |
エラーメッセージ用行番号の指定 |
context |
global |
実行コンテキストを指定します。 |
戻り値
スクリプトを実行した結果が戻ります。
解説
スクリプトの実行
script で指定された文字列を TJS2 スクリプトとして実行します。
スクリプトを実行中に発生した例外はこのメソッド内では捕捉されませんので、このメソッドの 呼び出し側で捕捉することができます。
関連: Scripts.execStorage / Scripts.eval
eval¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
expression |
|
実行する式を文字列で指定します。 |
name |
'' |
エラーメッセージ用ファイル名の指定 |
linesof |
0 |
エラーメッセージ用行番号の指定 |
context |
global |
実行コンテキストを指定します。 |
戻り値
式を評価した結果が戻ります。
解説
式の評価
expression で指定された文字列を TJS2 式として実行します。
スクリプトを実行中に発生した例外はこのメソッド内では捕捉されませんので、このメソッドの 呼び出し側で捕捉することができます。
関連: Scripts.execStorage / Scripts.exec
dump¶
メソッド
解説
コンテキストのダンプ
現時点で TJS2 に読み込まれているスクリプトブロック内の各コンテキストの内容の詳細を ローカルファイルに出力します。主に VM コードの逆アセンブル結果が出力されます。
出力ファイルは、吉里吉里の実行可能ファイルと同じフォルダに出力され、そのファイル名は 吉里吉里の実行可能ファイルに .dump.txt が付加されたものになります。
getTraceString¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
limit |
0 |
履歴を取得する最大呼び出し深さを指定します。この引数を省略するか 0 を指定すると、取得できる限りの履歴を取得します。 |
戻り値
呼び出し履歴を文字列化した物
解説
呼び出し履歴の取得
メソッドの呼び出し履歴を文字列として取得します。このメソッドが呼ばれた時点での履歴を取得することができます。
このメソッドを使用するには、コマンドラインオプションで -debug (デバッグモード) が有効になっていなければなりません。デバッグモードが無効の場合はこのメソッドは空文字列を返します。
返される文字列はたとえば 'messagelayer.tjs(1561)[(function) addButton] <-- mainwindow.tjs(4463)[(function expression) (anonymous)] <-- conductor.tjs(427)[(function) onTag] <-- conductor.tjs(95)[(function) timerCallback]' のような物です。
setCallMissing¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
missing |
|
メンバが見つからない時に呼び出されるハンドラ。 |
解説
メンバが見つからない時に呼び出されるハンドラの登録
メンバが見つからない時に呼び出されるハンドラを登録します。
getClassNames¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
obect |
|
クラス名を取得するオブジェクト。 |
戻り値
クラス名の配列
解説
クラス名を取得
オブジェクトからクラス名を取得します。
dumpStringHeap¶
メソッド
解説
文字列ヒープのダンプ
TJS2 ランタイムが管理している文字列ヒープの内容をデバッグ出力します。
TJS_DEBUG_DUMP_STRING を有効にしてビルドされたエンジンでのみ呼び出せます。
メモリリーク調査などのデバッグ用途専用。
プラグイン拡張: json¶
擬似コードによるマニュアル
メンバー一覧¶
メソッド¶
evalJSON¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
jsonText |
|
JSON が格納されたテキスト |
戻り値
Array または Dictionary
解説
JSON の文字列を解析して Array または Dictionary を返す
evalJSONStorage¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
jsonFile |
|
JSON が格納されたテキストファイルのファイル名 |
utf8 |
false |
入力エンコーディング指定。true なら UTF-8、falseなら現在のコードページ |
戻り値
Array または Dictionary
解説
JSON のファイルを解析して Array または Dictionary を返す
saveJSON¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
jsonFile |
|
格納先ファイル |
obj |
|
保存対象オブジェクト |
utf8 |
false |
出力エンコーディング指定。true なら UTF-8、falseなら現在のコードページ |
newline |
0 |
改行コード 0:CRLF 1:LF |
解説
データを JSON 形式で保存する
toJSONString¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
obj |
|
|
newline |
0 |
改行コード 0:CRLF 1:LF |
戻り値
JSON 形式のテキスト
解説
データを JSON 形式の文字列に変換する
プラグイン拡張: saveStruct¶
メンバー一覧¶
メソッド¶
toStructString¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
target |
|
文字列化する対象(辞書・配列以外の int/real/string/octet/null/void も可能) |
newline |
1 |
改行コード 0:CRLF 1:LF |
option |
ssoIndent\|ssoSort |
整形オプション sso* の組み合わせ(後述)もしくは直接数値指定 |
戻り値
saveStruct に準じた形の文字列を返す
解説
optionのデフォルト値がArray/Dictionaryと違うので注意(デバッグ用途を想定)
プラグイン拡張: scriptsEx¶
メンバー一覧¶
メソッド¶
- getObjectKeys
- getObjectCount
- getObjectContext
- isNullContext
- equalStruct
- equalStructNumericLoose
- foreach
- getMD5HashString
- clone
- rehash
- propSet
- propGet
- safeEvalStorage
getObjectKeys¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
obj |
|
対象オブジェクト |
戻り値
キーが格納された配列
解説
オブジェクトのメンバ名一覧を返す
getObjectCount¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
obj |
|
対象オブジェクト |
戻り値
個数を返す
解説
オブジェクトのメンバ個数を返す
getObjectContext¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
obj |
|
対象オブジェクト |
戻り値
コンテキストオブジェクト
解説
オブジェクトのコンテキストを返す
isNullContext¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
obj |
|
対象オブジェクト |
戻り値
コンテキストが null
解説
オブジェクトのコンテキスト判定
equalStruct¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
obj1 |
|
オブジェクトその1 |
obj2 |
|
オブジェクトその2 |
戻り値
等しければ true
解説
オブジェクト同士を比較する。辞書/配列の場合は中身の要素が再帰的に比較されます
equalStructNumericLoose¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
obj1 |
|
オブジェクトその1 |
obj2 |
|
オブジェクトその2 |
戻り値
等しければ true
解説
オブジェクト同士を比較する。辞書/配列の場合は中身の要素が再帰的に比較されます
数値がゆるく比較されます(0.0 と 0 を等しいとして扱います)
foreach¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
obj |
|
処理対象オブジェクト(辞書または配列) |
func |
|
呼び出し関数。func(key, value, args*) の形で呼ばれます。 無名関数などコンテキストが null の場合は自動的に thisコンテキストで動作します 関数がなにかしら値を返すと処理が中断されます |
args* |
|
戻り値
中断時に返された値
解説
オブジェクトのメンバの全参照
getMD5HashString¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
octet |
|
対象オクテット |
戻り値
ハッシュ値(32文字の16進数ハッシュ文字列(小文字))
解説
octet の MD5ハッシュ値の取得
clone¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
obj |
|
クローン元 void/数値/文字列/octet は元の値をそのまま返します。 辞書・配列オブジェクトは、deep copy 処理したものを返します。入れ子は再帰処理されます。 一般オブジェクトは "clone" メソッドが存在すればその帰り値を、なければ元の値をそのまま返します |
解説
値のクローンを返す。
rehash¶
メソッド
解説
TJSDoRehash()を呼ぶ
TJSCustomObjectベースのオブジェクトのハッシュテーブルサイズの再構築フラグを立てます。 (辞書やほとんどのクラスおよびインスタンスのオブジェクトが対象になります)
解説: ハッシュテーブルサイズはそのオブジェクトの持つ要素数により決定されます。 フラグが立った後,オブジェクトに何か書き込んだタイミングで再計算を行い, テーブルサイズが変わった場合にのみ再構築が行われます。(サイズ=2^(要素数のビット数+2)程度?) 普段,吉里吉里は定期的(アイドル時かつ前回から1.5秒以上経過している時)に TJSDoRehash()が呼ばれているので特に気にする必要はありませんが, アイドルを挟まずに大量に要素を追加する場合において カウンタで何千〜万回に1回等の間隔で呼び出すようにすると効果的かと思われます。
propSet¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
obj |
|
対象オブジェクト |
member |
|
メンバ名(typeof member == "Integer"ならProp{Set,Get}ByNumを呼ぶ) |
value |
|
セットする値(propSetのみ) |
flag |
Scripts.pfMemberEnsure |
フラグ(Scripts.pf* の"|"(or)による組み合わせ指定,もしくは0) Scripts.pfMemberEnsure : (set時)メンバを新規追加する場合に指定(ない場合は既存メンバのみ書き換え可能) Scripts.pfMemberMustExist : (get時)メンバがない場合はエラー(辞書のundefinedもvoidを返さずエラーになります) Scripts.pfIgnoreProp : (get/set時)プロパティの動作を無視(TJSの&指定と同じ動作です) Scripts.pfHiddenMember : (set時)隠しメンバ指定(assignStruct/saveStruct等のEnumMembers系の処理で無視されます) Scripts.pfStaticMember : (set時)Staticメンバ指定(クラスオブジェクトなどに使用します) |
戻り値
取得した値(propGetのみ,set時はvoid)
解説
指定オブジェクトのPropSet/Getを呼ぶ
propGet¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
obj |
|
|
member |
|
|
flag |
Scripts.pfMemberMustExist |
safeEvalStorage¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
storage |
|
評価するストレージ(バイトコードバイナリは不可/saveStructで(const)つきで保存された辞書/配列が対象) |
mode |
|
モード文字列 |
context |
|
実行コンテキスト |
戻り値
評価されたデータ
解説
(const)つき辞書/配列を安全に評価する
プラグイン拡張: windowEx¶
Scripts拡張
メンバー一覧¶
メソッド¶
setEvalErrorLog¶
メソッド
引数
| 引数 | 既定値 | 説明 |
|---|---|---|
enabled |
|
出力許可 |
戻り値
元の値
解説
Scripts.evalのエラーログ出力抑制
enabled に false を設定すると Scripts.eval の評価処理を TVPExecuteExpression 経由で行うようになり,例外発生時にログが出力されない 吉里吉里のバージョンアップに伴い仕様が変わる可能性があるので注意のこと