37 #ifndef OMPL_CONTROL_CONTROL_
38 #define OMPL_CONTROL_CONTROL_
40 #include <boost/concept_check.hpp>
51 Control(
const Control &) =
delete;
54 const Control &operator=(
const Control &) =
delete;
59 virtual ~Control() =
default;
67 BOOST_CONCEPT_ASSERT((boost::Convertible<T *, Control *>));
69 return static_cast<const T *
>(
this);
77 BOOST_CONCEPT_ASSERT((boost::Convertible<T *, Control *>));
79 return static_cast<T *
>(
this);
84 class CompoundControl :
public Control
87 CompoundControl() =
default;
89 ~CompoundControl()
override =
default;
93 const T *
as(
unsigned int index)
const
96 BOOST_CONCEPT_ASSERT((boost::Convertible<T *, Control *>));
98 return static_cast<const T *
>(
components[index]);
103 T *
as(
unsigned int index)
106 BOOST_CONCEPT_ASSERT((boost::Convertible<T *, Control *>));