1 |
grimes |
1.1 |
#ifndef l1menu_RegisterTriggerMacro_h
|
2 |
|
|
#define l1menu_RegisterTriggerMacro_h
|
3 |
|
|
|
4 |
|
|
#include "l1menu/TriggerTable.h"
|
5 |
|
|
|
6 |
|
|
#define REGISTER_TRIGGER( NAME ) class NAME##Factory \
|
7 |
|
|
{ \
|
8 |
|
|
public: \
|
9 |
|
|
NAME##Factory() \
|
10 |
|
|
{ \
|
11 |
|
|
NAME temporaryInstance; \
|
12 |
|
|
TriggerTable::registerTrigger( temporaryInstance.name(), temporaryInstance.version(), (&this->createTrigger) ); \
|
13 |
|
|
} \
|
14 |
|
|
static std::auto_ptr<l1menu::ITrigger> createTrigger() \
|
15 |
|
|
{ \
|
16 |
|
|
return std::auto_ptr<l1menu::ITrigger>(new NAME); \
|
17 |
|
|
} \
|
18 |
|
|
}; \
|
19 |
|
|
NAME##Factory NAME##FactoryOnlyInstance;
|
20 |
|
|
|
21 |
|
|
#endif
|