OpenRTM-aist  1.2.1
クラス | 公開型 | 公開メンバ関数 | 全メンバ一覧
coil::Factory< AbstractClass, Identifier, Compare, Creator, Destructor > クラステンプレート

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

#include <Factory.h>

coil::Factory< AbstractClass, Identifier, Compare, Creator, Destructor > の継承関係図
Inheritance graph
[凡例]

公開型

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

公開メンバ関数

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)
 ファクトリーオブジェクト生成 [詳解]
 
ReturnCode deleteObject (const Identifier &id, AbstractClass *&obj)
 ファクトリーオブジェクト削除 [詳解]
 
ReturnCode deleteObject (AbstractClass *&obj)
 ファクトリーオブジェクト削除 [詳解]
 
std::vector< AbstractClass * > createdObjects ()
 生成済みオブジェクトリストの取得 [詳解]
 
bool isProducerOf (AbstractClass *obj)
 オブジェクトがこのファクトリの生成物かどうか調べる [詳解]
 
ReturnCode objectToIdentifier (AbstractClass *obj, Identifier &id)
 オブジェクトからクラス識別子(ID)を取得する [詳解]
 
Creator objectToCreator (AbstractClass *obj)
 オブジェクトのコンストラクタを取得する [詳解]
 
Destructor objectToDestructor (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*&)>
typedef std::map<AbstractClass*, FactoryEntry> coil::Factory< AbstractClass, Identifier, Compare, Creator, Destructor >::ObjectMap
template<class AbstractClass , typename Identifier = std::string, typename Compare = std::less<Identifier>, typename Creator = AbstractClass* (*)(), typename Destructor = void (*)(AbstractClass*&)>
typedef ObjectMap::iterator coil::Factory< AbstractClass, Identifier, Compare, Creator, Destructor >::ObjectMapIt

列挙型メンバ詳解

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*&)>
std::vector<AbstractClass*> coil::Factory< AbstractClass, Identifier, Compare, Creator, Destructor >::createdObjects ( )
inline

生成済みオブジェクトリストの取得

このファクトリで生成されたオブジェクトのリストを取得する。

戻り値
生成済みオブジェクトリスト
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*&)>
ReturnCode 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*&)>
ReturnCode 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*&)>
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*&)>
bool coil::Factory< AbstractClass, Identifier, Compare, Creator, Destructor >::isProducerOf ( AbstractClass *  obj)
inline

オブジェクトがこのファクトリの生成物かどうか調べる

引数
obj対象オブジェクト
戻り値
true: このファクトリの生成物 false: このファクトリの生成物ではない
template<class AbstractClass , typename Identifier = std::string, typename Compare = std::less<Identifier>, typename Creator = AbstractClass* (*)(), typename Destructor = void (*)(AbstractClass*&)>
Creator coil::Factory< AbstractClass, Identifier, Compare, Creator, Destructor >::objectToCreator ( AbstractClass *  obj)
inline

オブジェクトのコンストラクタを取得する

このファクトリで生成されたオブジェクトのコンストラクタを取得する。 obj はこのファクトリで生成されたものでなければならない。予め isProducerOf() 関数で当該オブジェクトがこのファクトリの生成物で あるかどうかをチェックしなければならない。

戻り値
オブジェクトのデストラクタ
template<class AbstractClass , typename Identifier = std::string, typename Compare = std::less<Identifier>, typename Creator = AbstractClass* (*)(), typename Destructor = void (*)(AbstractClass*&)>
Destructor coil::Factory< AbstractClass, Identifier, Compare, Creator, Destructor >::objectToDestructor ( AbstractClass *  obj)
inline

オブジェクトのデストラクタを取得する

このファクトリで生成されたオブジェクトのデストラクタを取得する。 obj はこのファクトリで生成されたものでなければならない。予め isProducerOf() 関数で当該オブジェクトがこのファクトリの生成物で あるかどうかをチェックしなければならない。

戻り値
オブジェクトのデストラクタ

参照先 coil::Destructor().

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 >::objectToIdentifier ( AbstractClass *  obj,
Identifier &  id 
)
inline

オブジェクトからクラス識別子(ID)を取得する

当該オブジェクトのクラス識別子(ID)を取得する。

引数
obj[in] クラス識別子(ID)を取得したいオブジェクト
id[out] クラス識別子(ID)
戻り値
リターンコード NOT_FOUND: 識別子が存在しない FACTORY_OK: 正常終了
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未登録

このクラス詳解は次のファイルから抽出されました: