アトリビュートルーチン:
アトリビュート アーギュメント

アトリビュートを実装しているほとんどのオブジェクトは、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番目に現れるためです)