オブジェクト・クリエーター

オブジェクト作成操作は、オブジェクトを作成して、イニシャライザーを呼び出します。 この操作の名前のフォーマットは、<object>_Create() です。

クリエーターは、オブジェクトのメモリーを割り振り、オブジェクトのイニシャライザーを呼び出し、作成したオブジェクトへのポインターを返します。

例えば、オブジェクト A のために次のクリエーターが生成されます。

A * A_Create() {
   A* me = (A *) malloc(sizeof(A));
   if(me!=NULL)
      {
         A_Init(me);
      }
   return me;
}

リアクティブ・オブジェクトの場合、タスクへのポインターがクリエーターの引数リスト (の最後) に追加されます。 このポインターは、リアクティブ・オブジェクトに、現在実行しているスレッド (タスク) を知らせます。 例:

A * A_Create(RiCTask * p_task) {
   A* me = (A *) malloc(sizeof(A));
   if(me!=NULL)
      {
         A_Init(me, p_task);
      }
   DYNAMICALLY_ALLOCATED(me);
   return me;
}

C においては、引数にデフォルト値を指定することはできないため、 タスクに NULL 値を渡してインスタンスがメインタスクで実行できるようにすることができます。

C_CG::Class::AllocateMemory プロパティーと C_CG::Event::AllocateMemory プロパティーは、 オブジェクトまたはイベントに動的にメモリーを割り振るために生成されるストリングを指定します。 このストリングは、Create() 操作で使用されます。 このプロパティーのデフォルト値は、次のようになります。

($cname*) malloc(sizeof($cname));

生成されたコードでは、$cname キーワードが、メモリーを割り振られているオブジェクトまたはイベントの名前で置き換えられます。

動的メモリー割り振り

クリエーター関数を呼び出すことでオブジェクトを動的に作成できます。 例:

B *new_B;
new_B = B_create();

削除関数を呼び出すことでオブジェクトを動的に削除できます。 例:

B_Destroy(new_B);

フィードバック