Skip to content
Snippets Groups Projects
Verified Commit 5bd8ef10 authored by Justin Carpentier's avatar Justin Carpentier
Browse files

all: define struct call for common expose

parent 56d706a7
No related merge requests found
...@@ -19,18 +19,15 @@ namespace eigenpy ...@@ -19,18 +19,15 @@ namespace eigenpy
template<typename AngleAxis> class AngleAxisVisitor; template<typename AngleAxis> class AngleAxisVisitor;
namespace internal template<typename Scalar>
struct call< Eigen::AngleAxis<Scalar> >
{ {
template<typename Scalar> typedef Eigen::AngleAxis<Scalar> AngleAxis;
struct call_expose< Eigen::AngleAxis<Scalar> > static inline void expose()
{ {
typedef Eigen::AngleAxis<Scalar> type; AngleAxisVisitor<AngleAxis>::expose();
static inline void run() }
{ };
AngleAxisVisitor<type>::expose();
}
};
} // namespace internal
template<typename AngleAxis> template<typename AngleAxis>
class AngleAxisVisitor class AngleAxisVisitor
......
/* /*
* Copyright 2019, INRIA * Copyright 2019 INRIA
*/ */
#ifndef __eigenpy_expose_hpp__ #ifndef __eigenpy_expose_hpp__
...@@ -9,18 +9,15 @@ ...@@ -9,18 +9,15 @@
namespace eigenpy namespace eigenpy
{ {
namespace internal ///
/// \brief Allows a template specialization.
///
template<typename T>
struct call
{ {
/// static inline void expose() { T::expose(); }
/// \brief Allows a template specialization. };
///
template<typename T>
struct call_expose
{
static inline void run() { T::expose(); }
};
} // namespace internal
/// ///
/// \brief Call the expose function of a given type T. /// \brief Call the expose function of a given type T.
/// ///
...@@ -28,7 +25,7 @@ namespace eigenpy ...@@ -28,7 +25,7 @@ namespace eigenpy
inline void expose() inline void expose()
{ {
if(!register_symbolic_link_to_registered_type<T>()) if(!register_symbolic_link_to_registered_type<T>())
internal::call_expose<T>::run(); call<T>::expose();
} }
} }
......
...@@ -31,19 +31,16 @@ namespace eigenpy ...@@ -31,19 +31,16 @@ namespace eigenpy
template<typename QuaternionDerived> class QuaternionVisitor; template<typename QuaternionDerived> class QuaternionVisitor;
namespace internal template<typename Scalar, int Options>
struct call< Eigen::Quaternion<Scalar,Options> >
{ {
template<typename Scalar, int Options> typedef Eigen::Quaternion<Scalar,Options> Quaternion;
struct call_expose< Eigen::Quaternion<Scalar,Options> > static inline void expose()
{ {
typedef Eigen::Quaternion<Scalar,Options> type; QuaternionVisitor<Quaternion>::expose();
static inline void run() }
{ };
QuaternionVisitor<type>::expose();
}
};
} // namespace internal
template<typename Quaternion> template<typename Quaternion>
class QuaternionVisitor class QuaternionVisitor
: public bp::def_visitor< QuaternionVisitor<Quaternion> > : public bp::def_visitor< QuaternionVisitor<Quaternion> >
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment