アトリビュートを実装しているほとんどのオブジェクトは、Max オブジェクトの「コマンドライン」でのアトリビュートの使用("@アトリビュート名 値"を使って、直接オブジェクトボックスに書き込む方法)をサポートします。次のルーチンは、この機能を実装するものです。
注:アトリビュートアーギュメントは、多様な argc/argv による atom のリストに依存するため、これらをサポートしようと思う開発者は、class_new の呼び出しの中でオブジェクトを A_GIMME として実装しなければなりません。
attr_args_process |
||
atom リストを取得し、そこに書かれている全てのアトリビュートを正しくセットするために、 attr_args_process 関数を使います。この関数は通常、アトリビュートアーギュメントの処理をするのに好都合なように、オブジェクトの new メソッドで使用されます。 | ||
void attr_args_process(void *x, short ac, t_atom *av); | ||
x | アトリビュートが処理されるオブジェクト | |
ac | av の中の t_atom の数 | |
av | t_atom のリスト | |
これは、使用法の一般的な例です void *myobject_new(t_symbol *s, long ac, t_atom *av) { t_myobject *x = NULL; if (x=(t_myobject *)object_alloc(myobject_class)) { // アトリビュート−アーギュメントのセットの値の上書きを避けるために、 // アトリビュートを処理する前に、すべてのデータを初期化します。 x->data = 0; // もしあれば、attr のアーギュメントを処理します attr_args_process(x, ac, av); } return x; } |
attr_args_offset |
||
atom リストの中の、アトリビュートアーギュメントが始まる箇所を判定するために、attr_args_offset 関数を使います。開発者は、特定の目的において attr_args_process が正しい機能を提供しない場合、アトリビュートアーギュメントの手動での処理を助けるために、この関数を使用できます。 | ||
long attr_args_offset(short ac, t_atom *av); | ||
ac | av の中の t_atom の数 | |
av | t_atom のリスト | |
このルーチンは、atom リストの中の、最初にアトリビュートアーギュメントが存在する場所のオフセットを返します。例えば、atom リストが foo bar 3.0 @mode 6 であった場合、attr_args_offset は3を返します(アトリビュート mode が atom リストの3番目に現れるためです) |