diff --git a/CMakeLists.txt b/CMakeLists.txt index 95c2206fef38c8d704bacbb54fa3ad13671a6b07..92487d179924f0ed309c739343e66eee7bd10f0b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,17 +1,4 @@ # Copyright 2010, Olivier Stasse, JRL, CNRS/AIST -# -# This file is part of dynamic-graph. -# dynamic-graph is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# dynamic-graph is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Lesser Public License for more details. You should have -# received a copy of the GNU Lesser General Public License along with -# dynamic-graph. If not, see <http://www.gnu.org/licenses/>. CMAKE_MINIMUM_REQUIRED(VERSION 2.6) @@ -19,7 +6,6 @@ INCLUDE(cmake/base.cmake) INCLUDE(cmake/boost.cmake) INCLUDE(cmake/eigen.cmake) INCLUDE(cmake/pthread.cmake) -INCLUDE(cmake/cpack.cmake) SET(PROJECT_ORG stack-of-tasks) SET(PROJECT_NAME dynamic-graph) @@ -42,9 +28,6 @@ GENERATE_CONFIGURATION_HEADER( GENERATE_CONFIGURATION_HEADER( ${HEADER_DIR} config-tracer-real-time.hh DG_TRACERREALTIME tracer_real_time_EXPORTS) -GENERATE_CONFIGURATION_HEADER( - ${HEADER_DIR} - config-contiifstream.hh DG_CONTIIFSTREAM contiifstream_EXPORTS) # FIXME: to be changed into lib/dynamic-graph # to avoid name collision when installing dynamic-graph in /usr. @@ -69,4 +52,3 @@ ADD_SUBDIRECTORY(include/${PROJECT_NAME}) ADD_SUBDIRECTORY(tests) SETUP_PROJECT_FINALIZE() -SETUP_PROJECT_CPACK() diff --git a/cmake b/cmake index a33ae51993e5bc22ae2e5cd5131f85bd2ee6c8d1..1d9aeca25e970d2d967fd5be0fb93fe961db121b 160000 --- a/cmake +++ b/cmake @@ -1 +1 @@ -Subproject commit a33ae51993e5bc22ae2e5cd5131f85bd2ee6c8d1 +Subproject commit 1d9aeca25e970d2d967fd5be0fb93fe961db121b diff --git a/doc/Doxyfile.extra.in b/doc/Doxyfile.extra.in index 9195d85ec66448b6ab7c87e8c1a69c13a76aad72..6aa319ac48d5b94db0ea62c52fd53685b76657dc 100644 --- a/doc/Doxyfile.extra.in +++ b/doc/Doxyfile.extra.in @@ -4,3 +4,6 @@ IMAGE_PATH = @CMAKE_SOURCE_DIR@/doc/pictures \ @CMAKE_SOURCE_DIR@/doc/figures 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 diff --git a/doc/additionalDoc/debug-doc.h b/doc/additionalDoc/debug-doc.h new file mode 100644 index 0000000000000000000000000000000000000000..381bcf944634c38b8c01d96d32e77e475546571c --- /dev/null +++ b/doc/additionalDoc/debug-doc.h @@ -0,0 +1,10 @@ +/** +\page debug Debugging + +They are several ways to perform debugging in dynamic-graph depending on your needs or situation: +- If you just need to collect informations from signals (like rosbag). You can use +an entity called Tracer inside the graph:\subpage tracerdoc +- programmatically in C++ with macros \subpage subp_dbg_trace +- programmatically inside the entity in C++ using member of the entities: +\subpage tracerrealtimedoc +**/ diff --git a/doc/additionalDoc/debug-trace-doc.h b/doc/additionalDoc/debug-trace-doc.h new file mode 100644 index 0000000000000000000000000000000000000000..ba906931c83331487f6f8c8bec2377ca50f9bc51 --- /dev/null +++ b/doc/additionalDoc/debug-trace-doc.h @@ -0,0 +1,72 @@ +/** +\page subp_dbg_trace Debugging with macros and level + +\section subp_dbg_trace_intro Introduction +The idea of this class and collection of MACROS is to specify +a level for a message, and record the message in a stream according to this level. +In addition there are mechanisms allowing that no time +is wasted in condition test. You can therefore let the debugging messages +inside the code without impact on performances. + +\section subp_dbg_trace_set_on_macros Setting up dgDEBUG macros + +To allow message display the entity must be compiled with the macro +\code +#define VP_DEBUG 1 +\endcode +Commenting or removing this macro disable all the messages specified +by the following macros. + +The level up to which the messages are accepted for display is +specified by: +\code +#define VP_DEBUG_MODE 50 +\endcode + +In the constructor of the entity, the file where all the messages +are written is specified by: +\code + dynamicgraph::dgDEBUGFLOW.openFile("/tmp/dynamic-graph-traces.txt"); +\endcode + +\section subp_dbg_trace_using_macros Using dgDEBUG macros + +To print that the beginning of a method is being executed use the following macros: +\code + dgDEBUGIN(5); +\endcode +5 here specifies the minimum level that you be specified by VP_DEBUG_MODE for this message +to be displayed. + +It will generate the following output: +\code +/path_to/dynamic-graph/tests/debug-trace.cpp: testDebugTrace(#46) :# In { +\endcode +The output displays the name of the source file, the name of the method, +the line where is the macro, and the message itself. + +When going out of the method: +\code + dgDEBUGOUT(5); +\endcode + +This generates the following output: +\code +/path_to/dynamic-graph/tests/debug-trace.cpp: testDebugTrace(#54) :# Out } +\endcode + +A message inside the code is written through: +\code + dgDEBUG(5) << "Here is a test" << std::endl; +\endcode + +This generates the following output: +\code +/path_to/dynamic-graph/tests/debug-trace.cpp: testDebugTrace(#52) :Here is a test +\endcode + +\section subp_dbg_trace_wrk_exp Working example + +A full working example is given here: +\include ../tests/debug-trace.cpp + */ diff --git a/doc/additionalDoc/entity.h b/doc/additionalDoc/entity.h new file mode 100644 index 0000000000000000000000000000000000000000..585dba6f91df87a8adb24735e82423536563c530 --- /dev/null +++ b/doc/additionalDoc/entity.h @@ -0,0 +1,50 @@ +/** +\page subpage_entities Entities + +\section section_entities Entities +\subsection entity_definition General definition +\image html entity.png + +Despite the fact that it looks very similar to a ROS node or a CORBA/OpenRTM server, an entity is simply a C++ object. +The main idea is that this entity is providing mostly a data-driven functionnality working at very high rate (\f$ 200 Hz\f$ or \f$ 1 kHz \f$) +and should have a minimal computational time foot-print. + +For this \subpage subp_signals (or ports to use a more classical terminology) are providing a time dependency between data. +To implement this, an output signal is linked with a method of the entity. The method calls input signals or use other means +to get the needed data. +It might be provided by the connection with remote computers through a middleware, or specific protocols, +but in general the external data is based upon the sensor values provided by a "Device" entity. +For this reason the signal evaluations are realized through the cascade of dependencies and start from the evaluation of an input +signal of a periodic node (in general the device). This is realized inside a \b real-time thread. + +To add flexibility to a node, it is possible to add command with arguments to modify the internal behavior of the entity +or get information from the entity. +As a command is in general asynchronous and rare with respect to the data-flow scheme for the signals the command is in general +executed in a \b none-real-time thread. + +\subsection entity_classes Entity class +Entities are implemented as C++ classes and compiled as dynamic libraries. They can be loaded and instancied dynamically. +It is therefore necessary to specify the location of their dynamical libraries. +However given the time it might take to load the library, it is not advised to do that during a control-law computation. +Entity instanciation also implies memory allocation which is also time consuming and thus not advised inside a real-time thread. + +The entities will be placed in ${PREFIX}/lib/plugin (since this may change, it is advised to +check the install log or the CMakeLists.txt file to check the installation path). + +\subsection entities List of entities in this package +Since most of the functionality in projects using the dynamic-graph framework +is exposed from entities, here is a short description of all the entities contained in +this package. Note that most entities are contained in a binary file that closely matches +the entities' names in the scripts; loading this file with the plugin loader will +enable creation of this entity through the factory. +\li \ref tracerdoc +\li \ref tracerrealtimedoc + +\subsection specific_semantics Specific semantics with entities + +It is possible to derive classes and apply specific semantic for the entities. In our case we are interested in specific control semantics: +\li Tasks (more information <a href="http://stack-of-tasks.github.io/sot-core/doxygen/HEAD/a00089.html">here</a>) +\li Features (more information <a href="http://stack-of-tasks.github.io/sot-core/doxygen/HEAD/a00030.html">here</a>) +\li Solver (more information <a href="http://stack-of-tasks.github.io/sot-core/doxygen/HEAD/a00078.html">here</a>) + +*/ diff --git a/doc/additionalDoc/extension.h b/doc/additionalDoc/extension.h new file mode 100644 index 0000000000000000000000000000000000000000..d3f9412735ba20ae97bbc2d63c1976f50286d695 --- /dev/null +++ b/doc/additionalDoc/extension.h @@ -0,0 +1,38 @@ +/** +\page subp_how_to_use Using this package + +\section usecase How to use this package + +\subsection use_programmatically General introduction +Objects, which are derived from Entities (base class dynamicgraph::Entity), can be +declared within the code and compiled to shared libraries (.so/.dll files). +These libraries can be loaded at run-time using the PluginLoader methods, +and at the same time register their class names to the Factory (see the +examples in the <a href="http://projects.laas.fr/gepetto/doc/stack-of-tasks/sot-core/master/doxygen-html">sot-core documentation</a> +for advanced control examples). + +The Factory can then create instances of these objects and subsequently +register them in the Pool, where they can be listed, accessed, and acted upon +(see PoolStorage documentation). Basic commands defined by entities include +signal connection graph file generation, help and name print, and signals. +This is usually done through a scripting language such as python (see +<a hef="https://github.com/stack-of-tasks/dynamic-graph-python">dynamic-graph-python</a>) + +The singletons made available by including the corresponding headers in this +module are: +\li dynamicgraph::FactoryStorage +\li dynamicgraph::PoolStorage + +For an example of a program creating entities in C++, see the unit test +test_pool.cpp (in your package source directory/tests). + +\subsection Tutorial +A tutorial is available <a href="http://stack-of-tasks.github.io/dynamic-graph-tutorial/">here</a> + +\section sec_htw_helpers Helpers + +When writing entities you might use some macros which are very useful to write your class. +They are given also in the <a href="http://projects.laas.fr/gepetto/doc/stack-of-tasks/sot-core/master/doxygen-html">sot-core</a> package as well. + + +*/ diff --git a/doc/additionalDoc/factory.h b/doc/additionalDoc/factory.h new file mode 100644 index 0000000000000000000000000000000000000000..07a1941b8cc927f89edc27edbcfc22577bf12239 --- /dev/null +++ b/doc/additionalDoc/factory.h @@ -0,0 +1,6 @@ +/** +\page subp_factory Factory +\section sec_factory Factory + +The class \ref dynamicgraph::FactoryStorage is a singleton which register the entity classes and which is allowing the instancation of such classes. +*/ diff --git a/doc/additionalDoc/graph.h b/doc/additionalDoc/graph.h new file mode 100644 index 0000000000000000000000000000000000000000..cf567dc8f8525d143e58623a279a3a3f3913a41f --- /dev/null +++ b/doc/additionalDoc/graph.h @@ -0,0 +1,20 @@ +/** +\page p_graph Graph + + +In this package, the graph considered are directed graphs. + +In dynamic-graph a graph is build with: +- computational nodes which are entities \subpage subpage_entities. +- directed edges which are created by connecting input and output signals \subpage subp_signals. +- managing the nodes is done through a factory \subpage subp_factory providing classes and a way to create instances from this list of classes. +- the instances of node are handled through a pool \subpage subp_pool + +We strongly recommend to use a scripting language such as Python to +manage the graph. +See <c>dynamic-graph-python</c> for more information on binding dynamic-graph with Python. + +It is possible to display the graph of entities \subpage writegraphdoc + + +*/ diff --git a/doc/additionalDoc/installation.h b/doc/additionalDoc/installation.h new file mode 100644 index 0000000000000000000000000000000000000000..e0e14605b369c7039885fa9f272b39751dd0c8dc --- /dev/null +++ b/doc/additionalDoc/installation.h @@ -0,0 +1,35 @@ +/** +\page subp_installation Installation + +\section sec_inst_dep Dependencies + +dynamic-graph depends on: +<ul> +<li> boost </li> +<li> eigen </li> +<li> cmake </li> +</ul> + +\section sec_inst_get_src Getting the source + +The sources are available through github at the following URL: +<a href="https://github.com/stack-of-tasks/dynamic-graph">https://github.com/stack-of-tasks/dynamic-graph</a> + +To clone: +\code +git clone https://github.com/stack-of-tasks/dynamic-graph.git +\endcode + + +\section sec_inst_comp Compiling + +\code +cd dynamic-graph +mkdir _build +cd _build +cmake .. -DCMAKE_BUILD_TYPE=RELEASE +make +\endcode + + +*/ diff --git a/doc/additionalDoc/introduction.h b/doc/additionalDoc/introduction.h new file mode 100644 index 0000000000000000000000000000000000000000..c24ac33aebb46581eae5bfd359dbe2af47587357 --- /dev/null +++ b/doc/additionalDoc/introduction.h @@ -0,0 +1,65 @@ +/** +\page subp_concept_intro General introduction +\section intro_dynamicGraph Introduction + +The dynamic-graph package is used to connect computation nodes, "entities" +together using a graph system, akin to what Simulink does. Entities are connected +through input and output signals. +With the building blocks this package provides, you can easily create a full computation graph +for a given problem. It is the basis for the stack of tasks operation. + + +\subsection controlgraph Exemple: Real-time control + +<p>To give a more concrete example, the real-time control used by the Gepetto group for the humanoid robot HRP-2 +is detailled.</p> +<p> +Real-time control system are usually driven by a cyclic computational node which +needs to send a control reference value to each motors of a robot. To compute this +control reference values, sensor values need to be provided. +In the Stack-Of-Tasks special entities called Device are used to +provide an abstract interface to the hardware.</p> +A scheme of the real-time control graph used for the humanoid robot HRP-2 is depicted in the following figure: + +\image html Concept-Software-Fig.png + +You can find an example of a real example of control graph at \ref writegraphdoc. + +<p>The device therefore has a specific input which should contain the control vector. +This control vector is the result of a computation solving a control problem. +The entity in charge of solving this control problem is called "Solver" in the previous +figure. +In the SoT framework it is often cast as an optimization problem. +This optimization problem is build using a control "Task" (not to be confused with the +general word task). A control "Task" regulates the difference with a "Feature" computed +on the current robot state and a "Desired Feature". For instance when walking, the regulated +feature is the robot's Center-Of-Mass (CoM) position. The "Feature" is computed using a +library using the robot model and the sensor value. The entity making this computation is "Dyn". +A walking pattern generator using foot-steps position given in advance generates the desired +value for the CoM. +Note that the "Dyn" entity uses the sensor provided by the entity "Robot". </p> + +<p> +From a pure computer science viewpoint we wish to avoid recomputing data such as articular Jacobians +when this is unnecessary. Therefore the data generated by an entity through signals may have two types of +dependencies: one dependency related to time and dependencies on other signals. Internally an entity +does not recompute the data if no new information is available, it is simply providing the same information +computed before. Please note that this package provides only the computational framework to realize +the data dependency and the entities. Solvers, libraries to compute mechanical quantities are provided +in different packages. +</p> + +<p> +Finally in order to dynamically create a graph, it is possible \b on-line to load classes of entities and +create instances of entities.</p> + +\subsection Functionnalities + +\li Support for extensions and modules using dynamic link libraries +\li Template-based signal definition, independent +\li Type-safe connection of input and output signals +\li On-demand signal computation as well as a caching system for signal values allow fast +computation of signal values, which is a critical point for real-time systems\n +See \ref scriptingabout + +*/ diff --git a/doc/additionalDoc/package.h b/doc/additionalDoc/package.h index e169f7709f0e1135010fa57842194710d5cecb47..76dd15c696d752952b878f04da695b3cc7cd4208 100644 --- a/doc/additionalDoc/package.h +++ b/doc/additionalDoc/package.h @@ -6,190 +6,28 @@ * * CNRS/AIST * - * This file is part of dynamic-graph. - * dynamic-graph is free software: you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation, either version 3 of - * the License, or (at your option) any later version. - * dynamic-graph is distributed in the hope that it will be - * useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. You should - * have received a copy of the GNU Lesser General Public License along - * with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. */ /** \mainpage +The dynamic-graph aims at building computational graphs for real-time control. +It provides the basic software functionnalities. +A more detailed introduction is available at \subpage subp_concept_intro. -\section intro_dynamicGraph Introduction - -The dynamic-graph package is used to connect computation nodes, "entities" -together using a graph system, akin to what Simulink does. Entities are connected -through input and output signals. -With the building blocks this package provides, you can easily create a full computation graph -for a given problem. It is the basis for the stack of tasks operation. - - -\subsection controlgraph Exemple: Real-time control - -<p>To give a more concrete example, the real-time control used by the Gepetto group for the humanoid robot HRP-2 -is detailled.</p> -<p> -Real-time control system are usually driven by a cyclic computational node which -needs to send a control reference value to each motors of a robot. To compute this -control reference values, sensor values need to be provided. -In the Stack-Of-Tasks special entities called Device are used to -provide an abstract interface to the hardware.</p> -A scheme of the real-time control graph used for the humanoid robot HRP-2 is depicted in the following figure: - -\image html Concept-Software-Fig.png - -<p>The device therefore has a specific input which should contain the control vector. -This control vector is the result of a computation solving a control problem. -The entity in charge of solving this control problem is called "Solver" in the previous -figure. -In the SoT framework it is often cast as an optimization problem. -This optimization problem is build using a control "Task" (not to be confused with the -general word task). A control "Task" regulates the difference with a "Feature" computed -on the current robot state and a "Desired Feature". For instance when walking, the regulated -feature is the robot's Center-Of-Mass (CoM) position. The "Feature" is computed using a -library using the robot model and the sensor value. The entity making this computation is "Dyn". -A walking pattern generator using foot-steps position given in advance generates the desired -value for the CoM. -Note that the "Dyn" entity uses the sensor provided by the entity "Robot". </p> - -<p> -From a pure computer science viewpoint we wish to avoid recomputing data such as articular Jacobians -when this is unnecessary. Therefore the data generated by an entity through signals may have two types of -dependencies: one dependency related to time and dependencies on other signals. Internally an entity -does not recompute the data if no new information is available, it is simply providing the same information -computed before. Please note that this package provides only the computational framework to realize -the data dependency and the entities. Solvers, libraries to compute mechanical quantities are provided -in different packages. -</p> - -<p> -Finally in order to dynamically create a graph, it is possible \b on-line to load classes of entities and -create instances of entities.</p> - -\subsection Functionnalities - -\li Support for extensions and modules using dynamic link libraries -\li Template-based signal definition, independent -\li Type-safe connection of input and output signals -\li On-demand signal computation as well as a caching system for signal values allow fast -computation of signal values, which is a critical point for real-time systems\n -See \ref scriptingabout - -\section entity Computational Entity -\image html entity.png - -\subsection entity_definition General definition -Despite the fact that it looks very similar to a ROS node or a CORBA/OpenRTM server, an entity is simply a C++ object. -The main idea is that this entity is providing mostly a data-driven functionnality working at very high rate (\f$ 200 Hz\f$ or \f$ 1 kHz \f$) -and should have a minimal computational time foot-print. - -For this signals (or ports to use a more classical terminology) are providing a time dependency between data. -To implement this, an output signal is linked with a method of the entity. The method calls input signals or use other means -to get the needed data. -It might be provided by the connection with remote computers through a middleware, or specific protocols, -but in general the external data is based upon the sensor values provided by a "Device" entity. -For this reason the signal evaluations are realized through the cascade of dependencies and start from the evaluation of an input -signal of a periodic node (in general the device). This is realized inside a \b real-time thread. - -To add flexibility to a node, it is possible to add command with arguments to modify the internal behavior of the entity -or get information from the entity. -As a command is in general asynchronous and rare with respect to the data-flow scheme for the signals the command is in general -executed in a \b none-real-time thread. - -\subsection entity_classes Entity class -Entities are implemented as C++ classes and compiled as dynamic libraries. They can be loaded and instancied dynamically. -It is therefore necessary to specify the location of their dynamical libraries. -However given the time it might take to load the library, it is not advised to do that during a control-law computation. -Entity instanciation also implies memory allocation which is also time consuming and thus not advised inside a real-time thread. - -The entities will be placed in ${PREFIX}/lib/plugin (since this may change, it is advised to -check the install log or the CMakeLists.txt file to check the installation path). - -\subsection entities List of entities in this package -Since most of the functionality in projects using the dynamic-graph framework -is exposed from entities, here is a short description of all the entities contained in -this package. Note that most entities are contained in a binary file that closely matches -the entities' names in the scripts; loading this file with the plugin loader will -enable creation of this entity through the factory. -\li \ref tracerdoc -\li \ref tracerrealtimedoc - -\subsection specific_semantics Specific semantics with entities - -It is possible to derive classes and apply specific semantic for the entities. In our case we are interested in specific control semantics: -\li Tasks (more information <a href="http://stack-of-tasks.github.io/sot-core/doxygen/HEAD/a00089.html">here</a>) -\li Features (more information <a href="http://stack-of-tasks.github.io/sot-core/doxygen/HEAD/a00030.html">here</a>) -\li Solver (more information <a href="http://stack-of-tasks.github.io/sot-core/doxygen/HEAD/a00078.html">here</a>) - -\section sigintro Signals - -Entities can output different types of signals. All signals are templated by a Time -tick type parameter (which is used in the caching of signals) - usually \c int. Signals -are also templated after the type of data they accept or provide. For example: -(example) -For a more detailed programmer-oriented description of signals, please see \ref signals - -\section graph Graph - -In this package, the graph considered are directed graphs. - -\subsection factory Factory - -The class \ref dynamicgraph::FactoryStorage is a singleton which register the entity classes and which is allowing the instancation of such classes. - -\subsection pool Pool -The class \ref dynamicgraph::PoolStorage keeps track of the entities instanciated with the factory. -The entities are the graph nodes. Signals are constructed during the class instanciation, they do not live independently -from the entities. Signals are the directed edges of the graph. -The pool can write a file representing the graph of entities. - -\section usecase How to use this package -\subsection use_programmtically Programmatically -Objects, which are derived from Entities (base class dynamicgraph::Entity), can be -declared within the code and compiled to shared libraries (.so/.dll files). -These libraries can be loaded at run-time using the PluginLoader methods, -and at the same time register their class names to the Factory (see the -examples in the SOT documentation to learn how). - -The Factory can then create instances of these objects and subsequently -register them in the Pool, where they can be listed, accessed, and acted upon -(see PoolStorage documentation). Basic commands defined by entities include -signal connection graph file generation, help and name print, and signals. - -The singletons made available by including the corresponding headers in this -module are: -\li dynamicgraph::FactoryStorage -\li dynamicgraph::PoolStorage - -For an example of a program creating entities in C++, see the unit test -test_pool.cpp (in your package source directory/unitTesting). - -\subsection Tutorial -A tutorial is available <a href="http://stack-of-tasks.github.io/dynamic-graph-tutorial/">here</a> -\section references References -\anchor Mansard2009 - -<b> "A versatile Generalized Inverted Kinematics implementation for collaborative working humanoid robots: The Stack Of Tasks"</b>, -<em>N. Mansard, O. Stasse, P. Evrard, A. Kheddar,</em> -Int. Conf. on Autonomous Robots, ICAR, 2009 - -\anchor Mansard2007 - -<b>"Task sequencing for sensor-based control"</b>, -<em>N. Mansard, F. Chaumette,</em> -IEEE Trans. on Robotics, 23(1):60-72, February 2007 +The installation instruction are given at \subpage subp_installation. + +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 \namespace dynamicgraph This is the namespace where every object and class of this library is located. +\defgroup debug Debugging + \defgroup dgraph Core classes and objects @{ diff --git a/doc/additionalDoc/pool.h b/doc/additionalDoc/pool.h new file mode 100644 index 0000000000000000000000000000000000000000..73092eb5fa14636e9e38b200ee8cb172bdffa100 --- /dev/null +++ b/doc/additionalDoc/pool.h @@ -0,0 +1,8 @@ +/** +\page subp_pool Pool +\section pool Pool +The class \ref dynamicgraph::PoolStorage keeps track of the entities instanciated with the factory. +The entities are the graph nodes. Signals are constructed during the class instanciation, they do not live independently +from the entities. Signals are the directed edges of the graph. +The pool can write a file representing the graph of entities. +*/ diff --git a/doc/additionalDoc/references.h b/doc/additionalDoc/references.h new file mode 100644 index 0000000000000000000000000000000000000000..e360c2a787721f46e09ec4f68698ba7b116bb065 --- /dev/null +++ b/doc/additionalDoc/references.h @@ -0,0 +1,21 @@ +/** +\page subp_references References + +\section sec_refer References +Please when referencing the Stack-Of-Tasks use the following reference: + +\anchor Mansard2009 + +<b> <a href="https://hal-lirmm.ccsd.cnrs.fr/lirmm-00796736/document"> +"A versatile Generalized Inverted Kinematics implementation for collaborative working humanoid robots: The Stack Of Tasks"</a> +</b>, +<em>N. Mansard, O. Stasse, P. Evrard, A. Kheddar,</em> +Int. Conf. on Autonomous Robots, ICAR, 2009 + +\anchor Mansard2007 + +<b>"Task sequencing for sensor-based control"</b>, +<em>N. Mansard, F. Chaumette,</em> +IEEE Trans. on Robotics, 23(1):60-72, February 2007 + +*/ diff --git a/doc/additionalDoc/signal.h b/doc/additionalDoc/signal.h new file mode 100644 index 0000000000000000000000000000000000000000..69f5a24a52509a7a5103e3cfa75299e483c70ac0 --- /dev/null +++ b/doc/additionalDoc/signal.h @@ -0,0 +1,12 @@ +/** +\page subp_signals Signals +\section sec_sigintro Signals + +Entities can output different types of signals. To guarante real-time perforamces, signals are implemented +using C++ and mecanism which have a low time foot-print. +All signals are templated by a Time +tick type parameter (which is used in the caching of signals) - usually \c int. Signals +are also templated after the type of data they accept or provide. For example: +(example) +For a more detailed programmer-oriented description of signals, please see \ref signals +*/ diff --git a/doc/additionalDoc/tracer-real-timedoc.h b/doc/additionalDoc/tracer-real-timedoc.h index 0f45826e271a6b4f61832b312dc4d494a73d2790..7a9cf1b2fdaa2be814d997653ac61f753303d526 100644 --- a/doc/additionalDoc/tracer-real-timedoc.h +++ b/doc/additionalDoc/tracer-real-timedoc.h @@ -1,10 +1,12 @@ /** \page tracerrealtimedoc TracerRealTime -\section description Description + +\section tracerrealtimedoc_description Description The \b TracerRealTime entity monitors a set of signals with real-time constraints; its function is very similar to the Tracer, except that all traces are recorded to a memory buffer, which can be emptied at any time. -\section commands Commands + +\section tracerrealtimedoc_commands Commands The \b commands that this entity exposes are: \code empty (discards all buffers) @@ -16,13 +18,12 @@ Plus all the commands exposed by \ref tracerdoc For more information on the signals exposed by this entity, please check the code documentation of the dynamicgraph::Tracer class. -\section sample Sample usage +\section tracerrealtimedoc_sample Sample usage See \ref tracerdoc for a code sample of using TracerRealTime. -\section addi Additional information +\section tracerrealtimedoc_addi Additional information See doxygen documentation for the class dynamicgraph::TracerRealTime -\section generates Generated plugin file +\section tracerrealtimedoc_generates Generated plugin file tracer-real-time.dll or tracer-real-time.so. - -**/ +*/ diff --git a/doc/additionalDoc/tracerdoc.h b/doc/additionalDoc/tracerdoc.h index 4df3c3ca02ca0dbb4805dcdfedaac948b90a9499..15e0e9b3d1e494c436e9c1c9a3c8597ea0745981 100644 --- a/doc/additionalDoc/tracerdoc.h +++ b/doc/additionalDoc/tracerdoc.h @@ -1,11 +1,12 @@ /** \page tracerdoc Tracer -\section description Description +\section tracerdoc_description Description The \b Tracer entity monitors a set of signals. With an input change on the entity's [trigger] signal, the tracked signal values are recorded and traced to a file. The behavior of the trace-to-file function can be changed, from printing to a file immediately after recording, to printing out only when asked explicitly. -\section commands Commands + +\section tracerdoc_commands Commands The \b commands that this entity exposes are: \code open, close (a file); @@ -19,7 +20,8 @@ start, stop (traces) For more information on the signals exposed by this entity, please check the code documentation of the dynamicgraph::Tracer class. \n\n -\section sample Sample usage + +\section tracerdoc_sample Sample usage The following code creates a TracerRealTime entity, then sets the tracing buffer size to 10MB. It then tells the tracer to create files with names of the form: jl_XXX.dat where XXX is the signal name, and adds a few signals after @@ -38,10 +40,9 @@ tr.add dyn.0 tr.add jgain.gain \endcode -\section addi Additional information +\section tracerdoc_addi Additional information See doxygen documentation for the class dynamicgraph::Tracer -\section generates Generated plugin file +\section tracerdoc_generates Generated plugin file tracer.dll or tracer.so. - -**/ +*/ diff --git a/doc/additionalDoc/writeGraph.h b/doc/additionalDoc/writeGraph.h new file mode 100644 index 0000000000000000000000000000000000000000..755e46b5e465fdbab191cf0e4a8469cfe0a58cef --- /dev/null +++ b/doc/additionalDoc/writeGraph.h @@ -0,0 +1,22 @@ +/** +\page writegraphdoc Displaying the graph of entities +\section description Description +It is possible to view the graph of entities currently instanciated. +The format used by dynamic-graph is dot. +Using the python interpreter the following command +\code +from dynamic_graph import * +writeGraph('/tmp/my_dynamic_graph.dot') +\endcode +is writing the <b>my_dynamic_graph.dot</b> in the <b>/tmp</b> directory + +\section fromdottopdf Viewing as a PDF file +To view the dot file you can simply use: +\code +dot -Tpdf /tmp/my_dynamic_graph.dot > /tmp/my_dynamic_graph.pdf +\endcode + +It provides the following output: +\image html my_dynamic_graph.png + +*/ diff --git a/doc/pictures/my_dynamic_graph.png b/doc/pictures/my_dynamic_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..1cbe5a06b7be7377f6fafd885ee5ceb08f2c616e Binary files /dev/null and b/doc/pictures/my_dynamic_graph.png differ diff --git a/include/dynamic-graph/CMakeLists.txt b/include/dynamic-graph/CMakeLists.txt index a8a7ae5ea8468acc416cb2d28ddcfc321b0ceae2..820ce9724efbf5e0505eaea75c13fd48be1e920d 100644 --- a/include/dynamic-graph/CMakeLists.txt +++ b/include/dynamic-graph/CMakeLists.txt @@ -1,7 +1,6 @@ SET(${PROJECT_NAME}_HEADERS fwd.hh null-ptr.hh - contiifstream.h debug.h real-time-logger.h @@ -47,7 +46,9 @@ SET(${PROJECT_NAME}_HEADERS command-direct-setter.h command-bind.h all-commands.h - ) + + logger.h + ) INSTALL(FILES ${${PROJECT_NAME}_HEADERS} DESTINATION include/${PROJECT_NAME} diff --git a/include/dynamic-graph/all-commands.h b/include/dynamic-graph/all-commands.h index 8d537244c2fc5d565c3de43d9ca128b16f19303c..2ace540008be9da1293b7ef8b8e36f52f357075a 100644 --- a/include/dynamic-graph/all-commands.h +++ b/include/dynamic-graph/all-commands.h @@ -2,18 +2,6 @@ // Copyright 2010, François Bleibel, Olivier Stasse, JRL, CNRS/AIST // Thomas Moulard, Nicolas Mansard LAAS-CNRS // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_ALL_COMMANDS_H # define DYNAMIC_GRAPH_ALL_COMMANDS_H diff --git a/include/dynamic-graph/all-signals.h b/include/dynamic-graph/all-signals.h index 33ba7c2cad36255f36c91b364ce9f1b301575a78..82b9957a53a220ff65295ee45f477df851f8851c 100644 --- a/include/dynamic-graph/all-signals.h +++ b/include/dynamic-graph/all-signals.h @@ -2,18 +2,6 @@ // Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, // JRL, CNRS/AIST. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_ALL_SIGNALS_H # define DYNAMIC_GRAPH_ALL_SIGNALS_H diff --git a/include/dynamic-graph/command-bind.h b/include/dynamic-graph/command-bind.h index ab39f6d0dc0d2c6c66ff5a95b80aba4919ee7edc..064e7481a15fb7e437e32fc97b150088775682a0 100644 --- a/include/dynamic-graph/command-bind.h +++ b/include/dynamic-graph/command-bind.h @@ -3,17 +3,6 @@ // // Author: Nicolas Mansard // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// dynamic-graph is distributed in the hope that it will be -// useful, but WITHOUT ANY WARRANTY; without even the implied warranty -// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. You should -// have received a copy of the GNU Lesser General Public License along -// with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef __dg_command_bind_h__ #define __dg_command_bind_h__ diff --git a/include/dynamic-graph/command-direct-getter.h b/include/dynamic-graph/command-direct-getter.h index 7f3da90ea2282f1348e00d310556c98eb5eb5401..5424c2c4c13759d7b00943e204813558d5d3fe8e 100644 --- a/include/dynamic-graph/command-direct-getter.h +++ b/include/dynamic-graph/command-direct-getter.h @@ -3,17 +3,6 @@ // // Author: Nicolas Mansard // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// dynamic-graph is distributed in the hope that it will be -// useful, but WITHOUT ANY WARRANTY; without even the implied warranty -// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. You should -// have received a copy of the GNU Lesser General Public License along -// with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef __dg_command_direct_getter_h__ #define __dg_command_direct_getter_h__ diff --git a/include/dynamic-graph/command-direct-setter.h b/include/dynamic-graph/command-direct-setter.h index 2457975a74dd620236de2acd985f203c0ad2de78..dc8b9f466bb95032a17f67d29c98c5699e883b69 100644 --- a/include/dynamic-graph/command-direct-setter.h +++ b/include/dynamic-graph/command-direct-setter.h @@ -3,17 +3,6 @@ // // Author: Nicolas Mansard // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// dynamic-graph is distributed in the hope that it will be -// useful, but WITHOUT ANY WARRANTY; without even the implied warranty -// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. You should -// have received a copy of the GNU Lesser General Public License along -// with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef __dg_command_direct_setter_h__ #define __dg_command_direct_setter_h__ diff --git a/include/dynamic-graph/command-getter.h b/include/dynamic-graph/command-getter.h index 731c9dd674bed95342b9f752e031ed4f2f2f11e7..431972169091e24a6c6a499fc061cf03a405ac44 100644 --- a/include/dynamic-graph/command-getter.h +++ b/include/dynamic-graph/command-getter.h @@ -3,17 +3,6 @@ // // Author: Florent Lamiraux // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// dynamic-graph is distributed in the hope that it will be -// useful, but WITHOUT ANY WARRANTY; without even the implied warranty -// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. You should -// have received a copy of the GNU Lesser General Public License along -// with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_COMMAND_GETTER_H #define DYNAMIC_GRAPH_COMMAND_GETTER_H @@ -72,4 +61,3 @@ namespace dynamicgraph { #include "dynamic-graph/command-getter.t.cpp" #endif //DYNAMIC_GRAPH_COMMAND_GETTER_H - diff --git a/include/dynamic-graph/command-getter.t.cpp b/include/dynamic-graph/command-getter.t.cpp index 63e06bdf01e700e0a31952eb2a5d0508576e570d..032d1c018cbac16c27133255ebbd9900c96eaee1 100644 --- a/include/dynamic-graph/command-getter.t.cpp +++ b/include/dynamic-graph/command-getter.t.cpp @@ -3,17 +3,6 @@ // // Author: Florent Lamiraux // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// dynamic-graph is distributed in the hope that it will be -// useful, but WITHOUT ANY WARRANTY; without even the implied warranty -// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. You should -// have received a copy of the GNU Lesser General Public License along -// with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_COMMAND_GETTER_T_CPP #define DYNAMIC_GRAPH_COMMAND_GETTER_T_CPP diff --git a/include/dynamic-graph/command-setter.h b/include/dynamic-graph/command-setter.h index 45cc9dc98d9f2123254b9ae376f2dba88fabf0ed..4ebfaaf0ff383d30095c5c6813030e7eae86dfc0 100644 --- a/include/dynamic-graph/command-setter.h +++ b/include/dynamic-graph/command-setter.h @@ -3,17 +3,6 @@ // // Author: Florent Lamiraux // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// dynamic-graph is distributed in the hope that it will be -// useful, but WITHOUT ANY WARRANTY; without even the implied warranty -// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. You should -// have received a copy of the GNU Lesser General Public License along -// with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_COMMAND_SETTER_H #define DYNAMIC_GRAPH_COMMAND_SETTER_H @@ -72,4 +61,3 @@ namespace dynamicgraph { #include "dynamic-graph/command-setter.t.cpp" #endif //DYNAMIC_GRAPH_COMMAND_SETTER_H - diff --git a/include/dynamic-graph/command-setter.t.cpp b/include/dynamic-graph/command-setter.t.cpp index 0a26374c7e98620a76df446e83a683c41eac732b..f812159aae852845dd6754737a9140a6731ef4b4 100644 --- a/include/dynamic-graph/command-setter.t.cpp +++ b/include/dynamic-graph/command-setter.t.cpp @@ -3,17 +3,6 @@ // // Author: Florent Lamiraux // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// dynamic-graph is distributed in the hope that it will be -// useful, but WITHOUT ANY WARRANTY; without even the implied warranty -// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. You should -// have received a copy of the GNU Lesser General Public License along -// with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_COMMAND_SETTER_T_CPP #define DYNAMIC_GRAPH_COMMAND_SETTER_T_CPP @@ -26,7 +15,7 @@ namespace dynamicgraph { class Entity; namespace command { - // + // // Template specialization: bool // template <class E> @@ -64,7 +53,7 @@ namespace dynamicgraph { return Value(); } - // + // // Template specialization: unsigned // template <class E> @@ -102,7 +91,7 @@ namespace dynamicgraph { return Value(); } - // + // // Template specialization: int // template <class E> @@ -140,7 +129,7 @@ namespace dynamicgraph { return Value(); } - // + // // Template specialization: float // template <class E> @@ -178,7 +167,7 @@ namespace dynamicgraph { return Value(); } - // + // // Template specialization: double // template <class E> @@ -216,7 +205,7 @@ namespace dynamicgraph { return Value(); } - // + // // Template specialization: std::string // template <class E> @@ -254,7 +243,7 @@ namespace dynamicgraph { return Value(); } - // + // // Template specialization: Vector // template <class E> @@ -292,7 +281,7 @@ namespace dynamicgraph { return Value(); } - // + // // Template specialization: Matrix // template <class E> diff --git a/include/dynamic-graph/command.h b/include/dynamic-graph/command.h index 832bf4aa3a19338a4a20d77c6703298a3d4590c4..b383be5b1f37dfe40e9b809d55a906804382a9d2 100644 --- a/include/dynamic-graph/command.h +++ b/include/dynamic-graph/command.h @@ -3,17 +3,6 @@ // // Author: Florent Lamiraux // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// dynamic-graph is distributed in the hope that it will be -// useful, but WITHOUT ANY WARRANTY; without even the implied warranty -// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. You should -// have received a copy of the GNU Lesser General Public License along -// with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_COMMAND_H #define DYNAMIC_GRAPH_COMMAND_H diff --git a/include/dynamic-graph/contiifstream.h b/include/dynamic-graph/contiifstream.h deleted file mode 100644 index 4741450a5daeeaabcbe29e2acfa8f78154efc623..0000000000000000000000000000000000000000 --- a/include/dynamic-graph/contiifstream.h +++ /dev/null @@ -1,70 +0,0 @@ -// -*- mode: c++ -*- -// Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, -// JRL, CNRS/AIST. -// -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. - -#ifndef DYNAMIC_GRAPH_CONTIIFSTREAM_H -# define DYNAMIC_GRAPH_CONTIIFSTREAM_H -# include <fstream> -# include <list> -# include <sstream> - -# ifndef WIN32 -# include <unistd.h> -# include <pthread.h> -# endif //! WIN32 - -# include <dynamic-graph/fwd.hh> -# include <dynamic-graph/interpreter.h> -# include <dynamic-graph/config-contiifstream.hh> - -namespace dynamicgraph -{ - /// \ingroup debug - /// - /// \brief TODO - /// - class DG_CONTIIFSTREAM_DLLAPI Contiifstream - { - public: - explicit Contiifstream (const std::string& n = ""); - ~Contiifstream (); - - inline void open (const std::string& n) - { - filename = n; - cursor = 0; - } - - bool loop (); - - inline bool ready () - { - return 0 < reader.size (); - } - - std::string next (); - - protected: - std::string filename; - std::streamoff cursor; - static const unsigned int BUFFER_SIZE = 256; - char buffer[BUFFER_SIZE]; - std::list< std::string > reader; - bool first; - }; -} // end of namespace dynamicgraph. - -#endif //! DYNAMIC_GRAPH_CONTIIFSTREAM_H diff --git a/include/dynamic-graph/debug.h b/include/dynamic-graph/debug.h index 216a35aff2fad0ec694777897c51eedfff876cfa..7bc3627dddca5ff80fa1e42a9953bd5054729edc 100644 --- a/include/dynamic-graph/debug.h +++ b/include/dynamic-graph/debug.h @@ -2,18 +2,6 @@ // Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, // JRL, CNRS/AIST. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_DEBUG_HH # define DYNAMIC_GRAPH_DEBUG_HH diff --git a/include/dynamic-graph/dynamic-graph-api.h b/include/dynamic-graph/dynamic-graph-api.h index e1125ee588492ff581364b090af72ffe5468619b..69dff1d9be4f30a544a7b93f7f7a54111f424440 100644 --- a/include/dynamic-graph/dynamic-graph-api.h +++ b/include/dynamic-graph/dynamic-graph-api.h @@ -2,18 +2,6 @@ // Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, // JRL, CNRS/AIST. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_API_H # define DYNAMIC_GRAPH_API_H diff --git a/include/dynamic-graph/eigen-io.h b/include/dynamic-graph/eigen-io.h index f96d7a839be607d99116f360d3213486fe55fa20..4198b52f23a3486f88b81bbf3bb484387495dec4 100644 --- a/include/dynamic-graph/eigen-io.h +++ b/include/dynamic-graph/eigen-io.h @@ -3,17 +3,6 @@ // // Author: Rohan Budhiraja // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// dynamic-graph is distributed in the hope that it will be -// useful, but WITHOUT ANY WARRANTY; without even the implied warranty -// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. You should -// have received a copy of the GNU Lesser General Public License along -// with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_EIGEN_IO_H #define DYNAMIC_GRAPH_EIGEN_IO_H @@ -39,7 +28,7 @@ using dynamicgraph::ExceptionSignal; namespace Eigen { typedef EIGEN_DEFAULT_DENSE_INDEX_TYPE eigen_index; - inline std::istringstream& operator >> (std::istringstream &iss, + inline std::istringstream& operator >> (std::istringstream &iss, dynamicgraph::Vector &inst) { unsigned int _size; double _dbl_val; @@ -82,7 +71,7 @@ namespace Eigen { */ template<typename Derived> - inline std::istringstream& operator >> (std::istringstream &iss, + inline std::istringstream& operator >> (std::istringstream &iss, DenseBase<Derived> &inst) { unsigned int _colsize; unsigned int _rowsize; @@ -133,13 +122,13 @@ namespace Eigen { return iss; } - - inline std::istringstream& operator >> (std::istringstream &iss, + + inline std::istringstream& operator >> (std::istringstream &iss, Transform<double,3,Affine> &inst) { MatrixXd M; iss >> M; inst.matrix() = M; return iss; } - - - + + + /* \brief Eigen Homogeneous Matrix output * @@ -147,27 +136,27 @@ namespace Eigen { * e.g. [2,5]((1 23 32.2 12.12 32),(2 32 23 92.01 19.2)) */ - inline std::ostream& operator << (std::ostream &os, + inline std::ostream& operator << (std::ostream &os, Transform<double,3,Affine> MH) { IOFormat boostFmt(StreamPrecision, DontAlignCols, ",", ",", "(",")", "(",")"); - + os << "[4,4]"<< MH.matrix().format(boostFmt); return os; } - - - inline std::ostream& operator << (std::ostream &os, + + + inline std::ostream& operator << (std::ostream &os, AngleAxisd quat) { VectorXd v(4); v(0) = quat.angle(); v.tail<3>() = quat.axis(); os << v; return os; } - - inline std::istringstream& operator >> (std::istringstream &iss, + + inline std::istringstream& operator >> (std::istringstream &iss, AngleAxisd &inst) { VectorXd v(4); iss >>v; inst.angle() = v(0); inst.axis() = v.tail<3>(); return iss; } - + } diff --git a/include/dynamic-graph/entity-helper.h b/include/dynamic-graph/entity-helper.h index 694910beb8ca30786d584d496c231fc9757f4e23..15fc8d8804a3f946deaaf06a056caab4a9fec6c7 100644 --- a/include/dynamic-graph/entity-helper.h +++ b/include/dynamic-graph/entity-helper.h @@ -1,17 +1,6 @@ /* * Copyright 2011, Nicolas Mansard, LAAS-CNRS * - * This file is part of sot-core. - * sot-core is free software: you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation, either version 3 of - * the License, or (at your option) any later version. - * sot-core is distributed in the hope that it will be - * useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. You should - * have received a copy of the GNU Lesser General Public License along - * with sot-core. If not, see <http://www.gnu.org/licenses/>. */ #ifndef __sot_core_entity_helper_H__ diff --git a/include/dynamic-graph/entity.h b/include/dynamic-graph/entity.h index ae5b9f0060037af4eca0e7d20c6bf077918e3908..5c57b5f37cf7a8e8f7530ca960acdc6e687d48fa 100644 --- a/include/dynamic-graph/entity.h +++ b/include/dynamic-graph/entity.h @@ -2,18 +2,6 @@ // Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, // JRL, CNRS/AIST. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_ENTITY_H # define DYNAMIC_GRAPH_ENTITY_H @@ -29,6 +17,7 @@ # include <dynamic-graph/exception-factory.h> # include <dynamic-graph/signal-array.h> # include <dynamic-graph/signal-base.h> +# include <dynamic-graph/logger.h> /// \brief Helper macro for entity declaration. /// @@ -108,6 +97,22 @@ namespace dynamicgraph command::Command* getNewStyleCommand( const std::string& cmdName ); SignalMap getSignalMap() const; + + /** \name Logger related methods */ + /** \{*/ + /// \brief Send messages \param msg with level 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); + + /// \brief Specify the verbosity level of the logger. + void setLoggerVerbosityLevel(LoggerVerbosity lv) + {logger_.setVerbosity(lv);} + + /// \brief Get the logger's verbosity level. + LoggerVerbosity getLoggerVerbosityLevel() + { return logger_.getVerbosity(); }; protected: void addCommand(const std::string& name,command::Command* command); @@ -120,6 +125,7 @@ namespace dynamicgraph std::string name; SignalMap signalMap; CommandMap_t commandMap; + Logger logger_; }; DYNAMIC_GRAPH_DLLAPI std::ostream& diff --git a/include/dynamic-graph/exception-abstract.h b/include/dynamic-graph/exception-abstract.h index 2eb40ff96cabc94043b1220490da9e2a465fab30..3e1bf4c1540843575b6549d921fedeeff0948624 100644 --- a/include/dynamic-graph/exception-abstract.h +++ b/include/dynamic-graph/exception-abstract.h @@ -2,18 +2,6 @@ // Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, // JRL, CNRS/AIST. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_EXCEPTION_ABSTRACT_H # define DYNAMIC_GRAPH_EXCEPTION_ABSTRACT_H diff --git a/include/dynamic-graph/exception-factory.h b/include/dynamic-graph/exception-factory.h index 214c8e28d375e0b9261e08958f6473e2c1bb7da6..836b15a666c1efc6882651a49b3fd8869c454b45 100644 --- a/include/dynamic-graph/exception-factory.h +++ b/include/dynamic-graph/exception-factory.h @@ -2,18 +2,6 @@ // Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, // JRL, CNRS/AIST. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_EXCEPTION_FACTORY_H # define DYNAMIC_GRAPH_EXCEPTION_FACTORY_H diff --git a/include/dynamic-graph/exception-signal.h b/include/dynamic-graph/exception-signal.h index fcf379cc30db4ce1ac9c785a5753cfe4110ec76e..abadca164561cefbe948a59d6874e2ad63beb807 100644 --- a/include/dynamic-graph/exception-signal.h +++ b/include/dynamic-graph/exception-signal.h @@ -2,18 +2,6 @@ // Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, // JRL, CNRS/AIST. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_EXCEPTION_SIGNAL_H # define DYNAMIC_GRAPH_EXCEPTION_SIGNAL_H diff --git a/include/dynamic-graph/exception-traces.h b/include/dynamic-graph/exception-traces.h index 81ab6767857bba9012e1670849fd7b40cba99c12..6f5c73f0ee27d76aba2b70cda0ca44639898370d 100644 --- a/include/dynamic-graph/exception-traces.h +++ b/include/dynamic-graph/exception-traces.h @@ -2,18 +2,6 @@ // Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, // JRL, CNRS/AIST. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_EXCEPTION_TRACES_H # define DYNAMIC_GRAPH_EXCEPTION_TRACES_H diff --git a/include/dynamic-graph/factory.h b/include/dynamic-graph/factory.h index 292f9d9bb72d88ae012bb5e0b613f4baa5f6f08a..1c94fcfaa8b7fea84e9b9a45bf4e5840b8b135d9 100644 --- a/include/dynamic-graph/factory.h +++ b/include/dynamic-graph/factory.h @@ -2,18 +2,6 @@ // Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, // JRL, CNRS/AIST. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_FACTORY_HH # define DYNAMIC_GRAPH_FACTORY_HH diff --git a/include/dynamic-graph/fwd.hh b/include/dynamic-graph/fwd.hh index 6a3f558c232f3f62cb4d8afb9b3d51d97fdf6d72..29b9b347c62cc6dd18fd934e3c53e237efe8c037 100644 --- a/include/dynamic-graph/fwd.hh +++ b/include/dynamic-graph/fwd.hh @@ -1,24 +1,12 @@ -// Copyright 2010, Thomas Moulard, JRL, CNRS/AIST +// Copyright 2010-2019, CNRS, JRL, AIST, LAAS +// Thomas Moulard, Olivier Stasse // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_FWD_HH # define DYNAMIC_GRAPH_FWD_HH namespace dynamicgraph { - class Contiifstream; class DebugTrace; class PluginRefMap; @@ -31,6 +19,7 @@ namespace dynamicgraph class FactoryStorage; class Interpreter; class InterpreterHelper; + class Logger; class OutStringStream; class PluginLoader; class PoolStorage; diff --git a/include/dynamic-graph/linear-algebra.h b/include/dynamic-graph/linear-algebra.h index 4b566fb6f881935454e5c019d542b58383cde15e..c0b3d216f4f113897ee72dbe29bfb03426fe4989 100644 --- a/include/dynamic-graph/linear-algebra.h +++ b/include/dynamic-graph/linear-algebra.h @@ -3,17 +3,6 @@ // // Author: Florent Lamiraux // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// dynamic-graph is distributed in the hope that it will be -// useful, but WITHOUT ANY WARRANTY; without even the implied warranty -// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. You should -// have received a copy of the GNU Lesser General Public License along -// with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_LINEAR_ALGEBRA_H #define DYNAMIC_GRAPH_LINEAR_ALGEBRA_H diff --git a/include/dynamic-graph/logger.h b/include/dynamic-graph/logger.h new file mode 100644 index 0000000000000000000000000000000000000000..46a58ca3380ba5234490c3270a092c849ee14887 --- /dev/null +++ b/include/dynamic-graph/logger.h @@ -0,0 +1,219 @@ +/* + * Copyright 2015, 2019 + * LAAS-CNRS + * Andrea Del Prete, François Bailly, Olivier Stasse + * + */ + +#ifndef __dynamic_graph_logger_H__ +#define __dynamic_graph_logger_H__ + +/* --------------------------------------------------------------------- */ +/* --- API ------------------------------------------------------------- */ +/* --------------------------------------------------------------------- */ + +#if defined (WIN32) +# if defined (logger_EXPORTS) +# define LOGGER_EXPORT __declspec(dllexport) +# else +# define LOGGER_EXPORT __declspec(dllimport) +# endif +#else +# define LOGGER_EXPORT +#endif + +namespace dynamicgraph { + + /** Enum representing the different kind of messages. + */ + enum MsgType + { + MSG_TYPE_DEBUG =0, + MSG_TYPE_INFO =1, + MSG_TYPE_WARNING =2, + MSG_TYPE_ERROR =3, + MSG_TYPE_DEBUG_STREAM =4, + MSG_TYPE_INFO_STREAM =5, + MSG_TYPE_WARNING_STREAM =6, + MSG_TYPE_ERROR_STREAM =7 + }; +} + +/* --------------------------------------------------------------------- */ +/* --- INCLUDE --------------------------------------------------------- */ +/* --------------------------------------------------------------------- */ + +#include <map> +#include <iomanip> // std::setprecision +#include <fstream> +#include <sstream> +#include "boost/assign.hpp" +#include <dynamic-graph/linear-algebra.h> + +namespace dynamicgraph { + +//#define LOGGER_VERBOSITY_INFO_WARNING_ERROR +#define LOGGER_VERBOSITY_ALL + +#define SEND_MSG(msg,type) sendMsg(msg,type,__FILE__,__LINE__) + +#define SEND_DEBUG_STREAM_MSG(msg) SEND_MSG(msg,MSG_TYPE_DEBUG_STREAM) +#define SEND_INFO_STREAM_MSG(msg) SEND_MSG(msg,MSG_TYPE_INFO_STREAM) +#define SEND_WARNING_STREAM_MSG(msg) SEND_MSG(msg,MSG_TYPE_WARNING_STREAM) +#define SEND_ERROR_STREAM_MSG(msg) SEND_MSG(msg,MSG_TYPE_ERROR_STREAM) + + template<typename T> + std::string toString(const T& v, const int precision=3, const int width=-1) + { + std::stringstream ss; + if(width>precision) + ss<<std::fixed<<std::setw(width)<<std::setprecision(precision)<<v; + else + ss<<std::fixed<<std::setprecision(precision)<<v; + return ss.str(); + } + + template<typename T> + std::string toString(const std::vector<T>& v, const int precision=3, const int width=-1, + const std::string separator=", ") + { + std::stringstream ss; + if(width>precision) + { + for(int i=0; i<v.size()-1; i++) + ss<<std::fixed<<std::setw(width)<<std::setprecision(precision)<<v[i]<<separator; + ss<<std::fixed<<std::setw(width)<<std::setprecision(precision)<<v[v.size()-1]; + } + else + { + for(int i=0; i<v.size()-1; i++) + ss<<std::fixed<<std::setprecision(precision)<<v[i]<<separator; + ss<<std::fixed<<std::setprecision(precision)<<v[v.size()-1]; + } + + return ss.str(); + } + +// template<typename T, int N> +// std::string toString(const Eigen::Matrix<T, N, 1, 0, N, 1>& v, const std::string separator=", ", +// const int precision=3, const int width=-1) + template<typename T> + std::string toString(const Eigen::MatrixBase<T>& v, + const int precision=3, const int width=-1, const std::string separator=", ") + { + std::stringstream ss; + if(width>precision) + { + for(int i=0; i<v.size()-1; i++) + ss<<std::fixed<<std::setw(width)<<std::setprecision(precision)<<v[i]<<separator; + ss<<std::fixed<<std::setw(width)<<std::setprecision(precision)<<v[v.size()-1]; + } + else + { + for(int i=0; i<v.size()-1; i++) + ss<<std::fixed<<std::setprecision(precision)<<v[i]<<separator; + ss<<std::setprecision(precision)<<v[v.size()-1]; + } + + return ss.str(); + } + + enum LoggerVerbosity + { + VERBOSITY_ALL, + VERBOSITY_INFO_WARNING_ERROR, + VERBOSITY_WARNING_ERROR, + VERBOSITY_ERROR, + VERBOSITY_NONE + }; + + /// \ingroup debug + /// + /// \brief Class for logging messages + /// + /// It is intended to be used like this: + /// \code + /// #define ENABLE_RT_LOG + /// #include <dynamic-graph/real-time-logger.h> + /// + /// // Somewhere in the main function of your executable + /// int main (int argc, char** argv) { + /// std::ofstream of; + /// of.open("/tmp/dg-LOGS.txt",std::ofstream::out|std::ofstream::app); + /// dgADD_OSTREAM_TO_RTLOG (of); + /// } + /// + /// // Somewhere in your library + /// dynamicgraph::LoggerVerbosity aLoggerVerbosityLevel = VERBOSITY_WARNING_ERROR; + /// entity.setLoggerVerbosityLevel(aLoggerVerbosityLevel); + /// ... + /// std::string aMsg=aBaseMsg+" WARNING"; + /// entity.sendMsg(aMsg,dynamicgraph::MSG_TYPE_WARNING, __FILE__,__LINE__); + /// + /// \endcode + /// + /// + class Logger + { + public: + + /** Constructor */ + Logger(double timeSample=0.001, double streamPrintPeriod=1.0); + + /** Destructor */ + ~Logger(); + + /** Method to be called at every control iteration + * to decrement the internal Logger's counter. */ + void countdown(); + + /** Print the specified message on standard output if the verbosity level + * allows it. The file name and the line number are used to identify + * the point where sendMsg is called so that streaming messages are + * printed only every streamPrintPeriod iterations. + */ + void sendMsg(std::string msg, MsgType type, const char* file="", int line=0); + + /** Set the sampling time at which the method countdown() + * is going to be called. */ + bool setTimeSample(double t); + + /** Set the time period for printing of streaming messages. */ + bool setStreamPrintPeriod(double s); + + /** Set the verbosity level of the logger. */ + void setVerbosity(LoggerVerbosity lv); + + /** Get the verbosity level of the logger. */ + LoggerVerbosity getVerbosity(); + + protected: + LoggerVerbosity m_lv; /// verbosity of the logger + double m_timeSample; /// specify the period of call of the countdown method + double m_streamPrintPeriod; /// specify the time period of the stream prints + double m_printCountdown; /// every time this is < 0 (i.e. every _streamPrintPeriod sec) print stuff + + /** Pointer to the dynamic structure which holds the collection of streaming messages */ + std::map<std::string, double> m_stream_msg_counters; + + bool isStreamMsg(MsgType m) + { return m==MSG_TYPE_ERROR_STREAM || m==MSG_TYPE_DEBUG_STREAM || m==MSG_TYPE_INFO_STREAM || m==MSG_TYPE_WARNING_STREAM; } + + bool isDebugMsg(MsgType m) + { return m==MSG_TYPE_DEBUG_STREAM || m==MSG_TYPE_DEBUG; } + + bool isInfoMsg(MsgType m) + { return m==MSG_TYPE_INFO_STREAM || m==MSG_TYPE_INFO; } + + bool isWarningMsg(MsgType m) + { return m==MSG_TYPE_WARNING_STREAM || m==MSG_TYPE_WARNING; } + + bool isErrorMsg(MsgType m) + { return m==MSG_TYPE_ERROR_STREAM || m==MSG_TYPE_ERROR; } + }; + +} // namespace dynamicgraph + + + +#endif // #ifndef __sot_torque_control_logger_H__ diff --git a/include/dynamic-graph/null-ptr.hh b/include/dynamic-graph/null-ptr.hh index 2842e61d7c867f65f54b33aa663a4938e6d2d59d..60ea303cb2b862ce93e9cf90a685972b020be03c 100644 --- a/include/dynamic-graph/null-ptr.hh +++ b/include/dynamic-graph/null-ptr.hh @@ -1,17 +1,5 @@ // Copyright 2010, Thomas Moulard, JRL, CNRS/AIST // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_NULL_PTR_HH # define DYNAMIC_GRAPH_NULL_PTR_HH @@ -26,7 +14,7 @@ namespace dynamicgraph { return 0; } - + template<class C, class T> operator T C::*() const { diff --git a/include/dynamic-graph/pool.h b/include/dynamic-graph/pool.h index feaeb092dda6fed753f7963da52be35916e6eb5d..9d380e1a27022098e7018ce546c6b7d101cad435 100644 --- a/include/dynamic-graph/pool.h +++ b/include/dynamic-graph/pool.h @@ -2,18 +2,6 @@ // Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, // JRL, CNRS/AIST. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_POOL_H # define DYNAMIC_GRAPH_POOL_H diff --git a/include/dynamic-graph/real-time-logger.h b/include/dynamic-graph/real-time-logger.h index f87801101079e236b90d719a58c1964ea00f9057..8049e8848c8ada172d0cb7369a1edf87e04242af 100644 --- a/include/dynamic-graph/real-time-logger.h +++ b/include/dynamic-graph/real-time-logger.h @@ -1,18 +1,6 @@ // -*- mode: c++ -*- // Copyright 2018, Joseph Mirabel LAAS-CNRS // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_LOGGER_REAL_TIME_H # define DYNAMIC_GRAPH_LOGGER_REAL_TIME_H diff --git a/include/dynamic-graph/signal-array.h b/include/dynamic-graph/signal-array.h index 3af85ffd5b3430690921834a54312ab756460083..6900b9b470f5f8fdee47261c1adf891806957d45 100644 --- a/include/dynamic-graph/signal-array.h +++ b/include/dynamic-graph/signal-array.h @@ -2,18 +2,6 @@ // Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, // JRL, CNRS/AIST. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_SIGNAL_ARRAY_H # define DYNAMIC_GRAPH_SIGNAL_ARRAY_H diff --git a/include/dynamic-graph/signal-base.h b/include/dynamic-graph/signal-base.h index bb8f9ca9bcc0db1612fe01f283d1ed4708d8caf2..df8f1910c9ed27faf9cf87439372436faae99638 100644 --- a/include/dynamic-graph/signal-base.h +++ b/include/dynamic-graph/signal-base.h @@ -2,18 +2,6 @@ // Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, // JRL, CNRS/AIST. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_SIGNAL_BASE_H # define DYNAMIC_GRAPH_SIGNAL_BASE_H diff --git a/include/dynamic-graph/signal-cast-helper.h b/include/dynamic-graph/signal-cast-helper.h index 4c7148d7441340b0841a84ec5996059386557f7d..ac10a3a93e33d08c93a378acaac409a0c1b45480 100644 --- a/include/dynamic-graph/signal-cast-helper.h +++ b/include/dynamic-graph/signal-cast-helper.h @@ -1,18 +1,6 @@ // -*- c++-mode -*- // Copyright 2010 François Bleibel Thomas Moulard, Olivier Stasse, Nicolas Mansard // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// You should have received a copy of the GNU Lesser General Public License -// along with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_SIGNAL_CASTER_HELPER_HH # define DYNAMIC_GRAPH_SIGNAL_CASTER_HELPER_HH diff --git a/include/dynamic-graph/signal-caster.h b/include/dynamic-graph/signal-caster.h index 525f906f02e00aaa6ff74f5e50aa30be72137676..9bbf6cb355667872ac02ccafe3e7b486404c53b6 100644 --- a/include/dynamic-graph/signal-caster.h +++ b/include/dynamic-graph/signal-caster.h @@ -1,18 +1,6 @@ // -*- c++-mode -*- // Copyright 2010 François Bleibel Thomas Moulard, Olivier Stasse // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// You should have received a copy of the GNU Lesser General Public License -// along with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_SIGNAL_CASTER_HH # define DYNAMIC_GRAPH_SIGNAL_CASTER_HH diff --git a/include/dynamic-graph/signal-helper.h b/include/dynamic-graph/signal-helper.h index 87bbec36668894eeadac415d152a569a0b747e00..a8d814dce4e399a8a057dd801b589b64cc1cae0e 100644 --- a/include/dynamic-graph/signal-helper.h +++ b/include/dynamic-graph/signal-helper.h @@ -1,17 +1,8 @@ /* - * Copyright 2011, Nicolas Mansard, LAAS-CNRS + * Copyright 2011, 2019 + * LAAS-CNRS + * Nicolas Mansard, François Bailly * - * This file is part of dynamic-graph. - * dynamic-graph is free software: you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation, either version 3 of - * the License, or (at your option) any later version. - * dynamic-graph is distributed in the hope that it will be - * useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. You should - * have received a copy of the GNU Lesser General Public License along - * with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. */ #ifndef __dynamic_graph_signal_helper_H__ @@ -23,26 +14,60 @@ #include <dynamic-graph/entity.h> #include <dynamic-graph/signal-ptr.h> #include <dynamic-graph/signal-time-dependent.h> +#include <dynamic-graph/linear-algebra.h> /* --- MACROS ---------------------------------------------------------- */ +#define SIGNAL_OUT_FUNCTION_NAME(name) name##SOUT_function -#define DECLARE_SIGNAL( name,IO,type ) ::dynamicgraph::Signal<type,int> name##S##IO -#define CONSTRUCT_SIGNAL( name,IO,type ) name##S##IO( getClassName()+"("+getName()+")::"+#IO+"put("+#type+")::"+#name ) +#define DECLARE_SIGNAL( name,IO,type ) ::dynamicgraph::Signal<type,int> m_##name##S##IO +#define CONSTRUCT_SIGNAL( name,IO,type ) m_##name##S##IO( getClassName()+"("+getName()+")::"+#IO+"put("+#type+")::"+#name ) +#define BIND_SIGNAL_TO_FUNCTION(name,IO,type) m_##name##S##IO.setFunction(boost::bind(&EntityClassName::SIGNAL_OUT_FUNCTION_NAME(name),this,_1,_2)); -#define DECLARE_SIGNAL_IN( name,type ) ::dynamicgraph::SignalPtr<type,int> name##SIN -#define CONSTRUCT_SIGNAL_IN( name,type ) name##SIN( NULL,getClassName()+"("+getName()+")::input("+#type+")::"+#name ) +/**/ + +#define DECLARE_SIGNAL_IN( name,type ) ::dynamicgraph::SignalPtr<type,int> m_##name##SIN +#define CONSTRUCT_SIGNAL_IN( name,type ) m_##name##SIN( NULL,getClassName()+"("+getName()+")::input("+#type+")::"+#name ) + +/**/ + +#define DECLARE_SIGNAL_OUT_FUNCTION(name,type) \ + type& SIGNAL_OUT_FUNCTION_NAME(name)(type&,int) + +#define DEFINE_SIGNAL_OUT_FUNCTION(name,type) \ + type& EntityClassName::SIGNAL_OUT_FUNCTION_NAME(name)(type& s,int iter) #define SIGNAL_OUT_FUNCTION( name ) name##SOUT_function + #define DECLARE_SIGNAL_OUT( name,type ) \ public: \ - ::dynamicgraph::SignalTimeDependent<type,int> name##SOUT; \ + ::dynamicgraph::SignalTimeDependent<type,int> m_##name##SOUT; \ protected: \ type& SIGNAL_OUT_FUNCTION(name)( type&,int ) + #define CONSTRUCT_SIGNAL_OUT( name,type,dep ) \ - name##SOUT( boost::bind(& EntityClassName::name##SOUT_function,this,_1,_2), \ + m_##name##SOUT( boost::bind(& EntityClassName::name##SOUT_function,this,_1,_2), \ dep,getClassName()+"("+getName()+")::output("+#type+")::"+#name ) +/**************** INNER SIGNALS *******************/ +#define SIGNAL_INNER_FUNCTION_NAME(name) name##SINNER_function + +#define DECLARE_SIGNAL_INNER_FUNCTION(name,type) \ + type& SIGNAL_INNER_FUNCTION_NAME(name)(type&,int) + +#define DEFINE_SIGNAL_INNER_FUNCTION(name,type) \ + type& EntityClassName::SIGNAL_INNER_FUNCTION_NAME(name)(type& s,int iter) + +#define DECLARE_SIGNAL_INNER(name,type) \ + public: \ + ::dynamicgraph::SignalTimeDependent<type,int> m_##name##SINNER;\ + protected: \ + DECLARE_SIGNAL_INNER_FUNCTION(name,type) + +#define CONSTRUCT_SIGNAL_INNER( name,type,dep ) \ + m_##name##SINNER( boost::bind(&EntityClassName::name##SINNER_function,this,_1,_2), \ + dep,getClassName()+"("+getName()+")::inner("+#type+")::"+#name ) + #endif // __dynamic_graph_signal_helper_H__ diff --git a/include/dynamic-graph/signal-ptr.h b/include/dynamic-graph/signal-ptr.h index 3f3a6eeb3fdd89419d807241d32404d07729d141..4acdffed1b433d0c2ec5e46c0a31ed20def7ab5f 100644 --- a/include/dynamic-graph/signal-ptr.h +++ b/include/dynamic-graph/signal-ptr.h @@ -2,18 +2,6 @@ // Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, // JRL, CNRS/AIST. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_SIGNAL_PTR_H #define DYNAMIC_GRAPH_SIGNAL_PTR_H diff --git a/include/dynamic-graph/signal-ptr.t.cpp b/include/dynamic-graph/signal-ptr.t.cpp index 6862e7ee91a18d888c6634c2409b3f625e16a08d..5df9d637755ffb417d3d798cbf1d62d33ef07906 100644 --- a/include/dynamic-graph/signal-ptr.t.cpp +++ b/include/dynamic-graph/signal-ptr.t.cpp @@ -2,18 +2,6 @@ // Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, // JRL, CNRS/AIST. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_SIGNAL_PTR_T_CPP # define DYNAMIC_GRAPH_SIGNAL_PTR_T_CPP @@ -121,7 +109,7 @@ namespace dynamicgraph transmitAbstract = false; DG_THROW ExceptionSignal( ExceptionSignal::PLUG_IMPOSSIBLE, "Compl. Uncompatible types for plugin.", - "(while trying to plug <%s> on <%s>)" + "(while trying to plug <%s> on <%s>)" " with types <%s> on <%s>.", unknown_ref->getName ().c_str (), this->getName ().c_str (), diff --git a/include/dynamic-graph/signal-time-dependent.h b/include/dynamic-graph/signal-time-dependent.h index f9f4b1d09fa7e1f46899591c9005f79067315beb..0beb6483e8e12c0f8af8c0f9f9aad32bc0d42c46 100644 --- a/include/dynamic-graph/signal-time-dependent.h +++ b/include/dynamic-graph/signal-time-dependent.h @@ -2,18 +2,6 @@ // Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, // JRL, CNRS/AIST. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_SIGNAL_TIME_DEPENDENT_H # define DYNAMIC_GRAPH_SIGNAL_TIME_DEPENDENT_H diff --git a/include/dynamic-graph/signal.h b/include/dynamic-graph/signal.h index 111bb8cd2144eb080b9ee9ce2386ab28113c5adf..18d25d389b6b887002e867a0d57de7851a3de1ba 100644 --- a/include/dynamic-graph/signal.h +++ b/include/dynamic-graph/signal.h @@ -5,17 +5,6 @@ * * CNRS/AIST * - * This file is part of dynamic-graph. - * dynamic-graph is free software: you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation, either version 3 of - * the License, or (at your option) any later version. - * dynamic-graph is distributed in the hope that it will be - * useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. You should - * have received a copy of the GNU Lesser General Public License along - * with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. */ #ifndef __SIGNAL_HH @@ -126,7 +115,7 @@ protected: inline operator const T& () const { return accessCopy (); } virtual void getClassName(std::string & aClassName) const { aClassName = typeid(this).name(); } - + public: virtual void checkCompatibility () { throw Tcopy; } @@ -150,4 +139,3 @@ protected: * c-basic-offset: 4 * End: */ - diff --git a/include/dynamic-graph/signal.t.cpp b/include/dynamic-graph/signal.t.cpp index 6aa555e2f24ac903553baf130b86684c0dcf066f..1b0470560a8803a3664f0a1e39cd46a20f8b1a19 100644 --- a/include/dynamic-graph/signal.t.cpp +++ b/include/dynamic-graph/signal.t.cpp @@ -2,18 +2,6 @@ // Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, // JRL, CNRS/AIST. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_SIGNAL_T_CPP # define DYNAMIC_GRAPH_SIGNAL_T_CPP diff --git a/include/dynamic-graph/time-dependency.h b/include/dynamic-graph/time-dependency.h index c79c2b696b94d55d882ba19ec498ef84b1bdcbf9..1505e90e1602bf42a46c49311afd0b2cc20007f2 100644 --- a/include/dynamic-graph/time-dependency.h +++ b/include/dynamic-graph/time-dependency.h @@ -2,18 +2,6 @@ // Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, // JRL, CNRS/AIST. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_TIME_DEPENDENCY_H # define DYNAMIC_GRAPH_TIME_DEPENDENCY_H diff --git a/include/dynamic-graph/time-dependency.t.cpp b/include/dynamic-graph/time-dependency.t.cpp index 6199bb10d93985f44d0e15a0067bec6ed57cc33e..f9689574baaccb26f7dc2cb23bbc4ebf9725533c 100644 --- a/include/dynamic-graph/time-dependency.t.cpp +++ b/include/dynamic-graph/time-dependency.t.cpp @@ -2,18 +2,6 @@ // Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, // JRL, CNRS/AIST. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_TIME_DEPENDENCY_T_CPP # define DYNAMIC_GRAPH_TIME_DEPENDENCY_T_CPP diff --git a/include/dynamic-graph/tracer-real-time.h b/include/dynamic-graph/tracer-real-time.h index 3db261b69b7a3be14dd7938c4e7d966f0855f7dc..b39b8a79b67ff2e05b1615f97277a7d18fab85fa 100644 --- a/include/dynamic-graph/tracer-real-time.h +++ b/include/dynamic-graph/tracer-real-time.h @@ -2,18 +2,6 @@ // Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, // JRL, CNRS/AIST. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_TRACER_REAL_TIME_H # define DYNAMIC_GRAPH_TRACER_REAL_TIME_H diff --git a/include/dynamic-graph/tracer.h b/include/dynamic-graph/tracer.h index 386f4b238c303b4cf42da705008755b2745a24af..61a7f06bede65bb0ffe78095251ad3df97d0bc11 100644 --- a/include/dynamic-graph/tracer.h +++ b/include/dynamic-graph/tracer.h @@ -2,18 +2,6 @@ // Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, // JRL, CNRS/AIST. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, but -// WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -// General Lesser Public License for more details. You should have -// received a copy of the GNU Lesser General Public License along with -// dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_TRACER_H # define DYNAMIC_GRAPH_TRACER_H diff --git a/include/dynamic-graph/value.h b/include/dynamic-graph/value.h index 14b8f472daba21085620f6916890c3b0efdfd604..13898666e3485578cc1c7b469d61675b441808e3 100644 --- a/include/dynamic-graph/value.h +++ b/include/dynamic-graph/value.h @@ -3,17 +3,6 @@ // // Author: Florent Lamiraux // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or -// modify it under the terms of the GNU Lesser General Public License -// as published by the Free Software Foundation, either version 3 of -// the License, or (at your option) any later version. -// dynamic-graph is distributed in the hope that it will be -// useful, but WITHOUT ANY WARRANTY; without even the implied warranty -// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. You should -// have received a copy of the GNU Lesser General Public License along -// with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #ifndef DYNAMIC_GRAPH_VALUE_H #define DYNAMIC_GRAPH_VALUE_H @@ -112,7 +101,7 @@ namespace dynamicgraph { }; /* ---- HELPER ---------------------------------------------------------- */ - // Note: to ensure the WIN32 compatibility, it is necessary to export + // Note: to ensure the WIN32 compatibility, it is necessary to export // the template specialization. Also, it is forbidden to do the template // specialization declaration in the header file, for the same reason. template< typename T > diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3e167370cb4079ec41cd6e3c64ec89627755f273..00054c99e6935415523dec8fed476bd23fdd785a 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,27 +1,5 @@ # Copyright 2010, Olivier Stasse, JRL, CNRS/AIST # -# This file is part of dynamic-graph. -# dynamic-graph is free software: -# Redistribution and use in source and binary forms, with or without -# modification, are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, this -# list of conditions and the following disclaimer. -# -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #################################### ### Main Library @@ -41,6 +19,7 @@ ADD_LIBRARY(${LIBRARY_NAME} SHARED debug/debug.cpp debug/real-time-logger.cpp + debug/logger.cpp dgraph/entity.cpp dgraph/factory.cpp diff --git a/src/command/command.cpp b/src/command/command.cpp index 99fd8b776ad5aef59aa5fab634cfd20f3531b722..d38eddc271b5faed7a2a9f367e29d9b6e22eef7a 100644 --- a/src/command/command.cpp +++ b/src/command/command.cpp @@ -3,28 +3,6 @@ // // Author: Florent Lamiraux // -// This file is part of dynamic-graph. -// dynamic-graph is free software: -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include <sstream> #include "dynamic-graph/command.h" diff --git a/src/command/value.cpp b/src/command/value.cpp index bb32599d19a47cfafb33256d6cca641572e1c0ba..2dde1c3224d8c7cfdb4397c62184f517499446d3 100644 --- a/src/command/value.cpp +++ b/src/command/value.cpp @@ -3,28 +3,6 @@ // // Author: Florent Lamiraux // -// This file is part of dynamic-graph. -// dynamic-graph is free software: -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include "dynamic-graph/value.h" diff --git a/src/debug/contiifstream.cpp b/src/debug/contiifstream.cpp deleted file mode 100644 index 884ae8d3c99f3d16df05303d478fa2b037b5df9d..0000000000000000000000000000000000000000 --- a/src/debug/contiifstream.cpp +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, -// JRL, CNRS/AIST. -// -// This file is part of dynamic-graph. -// dynamic-graph is free software: -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -#include <dynamic-graph/contiifstream.h> -#include <dynamic-graph/debug.h> - -namespace dynamicgraph -{ - Contiifstream::Contiifstream (const std::string& n) - : filename (n), - cursor (0), - first (true) - {} - - Contiifstream::~Contiifstream () - { - dgDEBUGINOUT(5); - } - - bool - Contiifstream::loop () - { - dgDEBUGIN(25); - - bool res = false; - std::fstream file (filename.c_str ()); - file.seekg (cursor); - file.sync (); - - while(1) - { - file.get (buffer,BUFFER_SIZE); - if (file.gcount ()) - { - res = true; - std::string line (buffer); - if (! first) - reader.push_back (line); - cursor=file.tellg (); - ++cursor; - file.get (*buffer); // get the last char ( = '\n') - dgDEBUG(15) << "line: "<< line<<std::endl; - } - else - break; - } - - first = false; - dgDEBUGOUT(25); - return res; - } - - std::string - Contiifstream::next () - { - std::string res = *reader.begin (); - reader.pop_front (); - return res; - } -} // end of namespace dynamicgraph. diff --git a/src/debug/debug.cpp b/src/debug/debug.cpp index 935516f821b9f39ec78e90250aad22f3c5d81c07..4e3828c7bad8bd09a24121b68a5de2f7c48bb5f4 100644 --- a/src/debug/debug.cpp +++ b/src/debug/debug.cpp @@ -5,28 +5,6 @@ * * CNRS/AIST * - * This file is part of dynamic-graph. - * dynamic-graph is free software: - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include <dynamic-graph/debug.h> @@ -83,4 +61,3 @@ void DebugTrace::closeFile(const char *) //DebugTrace dgDebugFLOW(std::cout); //DebugTrace dgERRORFLOW(std::cerr); - diff --git a/src/debug/logger.cpp b/src/debug/logger.cpp new file mode 100644 index 0000000000000000000000000000000000000000..7aa01ccf7e0e9872013cb6425be0527bf7c95b0a --- /dev/null +++ b/src/debug/logger.cpp @@ -0,0 +1,104 @@ +/* + * Copyright 2015, 2019 + * LAAS-CNRS + * Andrea Del Prete, François Bailly, Olivier Stasse + * + */ + +#ifndef WIN32 +#include <sys/time.h> +#else +#include <Windows.h> +#endif +#define ENABLE_RT_LOG + +#include <stdio.h> +#include <iostream> +#include <iomanip> // std::setprecision +#include <dynamic-graph/logger.h> + +#include <dynamic-graph/real-time-logger.h> + +namespace dynamicgraph +{ + + using namespace std; + + Logger::Logger(double timeSample, double streamPrintPeriod) + : m_timeSample(timeSample), + m_streamPrintPeriod(streamPrintPeriod), + m_printCountdown(0.0) + { + m_lv = VERBOSITY_ERROR; + } + + Logger::~Logger() + { + } + + void Logger::setVerbosity(LoggerVerbosity lv) + { + m_lv=lv; + } + + LoggerVerbosity Logger::getVerbosity() + { + return m_lv; + + } + void Logger::countdown() + { + if(m_printCountdown<0.0) + m_printCountdown = m_streamPrintPeriod; + m_printCountdown -= m_timeSample; + } + + void Logger::sendMsg(string msg, MsgType type, const char* file, int line) + { + if(m_lv==VERBOSITY_NONE || + (m_lv==VERBOSITY_ERROR && !isErrorMsg(type)) || + (m_lv==VERBOSITY_WARNING_ERROR && !(isWarningMsg(type) || isErrorMsg(type))) || + (m_lv==VERBOSITY_INFO_WARNING_ERROR && isDebugMsg(type))) + return; + + // if print is allowed by current verbosity level + if(isStreamMsg(type)) + { + // check whether counter already exists + string id = file+toString(line); + map<string,double>::iterator it = m_stream_msg_counters.find(id); + if(it == m_stream_msg_counters.end()) + { + // if counter doesn't exist then add one + m_stream_msg_counters.insert(make_pair(id, 0.0)); + it = m_stream_msg_counters.find(id); + } + + // if counter is greater than 0 then decrement it and do not print + if(it->second>0.0) + { + it->second -= m_timeSample; + return; + } + else // otherwise reset counter and print + it->second = m_streamPrintPeriod; + } + dgRTLOG() << msg.c_str() << "\n"; + } + + bool Logger::setTimeSample(double t) + { + if(t<=0.0) + return false; + m_timeSample = t; + return true; + } + + bool Logger::setStreamPrintPeriod(double s) + { + if(s<=0.0) + return false; + m_streamPrintPeriod = s; + return true; + } +} // namespace dynamicgraph diff --git a/src/debug/real-time-logger.cpp b/src/debug/real-time-logger.cpp index 97ad576cbf3da2f3098be5291df0a45247f8def2..340738054f903b13fb8104b6569ed8b6c406d35c 100644 --- a/src/debug/real-time-logger.cpp +++ b/src/debug/real-time-logger.cpp @@ -4,17 +4,6 @@ * * LAAS-CNRS * - * This file is part of dynamic-graph. - * dynamic-graph is free software: you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation, either version 3 of - * the License, or (at your option) any later version. - * dynamic-graph is distributed in the hope that it will be - * useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. You should - * have received a copy of the GNU Lesser General Public License along - * with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. */ #include <dynamic-graph/real-time-logger.h> @@ -103,9 +92,9 @@ namespace dynamicgraph threadParam.sched_priority -= 5; if (threadParam.sched_priority < sched_get_priority_min (threadPolicy)) threadParam.sched_priority = sched_get_priority_min (threadPolicy); - + pthread_setschedparam (pthread_self(), threadPolicy, &threadParam); - } + } while (!requestShutdown_ || !logger->empty()) { diff --git a/src/dgraph/entity.cpp b/src/dgraph/entity.cpp index 1b5e128d93fcb6373ad541f315797ad54892c508..eb5bf597b060161b49110308e7a3c9ffa4f06941 100644 --- a/src/dgraph/entity.cpp +++ b/src/dgraph/entity.cpp @@ -5,28 +5,6 @@ * * CNRS/AIST * - * This file is part of dynamic-graph. - * dynamic-graph is free software: - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /*! Local framework includes */ @@ -278,3 +256,11 @@ getNewStyleCommand( const std::string& commandName ) return commandMap[commandName]; } +void Entity:: +sendMsg(const std::string &msg, + MsgType t, + const char *file, + int line) +{ + logger_.sendMsg("["+name+"]"+msg,t,file,line); +} diff --git a/src/dgraph/factory.cpp b/src/dgraph/factory.cpp index 0504d1d3100dbca25201961bff3cdd6feb955862..9c10a6c9f77f0f5afd61d7b81fb782cc8849ac99 100644 --- a/src/dgraph/factory.cpp +++ b/src/dgraph/factory.cpp @@ -1,28 +1,6 @@ // Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, // JRL, CNRS/AIST. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include <boost/foreach.hpp> diff --git a/src/dgraph/pool.cpp b/src/dgraph/pool.cpp index de105970890a5ce09fbef854fe36049e3044c95b..0d240cfe0784f564b2b72b607cb62e35f42eed92 100644 --- a/src/dgraph/pool.cpp +++ b/src/dgraph/pool.cpp @@ -5,29 +5,6 @@ * * CNRS/AIST * - * This file is part of dynamic-graph. - * dynamic-graph is free software: - * Redistribution and use in source and binary forms, - * with or without modification, are permitted provided that the following - * conditions are met: - * 1. Redistributions of source code must retain the above copyright notice, - * this list of conditions and the following disclaimer. - * - * 2. Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE - * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE - * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR - * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF - * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS - * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN - * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) - * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE - * POSSIBILITY OF SUCH DAMAGE. */ /* --------------------------------------------------------------------- */ @@ -295,4 +272,3 @@ getSignal( std::istringstream& sigpath ) } PoolStorage* PoolStorage::instance_ = 0; - diff --git a/src/exception/exception-abstract.cpp b/src/exception/exception-abstract.cpp index 895d70098cbfb7ed5e3119297dc74bd822974b8c..f1eb90dd0ed428c587d1c09372b4fb6a6503e04f 100644 --- a/src/exception/exception-abstract.cpp +++ b/src/exception/exception-abstract.cpp @@ -1,28 +1,6 @@ // Copyright 2010, François Bleibel, Thomas Moulard, Olivier Stasse, // JRL, CNRS/AIST. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include <cstring> #include <dynamic-graph/exception-abstract.h> diff --git a/src/exception/exception-factory.cpp b/src/exception/exception-factory.cpp index 523cea2631df99a8d982253237d67321e16d741b..96e925710c2de866b445eb599746c1c605c3c01c 100644 --- a/src/exception/exception-factory.cpp +++ b/src/exception/exception-factory.cpp @@ -5,28 +5,6 @@ * * CNRS/AIST * - * This file is part of dynamic-graph. - * dynamic-graph is free software: - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include <dynamic-graph/exception-factory.h> diff --git a/src/exception/exception-signal.cpp b/src/exception/exception-signal.cpp index 53d35d9ac660c6a0365f8965d45bf36f72a7b710..44ab17d7109e4d8a19485dddd3a49b90d651c27e 100644 --- a/src/exception/exception-signal.cpp +++ b/src/exception/exception-signal.cpp @@ -5,28 +5,6 @@ * * CNRS/AIST * - * This file is part of dynamic-graph. - * dynamic-graph is free software: - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include <dynamic-graph/exception-signal.h> diff --git a/src/exception/exception-traces.cpp b/src/exception/exception-traces.cpp index 0d15f8a793983e20e47fc070a90f00cb25ec798a..a02858182e5873c009b241d3e94973960261635f 100644 --- a/src/exception/exception-traces.cpp +++ b/src/exception/exception-traces.cpp @@ -5,28 +5,6 @@ * * CNRS/AIST * - * This file is part of dynamic-graph. - * dynamic-graph is free software: - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include <dynamic-graph/exception-traces.h> diff --git a/src/signal/signal-array.cpp b/src/signal/signal-array.cpp index 6dd75c9e2ddb4965ffe95afdf6684140802e6cba..02e8a00cee5631177ed7d504a46044908c3ffd42 100644 --- a/src/signal/signal-array.cpp +++ b/src/signal/signal-array.cpp @@ -5,28 +5,6 @@ * * CNRS/AIST * - * This file is part of dynamic-graph. - * dynamic-graph is free software: - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ #include <dynamic-graph/signal-array.h> diff --git a/src/signal/signal-cast-helper.cpp b/src/signal/signal-cast-helper.cpp index a483fa0d6deb777feabf26a0f787795afc0f6756..dc3d9bca45ea526ede9041599990b96f46b6515f 100644 --- a/src/signal/signal-cast-helper.cpp +++ b/src/signal/signal-cast-helper.cpp @@ -1,28 +1,6 @@ // -*- c++-mode -*- // Copyright 2010 François Bleibel Thomas Moulard, Olivier Stasse, Nicolas Mansard // -// This file is part of dynamic-graph. -// dynamic-graph is free software: -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include <boost/date_time/posix_time/posix_time.hpp> #include <dynamic-graph/signal-caster.h> diff --git a/src/signal/signal-caster.cpp b/src/signal/signal-caster.cpp index 410b75e2bbe89c055a536545f060f1087b104489..b8cac844f1e28dd6e64a64f7fbe77951606f3197 100644 --- a/src/signal/signal-caster.cpp +++ b/src/signal/signal-caster.cpp @@ -1,28 +1,6 @@ // -*- c++-mode -*- // Copyright 2010 François Bleibel Thomas Moulard, Olivier Stasse // -// This file is part of dynamic-graph. -// dynamic-graph is free software: -// Redistribution and use in source and binary forms, with or without -// modification, are permitted provided that the following conditions are met: -// -// * Redistributions of source code must retain the above copyright notice, this -// list of conditions and the following disclaimer. -// -// * Redistributions in binary form must reproduce the above copyright notice, -// this list of conditions and the following disclaimer in the documentation -// and/or other materials provided with the distribution. -// -// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. #include <dynamic-graph/signal-caster.h> #include <dynamic-graph/dynamic-graph-api.h> diff --git a/src/traces/tracer-real-time.cpp b/src/traces/tracer-real-time.cpp index b70249f4c579bae199f3afcf1587fb88b4b52d0b..cc7abf083ae7c319749fc563a773d4161e7f408c 100644 --- a/src/traces/tracer-real-time.cpp +++ b/src/traces/tracer-real-time.cpp @@ -5,28 +5,6 @@ * * CNRS/AIST * - * This file is part of dynamic-graph. - * dynamic-graph is free software: - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* --------------------------------------------------------------------- */ diff --git a/src/traces/tracer.cpp b/src/traces/tracer.cpp index 9ad0eef5a420a85814c2bab1f8fb91d6bf3d7653..3d2b97825f5cc9ff7dd0714dcdbe4d5c5eb2e4a2 100644 --- a/src/traces/tracer.cpp +++ b/src/traces/tracer.cpp @@ -5,28 +5,6 @@ * * CNRS/AIST * - * This file is part of dynamic-graph. - * dynamic-graph is free software: - * Redistribution and use in source and binary forms, with or without - * modification, are permitted provided that the following conditions are met: - * - * * Redistributions of source code must retain the above copyright notice, this - * list of conditions and the following disclaimer. - * - * * Redistributions in binary form must reproduce the above copyright notice, - * this list of conditions and the following disclaimer in the documentation - * and/or other materials provided with the distribution. - * - * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" - * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE - * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE - * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE - * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL - * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR - * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER - * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE - * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ /* --------------------------------------------------------------------- */ diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 36cd5d1c10c726da06c51bc1ee8e76af2879832c..c9cebb2c7d86f6d01bc5b5e889b0bba2303013e0 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -1,17 +1,5 @@ # Copyright 2010, Olivier Stasse, JRL, CNRS/AIST # -# This file is part of dynamic-graph. -# dynamic-graph is free software: you can redistribute it and/or -# modify it under the terms of the GNU Lesser General Public License -# as published by the Free Software Foundation, either version 3 of -# the License, or (at your option) any later version. -# -# dynamic-graph is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Lesser Public License for more details. You should have -# received a copy of the GNU Lesser General Public License along with -# dynamic-graph. If not, see <http://www.gnu.org/licenses/>. ADD_DEFINITIONS(-DDEBUG=2) @@ -68,3 +56,6 @@ DYNAMIC_GRAPH_TEST(signal-time-dependent) DYNAMIC_GRAPH_TEST(value) DYNAMIC_GRAPH_TEST(signal-ptr) DYNAMIC_GRAPH_TEST(real-time-logger) +DYNAMIC_GRAPH_TEST(debug-trace) +DYNAMIC_GRAPH_TEST(debug-tracer) +TARGET_LINK_LIBRARIES(debug-tracer tracer) diff --git a/tests/custom-entity.cpp b/tests/custom-entity.cpp index 31b523a00f91bf4e3d64d68f8a4ba788b027a7ef..e7448267f4467397be1c6d148eca8a71d8a7889c 100644 --- a/tests/custom-entity.cpp +++ b/tests/custom-entity.cpp @@ -1,17 +1,5 @@ // Copyright 2010 Thomas Moulard. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// You should have received a copy of the GNU Lesser General Public License -// along with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #include <sstream> #include <dynamic-graph/factory.h> @@ -81,4 +69,3 @@ BOOST_AUTO_TEST_CASE (display) // Deregister entities before destroying them dynamicgraph::PoolStorage::destroy(); } - diff --git a/tests/debug-trace.cpp b/tests/debug-trace.cpp new file mode 100644 index 0000000000000000000000000000000000000000..a3907849801bd466f5beab6aed3338b61b9dd993 --- /dev/null +++ b/tests/debug-trace.cpp @@ -0,0 +1,107 @@ +/* Copyright 2019, LAAS-CNRS + * + * Olivier Stasse + * + */ +#include <sstream> +#include <iostream> +#include <dynamic-graph/entity.h> +#include <dynamic-graph/exception-factory.h> +#include "dynamic-graph/factory.h" +#include "dynamic-graph/pool.h" + +#define VP_DEBUG 1 +#define VP_DEBUG_MODE 50 +#define VP_TEMPLATE_DEBUG_MODE 50 + + +#include <dynamic-graph/debug.h> + +#define BOOST_TEST_MODULE debug-trace + +#include <boost/test/unit_test.hpp> +#include <boost/test/output_test_stream.hpp> + +using boost::test_tools::output_test_stream; + + +namespace dynamicgraph +{ + class CustomEntity : public Entity + { + public: + static const std::string CLASS_NAME; + virtual const std::string& getClassName () const + { + return CLASS_NAME; + } + CustomEntity (const std::string n) + : Entity (n) + { + dynamicgraph::dgDEBUGFLOW.openFile("/tmp/dynamic-graph-traces.txt"); + } + ~CustomEntity() + { + dynamicgraph::dgDEBUGFLOW.closeFile("/tmp/dynamic-graph-traces.txt"); + } + void testDebugTrace() + { + /// Test debugging information when entering the code. + dgDEBUGIN(5); + + /// Intermediate test. + dgDEBUGINOUT(5); + + dgDEBUG(5) << "Here is a test" << std::endl; + + /// Test debugging information when going out of the code. + dgDEBUGOUT(5); + } + }; + DYNAMICGRAPH_FACTORY_ENTITY_PLUGIN (CustomEntity,"CustomEntity"); +} + +BOOST_AUTO_TEST_CASE(testDebugTrace) +{ + + + BOOST_CHECK_EQUAL (dynamicgraph::CustomEntity::CLASS_NAME, "CustomEntity"); + + dynamicgraph::CustomEntity& entity = *(dynamic_cast<dynamicgraph::CustomEntity *>( + dynamicgraph::FactoryStorage::getInstance()->newEntity("CustomEntity", + "my-entity"))); + entity.testDebugTrace(); + + /// Copy the debug file into the oss_debug_file + output_test_stream output; + std::fstream the_debug_file; + the_debug_file.open(dynamicgraph::DebugTrace::DEBUG_FILENAME_DEFAULT, + std::ios::in ); + + // Extract the filename and this source file from the output + std::string astr; + std::ostringstream oss_debug_file; + while(std::getline(the_debug_file,astr)) + { + std::size_t found=astr.find(":"); + std::string asubstr = astr.substr(found+1,astr.length()); + found = asubstr.find(":"); + std::string asubstr2 = asubstr.substr(found+1,astr.length()); + oss_debug_file << asubstr2; + } + + the_debug_file.close(); + + // Compare with the strings put inside this source file + std::string str_to_test = "# In {" + "# In/Out { }" + "Here is a test" + "# Out }"; + bool two_sub_string_identical; + + // Make comparisons. + two_sub_string_identical = str_to_test == oss_debug_file.str(); + + BOOST_CHECK(two_sub_string_identical); + +} diff --git a/tests/debug-tracer.cpp b/tests/debug-tracer.cpp new file mode 100644 index 0000000000000000000000000000000000000000..8bf547d538434172ab0880d1ff025c6941218117 --- /dev/null +++ b/tests/debug-tracer.cpp @@ -0,0 +1,117 @@ +/* Copyright 2019, LAAS-CNRS + * + * Olivier Stasse + * + */ + +#include <iostream> + +#include <dynamic-graph/entity.h> +#include <dynamic-graph/exception-factory.h> +#include <dynamic-graph/factory.h> +#include <dynamic-graph/pool.h> +#include <dynamic-graph/signal-ptr.h> +#include <dynamic-graph/signal-time-dependent.h> +#include <dynamic-graph/tracer.h> + +#define BOOST_TEST_MODULE debug-tracer + +#include <boost/test/unit_test.hpp> +#include <boost/test/output_test_stream.hpp> + +namespace dynamicgraph +{ + struct MyEntity : public dynamicgraph::Entity + { + static const std::string CLASS_NAME; + + dynamicgraph::Signal<double, int> m_sigdSIN; + dynamicgraph::SignalTimeDependent<double, int> m_sigdTimeDepSOUT; + dynamicgraph::SignalTimeDependent<double, int> m_sigdTwoTimeDepSOUT; + + MyEntity (const std::string& name) + : Entity (name) + ,m_sigdSIN("MyEntity("+name+")::input(double)::in_double") + ,m_sigdTimeDepSOUT(boost::bind(&MyEntity::update,this,_1,_2), + m_sigdSIN, + "MyEntity("+name+")::input(double)::out_double") + ,m_sigdTwoTimeDepSOUT(boost::bind(&MyEntity::update,this,_1,_2), + m_sigdSIN, + "MyEntity("+name+")::input(double)::out2double") + + { + signalRegistration(m_sigdSIN + << m_sigdTimeDepSOUT + << m_sigdTwoTimeDepSOUT); + } + + virtual void display (std::ostream& os) const + { + os << "Hello! My name is " << getName () << " !" << std::endl; + } + + virtual const std::string& getClassName () const + { + return CLASS_NAME; + } + + double & update(double &res, const int &inTime) + { + const double &aDouble = m_sigdSIN(inTime); + res = aDouble; + return res; + } + + }; + DYNAMICGRAPH_FACTORY_ENTITY_PLUGIN (MyEntity,"MyEntity"); +} + +BOOST_AUTO_TEST_CASE(test_tracer) +{ + + // Creates a tracer. + dynamicgraph::Tracer & atracer = + *dynamic_cast<dynamicgraph::Tracer *> + (dynamicgraph::FactoryStorage::getInstance()->newEntity("Tracer", + "my-tracer")); + + dynamicgraph::Entity & entity = + *dynamicgraph::FactoryStorage::getInstance()->newEntity("MyEntity", + "my-entity"); + + /// Add trace by name + atracer.addSignalToTraceByName("my-entity.out_double","output"); + + + dynamicgraph::SignalBase<int> & aSignal = + entity.getSignal("out2double"); + + dynamicgraph::Signal<double,int> & aSignalInt = + *(dynamic_cast<dynamicgraph::Signal<double,int> *> + (& entity.getSignal("in_double"))); + + /// Add trace by signal object + atracer.addSignalToTrace(aSignal,"output2"); + + aSignalInt.setConstant(1.5); + + std::string rootdir("/tmp"); + std::string basename("my-tracer"); + std::string suffix(".dat"); + + /// Test openfiles + atracer.openFiles(rootdir,basename,suffix); + + atracer.start(); + + for(int i=0;i<1000;i++) + { + aSignal.setTime(i); + aSignalInt.setTime(i); + atracer.recordTrigger(i,i); + } + + atracer.stop(); + + atracer.closeFiles(); +} diff --git a/tests/entity.cpp b/tests/entity.cpp index eb15d6319d8637aae1b692d40eb85f3f0ec88ef9..7e4a5d091496b34e31ef71a2091e3e5713b16dc6 100644 --- a/tests/entity.cpp +++ b/tests/entity.cpp @@ -1,23 +1,18 @@ -// Copyright 2010 Thomas Moulard. -// -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// You should have received a copy of the GNU Lesser General Public License -// along with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. +/* Copyright 2010-2019 LAAS, CNRS + * Thomas Moulard. + * + */ + +#define ENABLE_RT_LOG #include <sstream> #include <dynamic-graph/entity.h> #include <dynamic-graph/exception-factory.h> #include "dynamic-graph/factory.h" #include "dynamic-graph/pool.h" +#include <dynamic-graph/real-time-logger.h> +#include <dynamic-graph/signal-ptr.h> +#include <dynamic-graph/signal-time-dependent.h> #define BOOST_TEST_MODULE entity @@ -31,6 +26,9 @@ namespace dynamicgraph class CustomEntity : public Entity { public: + dynamicgraph::SignalPtr<double, int> m_sigdSIN; + dynamicgraph::SignalTimeDependent<double, int> m_sigdTimeDepSOUT; + static const std::string CLASS_NAME; virtual const std::string& getClassName () const { @@ -38,8 +36,32 @@ namespace dynamicgraph } CustomEntity (const std::string n) : Entity (n) + ,m_sigdSIN(NULL,"CustomEntity("+name+")::input(double)::in_double") + ,m_sigdTimeDepSOUT(boost::bind(&CustomEntity::update,this,_1,_2), + m_sigdSIN, + "CustomEntity("+name+")::input(double)::out_double") + + { + } + + void addSignal() + { + signalRegistration(m_sigdSIN << m_sigdTimeDepSOUT); + } + + void rmValidSignal() { + signalDeregistration("in_double"); + signalDeregistration("out_double"); } + + double & update(double &res, const int &inTime) + { + const double &aDouble = m_sigdSIN(inTime); + res = aDouble; + return res; + } + }; DYNAMICGRAPH_FACTORY_ENTITY_PLUGIN (CustomEntity,"CustomEntity"); } @@ -88,6 +110,23 @@ BOOST_AUTO_TEST_CASE (signal) BOOST_CHECK_EQUAL (exception.getCode (), dynamicgraph::ExceptionFactory::UNREFERED_SIGNAL); } + // deregistration + try + { + dynamicgraph::CustomEntity * customEntity = + dynamic_cast<dynamicgraph::CustomEntity *>(&entity); + customEntity->addSignal(); + // Removing signals is working the first time + customEntity->rmValidSignal(); + // Removing signals generates an exception the second time. + customEntity->rmValidSignal(); + BOOST_ERROR ("Should never happen."); + } + catch (const dynamicgraph::ExceptionFactory& exception) + { + BOOST_CHECK_EQUAL (exception.getCode (), + dynamicgraph::ExceptionFactory::UNREFERED_SIGNAL); + } } BOOST_AUTO_TEST_CASE (displaySignalList) @@ -137,9 +176,48 @@ BOOST_AUTO_TEST_CASE (writeCompletionList) dynamicgraph::PoolStorage::getInstance()->getEntity("my-entity"); output_test_stream output; - entity.writeGraph (output); + entity.writeCompletionList (output); + + BOOST_CHECK (output.is_equal ("print\nsignals\nsignalDep\n")); +} + +BOOST_AUTO_TEST_CASE (sendMsg) +{ + std::ofstream of; + of.open("/tmp/dg-LOGS.txt",std::ofstream::out|std::ofstream::app); + dgADD_OSTREAM_TO_RTLOG(of); + + dynamicgraph::Entity& entity = + dynamicgraph::PoolStorage::getInstance()->getEntity("my-entity"); + + output_test_stream output; + + for(unsigned int i=0; + i<4; + i++) + { + for(unsigned int j=0;j<2000;j++) + { + dynamicgraph::LoggerVerbosity aLoggerVerbosityLevel= + (dynamicgraph::LoggerVerbosity) i; + entity.setLoggerVerbosityLevel(aLoggerVerbosityLevel); + if (entity.getLoggerVerbosityLevel()!=aLoggerVerbosityLevel) + output << "Mismatch output"; + + std::string aBaseMsg="Auto Test Case"; + std::string aMsg=aBaseMsg+" DEBUG"; + entity.sendMsg(aMsg, dynamicgraph::MSG_TYPE_DEBUG, __FILE__, __LINE__); + aMsg=aBaseMsg+" INFO"; + entity.sendMsg(aMsg, dynamicgraph::MSG_TYPE_INFO, __FILE__, __LINE__); + aMsg=aBaseMsg+" WARNING"; + entity.sendMsg(aMsg, dynamicgraph::MSG_TYPE_WARNING, __FILE__, __LINE__); + aMsg=aBaseMsg+" DEBUG"; + entity.sendMsg(aMsg, dynamicgraph::MSG_TYPE_ERROR, __FILE__, __LINE__); + }; + }; BOOST_CHECK (output.is_equal ("")); + dynamicgraph::RealTimeLogger::destroy(); } // WTF? diff --git a/tests/factory.cpp b/tests/factory.cpp index fbc5683be2e9f5e5588a1a7ea669bca2b6650f7a..5fbeb4f6350434d9ecf54aefa75a18ca7c081208 100644 --- a/tests/factory.cpp +++ b/tests/factory.cpp @@ -1,17 +1,5 @@ // Copyright 2010 Thomas Moulard. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// You should have received a copy of the GNU Lesser General Public License -// along with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #include <sstream> #include <dynamic-graph/factory.h> diff --git a/tests/interpreter-tracer.cpp b/tests/interpreter-tracer.cpp index d314fbea0e588b816295600a8bb33ec3ab0c0662..f514b87e984f5bd0e2b3354cd031d8d658152b24 100644 --- a/tests/interpreter-tracer.cpp +++ b/tests/interpreter-tracer.cpp @@ -1,17 +1,5 @@ // Copyright 2010 Thomas Moulard. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// You should have received a copy of the GNU Lesser General Public License -// along with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #include <sstream> #include <dynamic-graph/exception-factory.h> diff --git a/tests/pool.cpp b/tests/pool.cpp index 0e906702359bd0bbbd236cb5f390836416644954..9ea3b2da88211e4df5fb7fd1a2ea95f042944f9b 100644 --- a/tests/pool.cpp +++ b/tests/pool.cpp @@ -1,23 +1,14 @@ // Copyright 2010 Thomas Moulard. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// You should have received a copy of the GNU Lesser General Public License -// along with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #include <sstream> +#include <iostream> #include <dynamic-graph/entity.h> #include <dynamic-graph/factory.h> #include <dynamic-graph/exception-factory.h> #include <dynamic-graph/pool.h> +#include <dynamic-graph/signal-ptr.h> +#include <dynamic-graph/signal-time-dependent.h> #define BOOST_TEST_MODULE pool @@ -30,9 +21,18 @@ struct MyEntity : public dynamicgraph::Entity { static const std::string CLASS_NAME; + dynamicgraph::SignalPtr<double, int> m_sigdSIN; + dynamicgraph::SignalTimeDependent<double, int> m_sigdTimeDepSOUT; + MyEntity (const std::string& name) : Entity (name) - {} + ,m_sigdSIN(NULL,"MyEntity("+name+")::input(double)::in_double") + ,m_sigdTimeDepSOUT(boost::bind(&MyEntity::update,this,_1,_2), + m_sigdSIN, + "MyEntity("+name+")::input(double)::out_double") + { + signalRegistration(m_sigdSIN << m_sigdTimeDepSOUT); + } virtual void display (std::ostream& os) const { @@ -43,22 +43,162 @@ struct MyEntity : public dynamicgraph::Entity { return CLASS_NAME; } + + double & update(double &res, const int &inTime) + { + const double &aDouble = m_sigdSIN(inTime); + res = aDouble; + return res; + } + }; DYNAMICGRAPH_FACTORY_ENTITY_PLUGIN (MyEntity, "MyEntity"); +namespace dg = dynamicgraph; BOOST_AUTO_TEST_CASE (pool_display) { - dynamicgraph::Entity* entity = - dynamicgraph::FactoryStorage::getInstance()-> + /// Create Entity + dg::Entity* entity = + dg::FactoryStorage::getInstance()-> newEntity("MyEntity", "MyEntityInst"); + /// Test exception catching when registering Entity + bool res=false; + try { + dg::Entity* entity2 = + dg::FactoryStorage::getInstance()-> + newEntity("MyEntity", "MyEntityInst"); + + bool res2 = (entity2==entity); + BOOST_CHECK(res2); + } + catch (const dg::ExceptionFactory &aef) + { + res =(aef.getCode()==dg::ExceptionFactory::OBJECT_CONFLICT); + } + BOOST_CHECK(res); + + /// Test exception catching when deregistering Entity + res=false; + try { + dg::FactoryStorage::getInstance()-> + deregisterEntity("MyEntityInstFailure"); + } + catch (const dg::ExceptionFactory &aef) + { + res =(aef.getCode()==dg::ExceptionFactory::OBJECT_CONFLICT); + } + BOOST_CHECK(res); + + /// Search for an entity inside the map output_test_stream output; - dynamicgraph::Entity& e = dynamicgraph::PoolStorage::getInstance()->getEntity + dg::Entity& e = dg::PoolStorage::getInstance()->getEntity ("MyEntityInst"); e.display(output); BOOST_CHECK (output.is_equal ("Hello! My name is MyEntityInst !\n")); - dynamicgraph::PoolStorage::getInstance()->deregisterEntity + + /// Search for an entity inside the map + res=false; + try + { + dg::PoolStorage::getInstance()->getEntity + ("MyEntityInstFailure"); + } + catch (const dg::ExceptionFactory &aef) + { + res =(aef.getCode()==dg::ExceptionFactory::UNREFERED_OBJECT); + } + BOOST_CHECK (res); + + /// Testing entityMap + const dg::PoolStorage::Entities& anEntityMap = + dg::PoolStorage::getInstance()->getEntityMap(); + + bool testExistence = anEntityMap.find("MyEntityInst")==anEntityMap.end(); + BOOST_CHECK(!testExistence); + + /// Testing the existence of an entity + testExistence = dg::PoolStorage::getInstance()->existEntity + ("MyEntityInst",entity); + + BOOST_CHECK(testExistence); + + /// Testing the completion list of pool storage + dg::PoolStorage::getInstance()->writeCompletionList + (output); + BOOST_CHECK (output.is_equal ("MyEntityInst.in_double\nMyEntityInst.out_double\nprint\nsignals\nsignalDep\n")); + + /// Checking the graph generated by the pool + dg::PoolStorage::getInstance()->writeGraph("output.dot"); + std::fstream the_debug_file; + the_debug_file.open("output.dot"); + std::ostringstream oss_output_wgph; + oss_output_wgph << the_debug_file.rdbuf(); + the_debug_file.close(); + + /// Use a predefined output + std::string str_to_test="/* This graph has been automatically generated.\n" + " 2019 Month: 2 Day: 28 Time: 11:28 */\n" + "digraph \"output\" { graph [ label=\"output\" bgcolor = white rankdir=LR ]\n" + "\t node [ fontcolor = black, color = black, fillcolor = gold1, style=filled, shape=box ] ; \n" + "\tsubgraph cluster_Entities { \n" + "\t} \n" + "\"MyEntityInst\" [ label = \"MyEntityInst\" ,\n" + " fontcolor = black, color = black, fillcolor=cyan, style=filled, shape=box ]\n" + "}\n"; + + /// Check the two substring (remove the date) - + std::string s_output_wgph = oss_output_wgph.str(); + std::string s_crmk="*/"; + + std::size_t find_s_output_wgph = s_output_wgph.find(s_crmk); + std::string sub_s_output_wgph =s_output_wgph.substr(find_s_output_wgph, s_output_wgph.length()); + std::size_t find_str_to_test = str_to_test.find(s_crmk); + std::string sub_str_to_test =str_to_test.substr(find_str_to_test, str_to_test.length()); + + bool two_sub_string_identical; + two_sub_string_identical=sub_str_to_test==sub_s_output_wgph; + + BOOST_CHECK(two_sub_string_identical); + + /// Test name of a valid signal. + std::istringstream an_iss("MyEntityInst.in_double"); + + dg::SignalBase<int> &aSignal= + dg::PoolStorage::getInstance()->getSignal(an_iss); + + std::string aSignalName=aSignal.getName(); + testExistence = aSignalName=="MyEntity(MyEntityInst)::input(double)::in_double"; + BOOST_CHECK(testExistence); + + /// Test name of an unvalid signal. + an_iss.str("MyEntityInst.in2double"); + + try { + dg::PoolStorage::getInstance()->getSignal(an_iss); + } + catch(const dg::ExceptionFactory &aef) + { + res =(aef.getCode()==dg::ExceptionFactory::UNREFERED_SIGNAL); + } + BOOST_CHECK(res); + + + /// Deregister the entity. + dg::PoolStorage::getInstance()->deregisterEntity (entity->getName()); - dynamicgraph::PoolStorage::destroy(); + + /// Testing the existance of an entity + testExistence = dg::PoolStorage::getInstance()->existEntity + ("MyEntityInst",entity); + + BOOST_CHECK(!testExistence); + + /// Create Entity + std::string name_entity("MyEntityInst2"); + dg::PoolStorage::getInstance()-> + clearPlugin(name_entity); + + dg::PoolStorage::destroy(); } diff --git a/tests/real-time-logger.cpp b/tests/real-time-logger.cpp index c96b15644123b50844eea72b86e95dba8ae74303..eb5b7e1c7bfafa35b06efb3a18f504fe3bf5956b 100644 --- a/tests/real-time-logger.cpp +++ b/tests/real-time-logger.cpp @@ -4,17 +4,6 @@ * * LAAS-CNRS * - * This file is part of dynamic-graph. - * dynamic-graph is free software: you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation, either version 3 of - * the License, or (at your option) any later version. - * dynamic-graph is distributed in the hope that it will be - * useful, but WITHOUT ANY WARRANTY; without even the implied warranty - * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License for more details. You should - * have received a copy of the GNU Lesser General Public License along - * with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. */ #include <iostream> diff --git a/tests/signal-cast-registerer-libA.cpp b/tests/signal-cast-registerer-libA.cpp index b403e89456416b4b1495235e46aa15cfc7a9e6d7..ffd30daca97224f9d9a20a84a419a9ab4d2d55ca 100644 --- a/tests/signal-cast-registerer-libA.cpp +++ b/tests/signal-cast-registerer-libA.cpp @@ -1,17 +1,5 @@ // Copyright 2010 Thomas Moulard. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// You should have received a copy of the GNU Lesser General Public License -// along with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #include "signal-cast-registerer-libA.hh" diff --git a/tests/signal-cast-registerer-libA.hh b/tests/signal-cast-registerer-libA.hh index f0065e224f434fc72190f2ff49efa82a5e8bd37f..d4a940c12f2cb0686730842f5eba35b2e01c56d3 100644 --- a/tests/signal-cast-registerer-libA.hh +++ b/tests/signal-cast-registerer-libA.hh @@ -1,17 +1,5 @@ // Copyright 2010 Thomas Moulard. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// You should have received a copy of the GNU Lesser General Public License -// along with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #include <Eigen/Dense> diff --git a/tests/signal-cast-registerer-libB.cpp b/tests/signal-cast-registerer-libB.cpp index a8ce1b1aa0c165863dd8464a0eeaf15d6dda0bc6..81a8391d68d66de64bdf59cef9ad8056f2ecd9c3 100644 --- a/tests/signal-cast-registerer-libB.cpp +++ b/tests/signal-cast-registerer-libB.cpp @@ -1,17 +1,5 @@ // Copyright 2010 Thomas Moulard. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// You should have received a copy of the GNU Lesser General Public License -// along with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #include "signal-cast-registerer-libB.hh" diff --git a/tests/signal-cast-registerer-libB.hh b/tests/signal-cast-registerer-libB.hh index 1c600a5b6bfdba87e4ce6ad84c0df57eb19e5c93..47f43999f9254eea824ddf8a0c69b7068fab94cb 100644 --- a/tests/signal-cast-registerer-libB.hh +++ b/tests/signal-cast-registerer-libB.hh @@ -1,17 +1,5 @@ // Copyright 2010 Thomas Moulard. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// You should have received a copy of the GNU Lesser General Public License -// along with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #include <Eigen/Core> diff --git a/tests/signal-cast-registerer.cpp b/tests/signal-cast-registerer.cpp index 1982589f3d3d73f0a8092541a2c781a355845441..42b2b3ffb06a1e1ab1ca1e4d97c1c716ceccd39a 100644 --- a/tests/signal-cast-registerer.cpp +++ b/tests/signal-cast-registerer.cpp @@ -1,17 +1,5 @@ // Copyright 2010 Thomas Moulard. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// You should have received a copy of the GNU Lesser General Public License -// along with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #include <string> diff --git a/tests/signal-ptr.cpp b/tests/signal-ptr.cpp index 36638fda9b860f3da51ef1008ab03b089ec75783..9e196ace7c2d1c7820f8a0bbf8ad61f439d2af3f 100644 --- a/tests/signal-ptr.cpp +++ b/tests/signal-ptr.cpp @@ -1,17 +1,5 @@ // Copyright 2010 Thomas Moulard. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// You should have received a copy of the GNU Lesser General Public License -// along with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #include <string> diff --git a/tests/signal-time-dependent.cpp b/tests/signal-time-dependent.cpp index 246a3c6bd690f9665292f45bd15231bee8ee0af5..e186960aa118fda7e644c04f65c463b18829a3be 100644 --- a/tests/signal-time-dependent.cpp +++ b/tests/signal-time-dependent.cpp @@ -1,17 +1,5 @@ // Copyright 2010 Thomas Moulard. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// You should have received a copy of the GNU Lesser General Public License -// along with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #include <boost/foreach.hpp> diff --git a/tests/value.cpp b/tests/value.cpp index c3f62fb3925936fe11968f4bc3033bdacc7a0e3f..ca4855c9192da292121562c5b0c16771be5d533b 100644 --- a/tests/value.cpp +++ b/tests/value.cpp @@ -1,17 +1,5 @@ // Copyright 2011 Florent Lamiraux, Thomas Moulard. // -// This file is part of dynamic-graph. -// dynamic-graph is free software: you can redistribute it and/or modify -// it under the terms of the GNU Lesser General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// dynamic-graph is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU Lesser General Public License for more details. -// You should have received a copy of the GNU Lesser General Public License -// along with dynamic-graph. If not, see <http://www.gnu.org/licenses/>. #include <iostream> #include "dynamic-graph/value.h"