コマンド(MEL) |
MEL のみで使用可能 |
stackTrace |
カテゴリ: 言語、スクリプティング |
移動先: 概要 戻り値 フラグ MEL の例
stackTrace [-dump] [-parameterCount uint] [-parameterType uint uint] [-parameterValue uint uint] [-state boolean]
stackTrace は「元に戻す」が可能、「照会」が可能、「編集」が不可能です。
このコマンドは MEL スタック トレースを制御します。
戻り値の型は照会モードでは照会フラグが基になります。
dump, parameterCount, parameterType, parameterValue, state
ロング ネーム(ショート ネーム) |
引数型 |
プロパティ |
-state(-s)
|
boolean
|
|
|
MEL スタック トレースの表示をオンまたはオフにします。
|
|
-dump(-d)
|
|
|
|
MEL 呼び出しのカレント スタックをダンプします。
|
|
-parameterCount(-pc)
|
uint
|
|
|
特定のスタック レベルでの関数のパラメータ数を整数で返します。
|
|
-parameterType(-pt)
|
uint uint
|
|
|
特定のスタック レベルで指定された関数パラメータのタイプを文字列で返します。引数は次のとおりです。スタック インデックス、パラメータ インデックス。戻り値は、int、int[]、float、float[]、vector、vector[]、string、string[] です。
|
|
-parameterValue(-pv)
|
uint uint
|
|
|
特定のスタック レベルで指定された関数パラメータの値を返します。戻り値のタイプはパラメータの実際のタイプに一致します。例外はベクトルおよびベクトル配列で、float 配列として返されます。しかし、これらの結果をベクトル/ベクトル配列に割り当てることが可能で、投影は自動的に行われます(後述の MEL の例を参照)。引数は次のとおりです。スタック インデックス、パラメータ インデックス。
|
|
: コマンドの作成モードで使用可能なフラグ
|
: コマンドの編集モードで使用可能なフラグ
|
: コマンドの照会モードで使用可能なフラグ
|
: 1 つのコマンドで複数回使用可能なフラグ
|
// Have the stack trace show up on MEL script errors
stackTrace -state on;
// No stack trace for MEL script errors
stackTrace -state off;
// The following is an example of the use of the parameterCount/Type/Value flags.
// A function is defined which uses stackTrace to examine its own inputs.
proc foo( int $inty, int $intya[], float $floaty, float $floatya[], string $stringy, string $stringya[], vector $vectory, vector $vectorya[] )
{
string $dump[] = `stackTrace -q -d`;
print( $dump[0] );
int $count = `stackTrace -pc 0`;
print( "parameter count: " + $count + "\n" );
int $i;
for ( $i=0; $i<$count; $i++ )
{
string $type = `stackTrace -pt 0 $i`;
print( "parameter " + $i + " type: " + $type + "\n" );
switch ( $type )
{
case "int":
int $val_i = `stackTrace -pv 0 $i`;
print( " value: " + $val_i + "\n" );
break;
case "float":
float $val_f = `stackTrace -pv 0 $i`;
print( " value: " + $val_f + "\n" );
break;
case "string":
string $val_s = `stackTrace -pv 0 $i`;
print( " value: " + $val_s + "\n" );
break;
case "vector":
vector $val_v = `stackTrace -pv 0 $i`;
print( " value: <<" + $val_v + ">>\n" );
break;
case "int[]":
int $val_ia[] = `stackTrace -pv 0 $i`;
print( " value: [" );
for ( $j in $val_ia ) print( $j + ", " );
print( "]\n" );
break;
case "float[]":
float $val_fa[] = `stackTrace -pv 0 $i`;
print( " value: [" );
for ( $f in $val_fa ) print( $f + ", " );
print( "]\n" );
break;
case "string[]":
string $val_sa[] = `stackTrace -pv 0 $i`;
print( " value: [" );
for ( $s in $val_sa ) print( $s + ", " );
print( "]\n" );
break;
case "vector[]":
vector $val_va[] = `stackTrace -pv 0 $i`;
print( " value: [" );
for ( $v in $val_va ) print( "<<" + $v + ">>, " );
print( "]\n" );
break;
}
}
}
// Make some input arrays.
int $i[3] = { 9, 6, 3 };
float $f[4] = { 5.0, 7.0, 9.0, 23.0 };
string $s[2] = { "monkey", "ape" };
vector $v[2] = { <<0.1,0.2,0.3>>, <<7,7,11>> };
// Invoke the function.
foo( 42, $i, 3.14, $f, "oook", $s, <<0,0,1>>, $v );