iLab Neuromorphic Robotics Toolkit  0.1
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
SystemProfiler.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_DEBUGGING_SYSTEMPROFILER_H
37 #define INCLUDE_NRT_CORE_DEBUGGING_SYSTEMPROFILER_H
38 
41 
42 namespace nrt
43 {
44  //! Simple system profiler (shared event logger)
45  /*! This is a Singleton EventLog. See EventLog for the user interface. In this singleton, we hold simple bool
46  variables which users should check for before they log an event. This relies on the user's honesty but is faster
47  than doing such checks during the logging itself, thus:
48 
49  @code
50  if (nrt::SystemProfiler::instance().profileBlackboard) {
51  // use some CPU cycles to build a nice log entry
52  nrt::SystemProfiler::instance().checkpoint(mymessage);
53  }
54  @endcode
55 
56  Mostly, only people who "know what they are doing" (i.e., developers of the Blackboard system or of the Log
57  functions, etc) should use SystemProfiler directly. The nrt::Manager exposes some command-line arguments which
58  allow end users to turn different types of logging on or off.
59 
60  \ingroup debugging */
61  class SystemProfiler : public Singleton<SystemProfiler>, public EventLog
62  {
63  public:
64  //! Constructor
65  SystemProfiler() = default;
66 
67  //! Do we want to profile Blackboard operation?
68  bool profileBlackboard = false;
69 
70  //! Do we want to profile NRT_INFO() and such log messages?
71  bool profileLogMessages = false;
72  };
73 
74 }
75 
76 #endif // INCLUDE_NRT_CORE_DEBUGGING_SYSTEMPROFILER_H
77