オブジェクトルーチン:
インスタンス生成と解放

object_alloc

     
  オブジェクトクラスのインスタンスにメモリを割り当て、オブジェクトヘッダを初期化するために object_alloc 関数を使います。これは、オブジェクトの new メソッドの中で従来の newobject ルーチンのように使われますが、使用するオブジェクトは obex クラスオブジェクトでなければなりません。
   
  void *object_alloc(t_class *c);
     
  c class_new によって返される、あなたのクラスポインタ
     
 

このルーチンは、成功した場合、あなたのオブジェクトクラスの新しいインスタンスを返し、失敗した場合には、NULL を返します。


object_new

     
  オブジェクトクラスのインスタンスにメモリを割り当て、Max に対して内部的にオブジェクトヘッダを初期化するために、object_new 関数を使います。これは、従来のルーチン newinstance と使い方は同じですが、使用するオブジェクトが obex クラスオブジェクトである必要があります。
   
  void *object_new(t_symbol *name_space,t_symbol *classname, ...);
     
  name_space オブジェクトのネームスペースが要求されます。通常、Max パッチャーの内部でインスタンス化されることのできる obex クラス(box、UI オブジェクトなど)の場合は定数 CLASS_BOXに、内部的にのみ使用されるクラスの場合は定数CLASS_NOBOXになります。開発者は自分自身のネームスペースを同様に定義することができますが、この機能は現在ドキュメント化されていません。
  classname 作られるオブジェクトのクラス名
  ... インスタンスを生成されるオブジェクトクラスが必要とするアーギュメント全て。
     
 

このルーチンは、成功した場合、新しいインスタンスを返し、失敗した場合には NULL を返します。


object_new_typed

     
  オブジェクトクラスのインスタンスにメモリを割り当て、Max に対して内部的にオブジェクトヘッダを初期化するために、object_new_typed 関数を使います。これは、従来のルーチン newinstance と使い方は同じですが、使用するオブジェクトが obex クラスオブジェクトである必要があります。object_new_typed ルーチンは、オブジェクトのアーギュメントとして Atom を使う点が object_newと異なります。これによって、Max インターフェイスからオブジェクトボックスの中でタイプした場合の効果と、より似たものになります。
   
  void *object_new_typed(t_symbol *name_space,
t_symbol *classname, long ac, t_atom *av);
     
  name_space オブジェクトのネームスペースが要求されます。通常、Max パッチャーの内部でインスタンス化されることのできる obex クラス(box、UI オブジェクト等)の場合は定数CLASS_BOX に、内部的にのみ使用されるクラスの場合は定数 CLASS_NOBOX になります。開発者は自分自身のネームスペースを同様に定義することができますが、この機能は現在ドキュメント化されていません。
  classname 作られるオブジェクトのクラス名
  ac av の引数の数
  av t_atoms の配列。クラスのインスタンス生成関数への引数
     
 

このルーチンは、成功した場合、新しいインスタンスを返し、失敗した場合には NULL を返します。


object_free

     
  free 関数を呼び出して、すでに object_newobject_new_typed、または他の新しいスタイルによるオブジェクトコンストラクタ関数(例えば、hashtab_new )によってインスタンス化された内部のオブジェクトクラスのインスタンスのメモリを解放する場合に、object_free を使います。このドキュメントが書かれた時点では、この関数は従来のルーチン freeobjectのラッパーになっていますが、obex クラスオブジェクトでの使用を推奨します。
   
  t_max_err object_free(void *x);
     
  x 開放されるオブジェクトへのポインタ
     
 

このルーチンは、成功するとエラーコード MAX_ERR_NONEを返し、失敗した場合には“ext_obex.h”で定義される他のエラーコードの1つを返します。