9 #ifndef KTPROCESSOR_HH_ 10 #define KTPROCESSOR_HH_ 21 #include <boost/bind.hpp> 22 #include <boost/function.hpp> 23 #include <boost/signals2.hpp> 32 KTLOGGER(processorlog,
"KTProcessor.hh");
43 typedef std::map< std::string, KTSignalWrapper* >
SignalMap;
47 typedef std::map< std::string, KTSlotWrapper* >
SlotMap;
52 KTProcessor(
const std::string& name=
"default-proc-name");
57 void ConnectASlot(
const std::string& signalName,
KTProcessor* processor,
const std::string& slotName,
int groupNum=-1);
58 void ConnectASignal(
KTProcessor* processor,
const std::string& signalName,
const std::string& slotName,
int groupNum=-1);
61 template<
class XProcessor >
62 void RegisterSignal(std::string name, XProcessor* signalPtr);
64 template<
class XTarget,
typename XReturn >
65 void RegisterSlot(std::string name, XTarget* target, XReturn (XTarget::* funcPtr)());
67 template<
class XTarget,
typename XReturn,
typename XArg1 >
68 void RegisterSlot(std::string name, XTarget* target, XReturn (XTarget::* funcPtr)(XArg1));
70 template<
class XTarget,
typename XReturn,
typename XArg1,
typename XArg2 >
71 void RegisterSlot(std::string name, XTarget* target, XReturn (XTarget::* funcPtr)(XArg1, XArg2));
86 template<
typename XSignalSig >
89 KTDEBUG(processorlog,
"Registering signal <" << name <<
"> in processor <" << fConfigName <<
">");
91 fSignalMap.insert(SigMapVal(name, sig));
95 template<
class XTarget,
typename XReturn >
98 KTDEBUG(processorlog,
"Registering slot <" << name <<
"> in processor <" << fConfigName <<
">");
102 boost::function< XReturn () > *func =
new boost::function< XReturn () >(boost::bind(funcPtr, target));
105 fSlotMap.insert(SlotMapVal(name, slot));
109 template<
class XTarget,
typename XReturn,
typename XArg1 >
112 KTDEBUG(processorlog,
"Registering slot <" << name <<
"> in processor <" << fConfigName <<
">");
116 boost::function< XReturn (XArg1) > *func =
new boost::function< XReturn (XArg1) >(boost::bind(funcPtr, target, _1));
119 fSlotMap.insert(SlotMapVal(name, slot));
123 template<
class XTarget,
typename XReturn,
typename XArg1,
typename XArg2 >
126 KTDEBUG(processorlog,
"Registering slot <" << name <<
"> in processor <" << fConfigName <<
">");
130 boost::function< XReturn (XArg1, XArg2) > *func =
new boost::function< XReturn (XArg1, XArg2) >(boost::bind(funcPtr, target, _1, _2));
133 fSlotMap.insert(SlotMapVal(name, slot));
138 #define KT_REGISTER_PROCESSOR(proc_class, proc_name) \ 139 static ::scarab::registrar< ::Nymph::KTProcessor, proc_class, const std::string& > sProc##proc_class##Registrar( proc_name );
SlotMap::value_type SlotMapVal
void RegisterSlot(std::string name, XTarget *target, XReturn(XTarget::*funcPtr)())
SignalMap::iterator SigMapIt
std::map< std::string, KTSignalWrapper *> SignalMap
KTLOGGER(applog, "KTApplication")
ProcessorException(std::string const &why)
SignalMap::value_type SigMapVal
void RegisterSignal(std::string name, XProcessor *signalPtr)
SlotMap::iterator SlotMapIt
std::map< std::string, KTSlotWrapper *> SlotMap
Contains the logger class and macros, based on Kasper's KLogger class.