opensurgsim
Public Member Functions | List of all members
SurgSim::Framework::ObjectFactory1< Base, Parameter1 > Class Template Reference

An object factory, once a class is registered with the factory it can be used to create instances of registered classes. More...

#include <ObjectFactory.h>

Public Member Functions

template<typename Derived >
bool registerClass (const std::string &className)
 Register a class with the factory. More...
 
std::shared_ptr< Base > create (const std::string &className, const Parameter1 &val)
 Create an instance of a class based on the specific class name, whose constructor takes 1 parameter. More...
 
bool isRegistered (const std::string &className) const
 Check whether the class is registered in the factory. More...
 

Detailed Description

template<typename Base, typename Parameter1>
class SurgSim::Framework::ObjectFactory1< Base, Parameter1 >

An object factory, once a class is registered with the factory it can be used to create instances of registered classes.

All the classes registered need to have a one parameter constructor, the type for that parameter can be passed as a template parameter.

Note
The names used for registration and the actual c++ class names are independent the className parameter here is just an identifier for the class.
Template Parameters
BaseThe base class for all classes that can be registered with the factory.
Parameter1The class for the constructor parameter.

Member Function Documentation

§ create()

template<typename Base , typename Parameter1>
std::shared_ptr< Base > SurgSim::Framework::ObjectFactory1< Base, Parameter1 >::create ( const std::string &  className,
const Parameter1 &  val 
)

Create an instance of a class based on the specific class name, whose constructor takes 1 parameter.

Parameters
classNameThe class name.
valThe value of the parameter.
Returns
a shared pointer to the object of type className instantiated with the given parameter, fails with an assertion otherwise.

§ isRegistered()

template<typename Base , typename Parameter1 >
bool SurgSim::Framework::ObjectFactory1< Base, Parameter1 >::isRegistered ( const std::string &  className) const

Check whether the class is registered in the factory.

Parameters
classNameName of the class to check.
Returns
true if the factory has a constructor for this class

§ registerClass()

template<typename Base , typename Parameter1 >
template<typename Derived >
bool SurgSim::Framework::ObjectFactory1< Base, Parameter1 >::registerClass ( const std::string &  className)

Register a class with the factory.

Template Parameters
TThe specific type of the class to be registered.
Parameters
classNameThe name of this class.
Returns
true if the class was added, false if it already existed in the registry.

The documentation for this class was generated from the following files: