iLab Neuromorphic Robotics Toolkit  0.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
BlackboardGUIdataListener.H
Go to the documentation of this file.
1 /*! @file
2  @author Laurent Itti
3  @copyright GNU Public License (GPL v3)
4  @section License
5  @verbatim
6  // ////////////////////////////////////////////////////////////////////////
7  // The iLab Neuromorphic Robotics Toolkit (NRT) //
8  // Copyright 2010-2012 by the University of Southern California (USC) //
9  // and the iLab at USC. //
10  // //
11  // iLab - University of Southern California //
12  // Hedco Neurociences Building, Room HNB-10 //
13  // Los Angeles, Ca 90089-2520 - USA //
14  // //
15  // See http://ilab.usc.edu for information about this project. //
16  // ////////////////////////////////////////////////////////////////////////
17  // This file is part of The iLab Neuromorphic Robotics Toolkit. //
18  // //
19  // The iLab Neuromorphic Robotics Toolkit is free software: you can //
20  // redistribute it and/or modify it under the terms of the GNU General //
21  // Public License as published by the Free Software Foundation, either //
22  // version 3 of the License, or (at your option) any later version. //
23  // //
24  // The iLab Neuromorphic Robotics Toolkit is distributed in the hope //
25  // that it will be useful, but WITHOUT ANY WARRANTY; without even the //
26  // implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR //
27  // PURPOSE. See the GNU General Public License for more details. //
28  // //
29  // You should have received a copy of the GNU General Public License //
30  // along with The iLab Neuromorphic Robotics Toolkit. If not, see //
31  // <http://www.gnu.org/licenses/>. //
32  // ////////////////////////////////////////////////////////////////////////
33  @endverbatim */
34 
35 
36 #ifndef INCLUDE_NRT_CORE_BLACKBOARD_DETAILS_BLACKBOARDGUIDATALISTENER_H
37 #define INCLUDE_NRT_CORE_BLACKBOARD_DETAILS_BLACKBOARDGUIDATALISTENER_H
38 
40 
41 namespace nrt
42 {
43  //! Base class for a listener for GUIdata changes on a Blackboard
44  /*! GUIdata listeners get called each time some GUIdata is updated. The Blackboard master is the central repository
45  for GUIdata. A GUI may set some data (eg., move a module in the workspace) by communicating with its local
46  blackboard, which will push the data to the master, then contacting bacl all listeners.
47 
48  \ingroup blackboard */
50  {
51  public:
52  //! Constructor
53  /*! After construction, the listener needs to be activated by calling activate(). This is not done during
54  construction as objects that derive from ParamChangeListener and overload onBlackboardGUIdata() will not be
55  fully constructed yet by the time the base class constructor is invoked, which would result in a
56  pure virtual function called fatal error. */
58 
59  //! Activate the listener (start listening)
60  /*! onBlackboardGUIdata() may be called immediately upon activation. */
61  void activate();
62 
63  //! De-activate the listener (stop listening)
64  void deactivate();
65 
66  //! Virtual destructor for safe inheritance
67  /*! If needed, this will automatically deactivate() first. */
69 
70  //! Callback function called when new GUI data arrives
71  /*! Derived classes must overload this function and take the desired action upon new data. */
72  virtual void onBlackboardGUIdata(std::string const & key, nrt::blackboard::GUIdata const & gd) = 0;
73 
74  private:
75  bool activated;
76  };
77 }
78 
79 #endif // INCLUDE_NRT_CORE_BLACKBOARD_DETAILS_BLACKBOARDGUIDATALISTENER_H