Goby3 3.2.3
2025.05.13
Loading...
Searching...
No Matches
connect.h
Go to the documentation of this file.
1// Copyright 2011-2023:
2// GobySoft, LLC (2013-)
3// Massachusetts Institute of Technology (2007-2014)
4// Community contributors (see AUTHORS file)
5// File authors:
6// Toby Schneider <toby@gobysoft.org>
7//
8//
9// This file is part of the Goby Underwater Autonomy Project Libraries
10// ("The Goby Libraries").
11//
12// The Goby Libraries are free software: you can redistribute them and/or modify
13// them under the terms of the GNU Lesser General Public License as published by
14// the Free Software Foundation, either version 2.1 of the License, or
15// (at your option) any later version.
16//
17// The Goby Libraries are distributed in the hope that they will be useful,
18// but WITHOUT ANY WARRANTY; without even the implied warranty of
19// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
20// GNU Lesser General Public License for more details.
21//
22// You should have received a copy of the GNU Lesser General Public License
23// along with Goby. If not, see <http://www.gnu.org/licenses/>.
24
25// gives functions for connecting the slots and signals of the goby-acomms libraries together
26
27#ifndef GOBY_ACOMMS_CONNECT_H
28#define GOBY_ACOMMS_CONNECT_H
29
30#include <boost/bind/bind.hpp>
31#include <boost/signals2.hpp>
32
33namespace goby
34{
35namespace acomms
36{
38template <typename Signal, typename Slot> void connect(Signal* signal, Slot slot)
39{
40 signal->connect(slot);
41}
42
44template <typename Signal, typename Obj, typename A1>
45void connect(Signal* signal, Obj* obj, void (Obj::*mem_func)(A1))
46{
47 connect(signal, boost::bind(mem_func, obj, boost::placeholders::_1));
48}
49
51template <typename Signal, typename Obj, typename A1, typename A2>
52void connect(Signal* signal, Obj* obj, void (Obj::*mem_func)(A1, A2))
53{
54 connect(signal, boost::bind(mem_func, obj, boost::placeholders::_1, boost::placeholders::_2));
55}
56
58template <typename Signal, typename Obj, typename A1, typename A2, typename A3>
59void connect(Signal* signal, Obj* obj, void (Obj::*mem_func)(A1, A2, A3))
60{
61 connect(signal, boost::bind(mem_func, obj, boost::placeholders::_1, boost::placeholders::_2, boost::placeholders::_3));
62}
63
65template <typename Signal, typename Slot> void disconnect(Signal* signal, Slot slot)
66{
67 signal->disconnect(slot);
68}
69
71template <typename Signal, typename Obj, typename A1>
72void disconnect(Signal* signal, Obj* obj, void (Obj::*mem_func)(A1))
73{
74 disconnect(signal, boost::bind(mem_func, obj, boost::placeholders::_1));
75}
76
78template <typename Signal, typename Obj, typename A1, typename A2>
79void disconnect(Signal* signal, Obj* obj, void (Obj::*mem_func)(A1, A2))
80{
81 disconnect(signal, boost::bind(mem_func, obj, boost::placeholders::_1, boost::placeholders::_2));
82}
83
85template <typename Signal, typename Obj, typename A1, typename A2, typename A3>
86void disconnect(Signal* signal, Obj* obj, void (Obj::*mem_func)(A1, A2, A3))
87{
88 disconnect(signal, boost::bind(mem_func, obj, boost::placeholders::_1, boost::placeholders::_2, boost::placeholders::_3));
89}
90
91} // namespace acomms
92} // namespace goby
93
94#endif
void connect(Signal *signal, Slot slot)
connect a signal to a slot (e.g. function pointer)
Definition connect.h:38
void disconnect(Signal *signal, Slot slot)
disconnect a signal to a slot (e.g. function pointer)
Definition connect.h:65
The global namespace for the Goby project.