クラス テンプレート coil::Factory< AbstractClass, Identifier, Compare, Creator, Destructor >

Factory テンプレートクラス. [詳細]

#include <Factory.h>

coil::Factory< AbstractClass, Identifier, Compare, Creator, Destructor >に対する継承グラフ
coil::GlobalFactory< AbstractClass, Identifier, Compare, Creator, Destructor >

すべてのメンバ一覧

構成

class  FactoryEntry
 FactoryEntry クラス.

Public 型

enum  ReturnCode {
  FACTORY_OK, FACTORY_ERROR, ALREADY_EXISTS, NOT_FOUND,
  INVALID_ARG, UNKNOWN_ERROR
}
typedef std::map< Identifier,
FactoryEntry > 
FactoryMap
typedef FactoryMap::iterator FactoryMapIt

Public メソッド

bool hasFactory (const Identifier &id)
 ファクトリー有無チェック
std::vector< Identifier > getIdentifiers ()
 ファクトリーIDリスト取得
ReturnCode addFactory (const Identifier &id, Creator creator, Destructor destructor)
 ファクトリー登録
ReturnCode removeFactory (const Identifier &id)
 ファクトリー削除
AbstractClass * createObject (const Identifier &id)
 ファクトリーオブジェクト生成
void deleteObject (const Identifier &id, AbstractClass *&obj)
 ファクトリーオブジェクト削除
void deleteObject (AbstractClass *&obj)
 ファクトリーオブジェクト削除

説明

template<class AbstractClass, typename Identifier = std::string, typename Compare = std::less<Identifier>, typename Creator = AbstractClass* (*)(), typename Destructor = void (*)(AbstractClass*&)>
class coil::Factory< AbstractClass, Identifier, Compare, Creator, Destructor >

Factory テンプレートクラス.


型定義

template<class AbstractClass , typename Identifier = std::string, typename Compare = std::less<Identifier>, typename Creator = AbstractClass* (*)(), typename Destructor = void (*)(AbstractClass*&)>
typedef std::map<Identifier, FactoryEntry> coil::Factory< AbstractClass, Identifier, Compare, Creator, Destructor >::FactoryMap
template<class AbstractClass , typename Identifier = std::string, typename Compare = std::less<Identifier>, typename Creator = AbstractClass* (*)(), typename Destructor = void (*)(AbstractClass*&)>
typedef FactoryMap::iterator coil::Factory< AbstractClass, Identifier, Compare, Creator, Destructor >::FactoryMapIt

列挙型

template<class AbstractClass , typename Identifier = std::string, typename Compare = std::less<Identifier>, typename Creator = AbstractClass* (*)(), typename Destructor = void (*)(AbstractClass*&)>
enum coil::Factory::ReturnCode
列挙型の値:
FACTORY_OK 
FACTORY_ERROR 
ALREADY_EXISTS 
NOT_FOUND 
INVALID_ARG 
UNKNOWN_ERROR 

関数

template<class AbstractClass , typename Identifier = std::string, typename Compare = std::less<Identifier>, typename Creator = AbstractClass* (*)(), typename Destructor = void (*)(AbstractClass*&)>
ReturnCode coil::Factory< AbstractClass, Identifier, Compare, Creator, Destructor >::addFactory ( const Identifier &  id,
Creator  creator,
Destructor  destructor 
) [inline]

ファクトリー登録

ファクトリーを登録する。

引数:
id ファクトリーID
creator クリエータ用ファンクタ
destructor デストラクタ用ファンクタ
戻り値:
FACTORY_OK: 正常終了 ALREADY_EXISTS: 登録済み INVALID_ARG: creator か destructor が不正な値を含む
template<class AbstractClass , typename Identifier = std::string, typename Compare = std::less<Identifier>, typename Creator = AbstractClass* (*)(), typename Destructor = void (*)(AbstractClass*&)>
AbstractClass* coil::Factory< AbstractClass, Identifier, Compare, Creator, Destructor >::createObject ( const Identifier &  id  )  [inline]

ファクトリーオブジェクト生成

ファクトリーオブジェクトを生成する。

引数:
id ファクトリーID
戻り値:
AbstractClass のポインタ
template<class AbstractClass , typename Identifier = std::string, typename Compare = std::less<Identifier>, typename Creator = AbstractClass* (*)(), typename Destructor = void (*)(AbstractClass*&)>
void coil::Factory< AbstractClass, Identifier, Compare, Creator, Destructor >::deleteObject ( AbstractClass *&  obj  )  [inline]

ファクトリーオブジェクト削除

ファクトリーオブジェクトを削除する。

引数:
obj ファクトリーオブジェクト
template<class AbstractClass , typename Identifier = std::string, typename Compare = std::less<Identifier>, typename Creator = AbstractClass* (*)(), typename Destructor = void (*)(AbstractClass*&)>
void coil::Factory< AbstractClass, Identifier, Compare, Creator, Destructor >::deleteObject ( const Identifier &  id,
AbstractClass *&  obj 
) [inline]

ファクトリーオブジェクト削除

ファクトリーオブジェクトを削除する。

引数:
id ファクトリーID
obj ファクトリーオブジェクト
template<class AbstractClass , typename Identifier = std::string, typename Compare = std::less<Identifier>, typename Creator = AbstractClass* (*)(), typename Destructor = void (*)(AbstractClass*&)>
std::vector<Identifier> coil::Factory< AbstractClass, Identifier, Compare, Creator, Destructor >::getIdentifiers (  )  [inline]

ファクトリーIDリスト取得

ファクトリーIDリストを返す。

戻り値:
ID リスト
template<class AbstractClass , typename Identifier = std::string, typename Compare = std::less<Identifier>, typename Creator = AbstractClass* (*)(), typename Destructor = void (*)(AbstractClass*&)>
bool coil::Factory< AbstractClass, Identifier, Compare, Creator, Destructor >::hasFactory ( const Identifier &  id  )  [inline]

ファクトリー有無チェック

指定IDのファクトリー有無を返す。

引数:
id ファクトリーID
戻り値:
true: 有り, false: 無し
template<class AbstractClass , typename Identifier = std::string, typename Compare = std::less<Identifier>, typename Creator = AbstractClass* (*)(), typename Destructor = void (*)(AbstractClass*&)>
ReturnCode coil::Factory< AbstractClass, Identifier, Compare, Creator, Destructor >::removeFactory ( const Identifier &  id  )  [inline]

ファクトリー削除

ファクトリーを削除する。

引数:
id ファクトリーID
戻り値:
FACTORY_OK: 正常終了 NOT_FOUND: ID未登録
OpenRTMに対してThu May 24 23:25:19 2012に生成されました。  doxygen 1.6.3