source: molecuilder/src/Actions/ActionRegistry.cpp@ 5dba7a

Last change on this file since 5dba7a was 8a4f12, checked in by Tillmann Crueger <crueger@…>, 16 years ago

Changed ActionRegistry to use the new Singleton Mechanism

  • Property mode set to 100644
File size: 1.0 KB
Line 
1/*
2 * ActionRegistry.cpp
3 *
4 * Created on: Jan 7, 2010
5 * Author: crueger
6 */
7
8#include "Actions/ActionRegistry.hpp"
9#include "Actions/Action.hpp"
10
11#include "Patterns/Singleton_impl.hpp"
12
13#include <string>
14#include <cassert>
15#include <iostream>
16
17using namespace std;
18
19ActionRegistry::ActionRegistry()
20{
21}
22
23ActionRegistry::~ActionRegistry()
24{
25 map<const string,Action*>::iterator iter;
26 for(iter=actionMap.begin();iter!=actionMap.end();++iter) {
27 delete iter->second;
28 }
29 actionMap.clear();
30}
31
32Action* ActionRegistry::getActionByName(const std::string name){
33 map<const string,Action*>::iterator iter;
34 iter = actionMap.find(name);
35 assert(iter!=actionMap.end() && "Query for an action not stored in registry");
36 return iter->second;
37}
38
39void ActionRegistry::registerAction(Action* action){
40 pair<map<const string,Action*>::iterator,bool> ret;
41 ret = actionMap.insert(pair<const string,Action*>(action->getName(),action));
42 assert(ret.second && "Two actions with the same name added to registry");
43}
44
45CONSTRUCT_SINGLETON(ActionRegistry)
Note: See TracBrowser for help on using the repository browser.