From 180a42c4c52d2eae46375d38e2a994995e32cf7e Mon Sep 17 00:00:00 2001 From: Joseph Mirabel <jmirabel@laas.fr> Date: Wed, 2 Oct 2019 10:43:33 +0200 Subject: [PATCH] Update documentation of SignalTimeDependent + fix doxygen errors. --- doc/Doxyfile.extra.in | 4 +- doc/additionalDoc/debug-doc.h | 4 +- doc/additionalDoc/debug-trace-doc.h | 2 +- doc/additionalDoc/package.h | 4 +- include/dynamic-graph/entity.h | 2 +- include/dynamic-graph/null-ptr.hh | 2 + include/dynamic-graph/process-list.hh | 4 +- include/dynamic-graph/signal-time-dependent.h | 53 +++++++++++++++---- 8 files changed, 56 insertions(+), 19 deletions(-) diff --git a/doc/Doxyfile.extra.in b/doc/Doxyfile.extra.in index 6aa319a..156f8f2 100644 --- a/doc/Doxyfile.extra.in +++ b/doc/Doxyfile.extra.in @@ -6,4 +6,6 @@ IMAGE_PATH = @CMAKE_SOURCE_DIR@/doc/pictures \ FILE_PATTERNS = *.cc *.cpp *.h *.hh *.hxx TAGFILES = \ -"@CMAKE_INSTALL_PREFIX@/share/doc/dynamic-graph-python.doxytag = @CMAKE_INSTALL_PREFIX@/share/doc/dynamic-graph-python" \ No newline at end of file +"@CMAKE_INSTALL_PREFIX@/share/doc/dynamic-graph-python.doxytag = @CMAKE_INSTALL_PREFIX@/share/doc/dynamic-graph-python" + +EXAMPLE_PATH = @CMAKE_SOURCE_DIR@ diff --git a/doc/additionalDoc/debug-doc.h b/doc/additionalDoc/debug-doc.h index 7028e27..cb14c14 100644 --- a/doc/additionalDoc/debug-doc.h +++ b/doc/additionalDoc/debug-doc.h @@ -13,6 +13,6 @@ WARNING, ERROR). It is described in details here: \subpage subp_logger int: \subpage subp_dbg_trace - If you just need to collect informations from signals (like rosbag). You can use an entity called Tracer inside the graph:\subpage tracerdoc . <br> A real -time version exists to write directly inside a memory buffer \subpage -tracerrealtimedoc +time version exists to write directly inside a memory buffer +\subpage tracerrealtimedoc **/ diff --git a/doc/additionalDoc/debug-trace-doc.h b/doc/additionalDoc/debug-trace-doc.h index 8900be9..1cf0ef6 100644 --- a/doc/additionalDoc/debug-trace-doc.h +++ b/doc/additionalDoc/debug-trace-doc.h @@ -65,5 +65,5 @@ test \endcode \section subp_dbg_trace_wrk_exp Working example A full working example is given here: -\include ../tests/debug-trace.cpp +\include tests/debug-trace.cpp */ diff --git a/doc/additionalDoc/package.h b/doc/additionalDoc/package.h index 1deb6be..1945511 100644 --- a/doc/additionalDoc/package.h +++ b/doc/additionalDoc/package.h @@ -22,8 +22,8 @@ The software graph structure is detailled in \subpage p_graph For debugging your entities detailed instructions are given in \subpage debug -For citing the software in your research work please refer to \subpage -subp_references +For citing the software in your research work please refer to +\subpage subp_references \namespace dynamicgraph This is the namespace where every object and class of this library is located. diff --git a/include/dynamic-graph/entity.h b/include/dynamic-graph/entity.h index 716dd34..1a4b33e 100644 --- a/include/dynamic-graph/entity.h +++ b/include/dynamic-graph/entity.h @@ -85,7 +85,7 @@ public: /** \name Logger related methods */ /** \{*/ - /// \brief Send messages \param msg with level t. + /// \brief Send messages \c msg with level \c t. /// Add string file and line to message. void sendMsg(const std::string &msg, MsgType t = MSG_TYPE_INFO, const char *file = "", int line = 0); diff --git a/include/dynamic-graph/null-ptr.hh b/include/dynamic-graph/null-ptr.hh index e1715ef..ee84493 100644 --- a/include/dynamic-graph/null-ptr.hh +++ b/include/dynamic-graph/null-ptr.hh @@ -5,6 +5,7 @@ #define DYNAMIC_GRAPH_NULL_PTR_HH namespace dynamicgraph { +/// \cond const class { public: template <class T> operator T *() const { return 0; } @@ -14,6 +15,7 @@ public: private: void operator&() const; } nullptr = {}; +/// \endcond } // end of namespace dynamicgraph. diff --git a/include/dynamic-graph/process-list.hh b/include/dynamic-graph/process-list.hh index 6725b98..54c99d0 100644 --- a/include/dynamic-graph/process-list.hh +++ b/include/dynamic-graph/process-list.hh @@ -22,7 +22,7 @@ public: ProcessList(); }; -/// \class This class gather information on a specific CPU. +/// This class gather information on a specific CPU. /// class DYNAMIC_GRAPH_DLLAPI CPUData { public: @@ -123,7 +123,7 @@ public: } }; -/// \class This class gathers information on a computer. +/// This class gathers information on a computer. /// This includes a list of CPU class DYNAMIC_GRAPH_DLLAPI System { private: diff --git a/include/dynamic-graph/signal-time-dependent.h b/include/dynamic-graph/signal-time-dependent.h index c834d61..ca1115d 100644 --- a/include/dynamic-graph/signal-time-dependent.h +++ b/include/dynamic-graph/signal-time-dependent.h @@ -13,16 +13,49 @@ namespace dynamicgraph { signals, making sure its inputs are up to date on access, using a incrementing time tick as reference. - It works this way: for a given SignalTimeDependent S, the user manually - adds dependent signals through the - use of the addDependency function. On access (calling the signal S - operator () or access(Time) function), - if the dependent signals are not up-to-date, i.e. if their [last update] - time is less than the - current time, their value will be access ()'ed to bring them up-to-date. - Thus, the value of dependent - signals can be accessed \b quickly and \b repeatedly through the - accessCopy () function. + + It works this way. For a given SignalTimeDependent S, + - the user manually adds dependent signals through the use of the SignalTimeDependent::addDependency function. + - On access (calling the signal S SignalTimeDependent::operator()(const Time&) or + SignalTimeDependent::access(const Time&) function), if the dependent signals are not + up-to-date, i.e. if their [last update] time is less than the current time, + their value will be SignalTimeDependent::access ()'ed to bring them up-to-date. + + Thus, the value of dependent signals can be accessed \b quickly and + \b repeatedly through the Signal::accessCopy () function. + + An example: + \code + class MyEntity : public Entity { + public: + // Some signal dependencies + SignalPtr<T,int> dep1, dep2; + SignalTimeDependent<T,int> signal; + + MyEntity (const std::string& name) + : Entity (name) + , signal ( + // Set the function that computes the signal value + boost::bind (&Entity::computeSignal, this, _1, _2), + // Declare the dependencies + dep1 << dep2, + "signalname") + {} + + T& computeSignal (T& res, int time) + { + // The accesses below update the signal if necessary. + dep1(time); + dep1.access(time); + dep1.recompute(time); + // If dep1 and dep2 are already up-to-date, for a faster access, use + dep1.accessCopy(); + dep2.accessCopy(); + + // Compute res + return res; + } + \endcode */ template <class T, class Time> class SignalTimeDependent : public virtual Signal<T, Time>, -- GitLab