14 #ifndef ECL_SIGSLOTS_SLOT_HPP_ 15 #define ECL_SIGSLOTS_SLOT_HPP_ 22 #include <ecl/config/macros.hpp> 23 #include <ecl/utilities/void.hpp> 47 template <
typename Data=Vo
id>
58 Slot(
void (*f)(Data)) : sigslot(NULL) {
59 sigslot =
new SigSlot<Data>(
f);
72 Slot(
void (*f)(Data),
const std::string &topic) : sigslot(NULL) {
73 sigslot =
new SigSlot<Data>(
f);
87 Slot(
void (C::*f)(Data), C &c) : sigslot(NULL) {
88 sigslot =
new SigSlot<Data>(f,c);
102 template <
typename C>
103 Slot(
void (C::*f)(Data), C &c,
const std::string& topic) : sigslot(NULL) {
104 sigslot =
new SigSlot<Data>(f,c);
119 Slot(
const Slot& slot) {
121 sigslot->incrHandles();
132 sigslot->decrHandles();
133 if ( sigslot->handles() == 0 ) {
143 const std::set<std::string>& connections() {
return sigslot->subscribedTopics(); }
152 void connect(
const std::string& topic) { sigslot->connectSlot(topic); }
158 void disconnect() { sigslot->disconnect(); }
161 SigSlot<Data>* sigslot;
188 sigslot =
new SigSlot<Void>(f);
199 Slot(
VoidFunction f,
const std::string &topic) : sigslot(NULL) {
200 sigslot =
new SigSlot<Void>(f);
212 template <
typename C>
213 Slot(
void (C::*f)(
void), C &c) : sigslot(NULL) {
214 sigslot =
new SigSlot<Void>(f,c);
226 template <
typename C>
227 Slot(
void (C::*f)(
void), C &c,
const std::string &topic) : sigslot(NULL) {
228 sigslot =
new SigSlot<Void>(f,c);
242 Slot(
const Slot& slot) {
244 sigslot->incrHandles();
254 sigslot->decrHandles();
255 if ( sigslot->handles() == 0 ) {
267 void connect(
const std::string& topic) { sigslot->connectSlot(topic); }
273 void disconnect() { sigslot->disconnect(); }
276 SigSlot<Void>* sigslot;
void f(int i) ecl_debug_throw_decl(StandardException)