Ariles
|
branch | HEAD v2 | pkg_catkin_2 (ROS/catkin package) | pkg_freebsd_2 (FreeBSD package) |
---|---|---|---|
CI status | |||
package |
Loosely speaking, ariles
is a C++ reflection library, i.e., it provides meta-programming APIs for implementation of class visitors (processors). It also provides a number of (de)serializers based on these APIs, e.g., YAML
, JSON
, XML
, ROS
parameter server; and serialization wrappers for some types, e.g., STL
containers, smart pointers, Eigen
matrices, etc.
boost::serialization
, ariles
tries to be flexible while parsing by:XML
,YAML
<-> ROS
parameter server. Note that the conversion is not data-agnostic, i.e., the complete data structure must be represented in C++ code.Octave
script for debugging purposes.URDF
.Class [./tests/api_v2/types/minimal.h
]:
Serialization:
Result:
Deserialization:
Conversion:
See demo for more exaples: https://asherikov.github.io/ariles/2/DEMO.html [./tests/api_v2/demo_api_v2.cpp
]
ariles
includes a number of optional visitors that support various data representation formats, in particular:
YAML
via yaml-cpp
: https://asherikov.github.io/ariles/2/group__yaml__cpp.html.msgpack
via msgpack-c
: https://asherikov.github.io/ariles/2/group__msgpack.html.JSON
via RapidJSON
, with optional Jsonnet preprocessing: https://asherikov.github.io/ariles/2/group__rapidjson.html and https://asherikov.github.io/ariles/2/group__jsonnet.html.XML
via PugiXML
: https://asherikov.github.io/ariles/2/group__pugixml.htmlOctave
script, output only, no dependencies: https://asherikov.github.io/ariles/2/group__octave.htmlROS
parameter server, via standard ROS
libs: https://asherikov.github.io/ariles/2/group__ros.htmlgraphviz
dot files for diagram generation: https://asherikov.github.io/ariles/2/group__graphviz.htmlThe complete list of modules is available at https://asherikov.github.io/ariles/2/modules.html
ariles
provides serialization wrappers for the follwing types:
std::string
, std::vector
, std::map
, std::pair
, std::shared_ptr
, std::unique_ptr
.Eigen
types: matrices, transforms, quaternions.Boost
classes: boost::optional
, boost::movelib::unique_ptr
. boost::shared_ptr
.cmake
>= 3.0C++11
compatible compilerboost
Visitors and corresponding dependencies can be enabled or disabled via cmake options, the same applies to data types which depend on external libraries.
An example catkin package is provided in pkg_catkin_2
branch of the main repository -> https://github.com/asherikov/ariles/tree/pkg_catkin_2.
ariles2::rosparam::Reader
, but its functionality is more limited.ariles
it is more focused on reflection per se rather than applications, for example, it allows to set value by string name of a class member, handles class methods, etc. Ponder
does not rely as much on preprocessor macro, but is more verbose.ponder
. Partially inspired ariles
2.x.x API.pfr
): C++14 library providing tuple like methods for aggregate initializable structures. Addresses a somewhat different but related problem.boost::serialization
, https://github.com/USCiLab/cereal.