1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
|
#include "ComponentEditorFactory.h"
#include <stdexcept>
namespace objectives
{
namespace ce
{
// Static map instance owner
ComponentEditorMap& ComponentEditorFactory::getMap()
{
static ComponentEditorMap _instance;
return _instance;
}
// Create a named ComponentEditor type
ComponentEditorPtr ComponentEditorFactory::create(wxWindow* parent,
const std::string& type,
objectives::Component& comp)
{
ComponentEditorMap::const_iterator i = getMap().find(type);
if (i != getMap().end())
return i->second->create(parent, comp);
else
return ComponentEditorPtr();
}
// Register a new type
void ComponentEditorFactory::registerType(const std::string& type,
ComponentEditorPtr subclass)
{
getMap().insert(ComponentEditorMap::value_type(type, subclass));
}
void ComponentEditorFactory::clear() {
getMap().clear();
}
}
}
|