Commit 180a42c4 authored by Joseph Mirabel's avatar Joseph Mirabel

Update documentation of SignalTimeDependent + fix doxygen errors.

parent 5f7dd3f2
...@@ -7,3 +7,5 @@ FILE_PATTERNS = *.cc *.cpp *.h *.hh *.hxx ...@@ -7,3 +7,5 @@ FILE_PATTERNS = *.cc *.cpp *.h *.hh *.hxx
TAGFILES = \ TAGFILES = \
"@CMAKE_INSTALL_PREFIX@/share/doc/dynamic-graph-python.doxytag = @CMAKE_INSTALL_PREFIX@/share/doc/dynamic-graph-python" "@CMAKE_INSTALL_PREFIX@/share/doc/dynamic-graph-python.doxytag = @CMAKE_INSTALL_PREFIX@/share/doc/dynamic-graph-python"
EXAMPLE_PATH = @CMAKE_SOURCE_DIR@
...@@ -13,6 +13,6 @@ WARNING, ERROR). It is described in details here: \subpage subp_logger ...@@ -13,6 +13,6 @@ WARNING, ERROR). It is described in details here: \subpage subp_logger
int: \subpage subp_dbg_trace int: \subpage subp_dbg_trace
- If you just need to collect informations from signals (like rosbag). You can - 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 use an entity called Tracer inside the graph:\subpage tracerdoc . <br> A real
time version exists to write directly inside a memory buffer \subpage time version exists to write directly inside a memory buffer
tracerrealtimedoc \subpage tracerrealtimedoc
**/ **/
...@@ -65,5 +65,5 @@ test \endcode ...@@ -65,5 +65,5 @@ test \endcode
\section subp_dbg_trace_wrk_exp Working example \section subp_dbg_trace_wrk_exp Working example
A full working example is given here: A full working example is given here:
\include ../tests/debug-trace.cpp \include tests/debug-trace.cpp
*/ */
...@@ -22,8 +22,8 @@ The software graph structure is detailled in \subpage p_graph ...@@ -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 debugging your entities detailed instructions are given in \subpage debug
For citing the software in your research work please refer to \subpage For citing the software in your research work please refer to
subp_references \subpage subp_references
\namespace dynamicgraph This is the namespace where every object and class of \namespace dynamicgraph This is the namespace where every object and class of
this library is located. this library is located.
......
...@@ -85,7 +85,7 @@ public: ...@@ -85,7 +85,7 @@ public:
/** \name Logger related methods */ /** \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. /// Add string file and line to message.
void sendMsg(const std::string &msg, MsgType t = MSG_TYPE_INFO, void sendMsg(const std::string &msg, MsgType t = MSG_TYPE_INFO,
const char *file = "", int line = 0); const char *file = "", int line = 0);
......
...@@ -5,6 +5,7 @@ ...@@ -5,6 +5,7 @@
#define DYNAMIC_GRAPH_NULL_PTR_HH #define DYNAMIC_GRAPH_NULL_PTR_HH
namespace dynamicgraph { namespace dynamicgraph {
/// \cond
const class { const class {
public: public:
template <class T> operator T *() const { return 0; } template <class T> operator T *() const { return 0; }
...@@ -14,6 +15,7 @@ public: ...@@ -14,6 +15,7 @@ public:
private: private:
void operator&() const; void operator&() const;
} nullptr = {}; } nullptr = {};
/// \endcond
} // end of namespace dynamicgraph. } // end of namespace dynamicgraph.
......
...@@ -22,7 +22,7 @@ public: ...@@ -22,7 +22,7 @@ public:
ProcessList(); ProcessList();
}; };
/// \class This class gather information on a specific CPU. /// This class gather information on a specific CPU.
/// ///
class DYNAMIC_GRAPH_DLLAPI CPUData { class DYNAMIC_GRAPH_DLLAPI CPUData {
public: public:
...@@ -123,7 +123,7 @@ 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 /// This includes a list of CPU
class DYNAMIC_GRAPH_DLLAPI System { class DYNAMIC_GRAPH_DLLAPI System {
private: private:
......
...@@ -13,16 +13,49 @@ namespace dynamicgraph { ...@@ -13,16 +13,49 @@ namespace dynamicgraph {
signals, signals,
making sure its inputs are up to date on access, using a incrementing time making sure its inputs are up to date on access, using a incrementing time
tick as reference. tick as reference.
It works this way: for a given SignalTimeDependent S, the user manually
adds dependent signals through the It works this way. For a given SignalTimeDependent S,
use of the addDependency function. On access (calling the signal S - the user manually adds dependent signals through the use of the SignalTimeDependent::addDependency function.
operator () or access(Time) function), - On access (calling the signal S SignalTimeDependent::operator()(const Time&) or
if the dependent signals are not up-to-date, i.e. if their [last update] SignalTimeDependent::access(const Time&) function), if the dependent signals are not
time is less than the up-to-date, i.e. if their [last update] time is less than the current time,
current time, their value will be access ()'ed to bring them up-to-date. 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 Thus, the value of dependent signals can be accessed \b quickly and
accessCopy () function. \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> template <class T, class Time>
class SignalTimeDependent : public virtual Signal<T, Time>, class SignalTimeDependent : public virtual Signal<T, Time>,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment