24 #include <boost/type_traits/is_base_of.hpp> 28 #include "MABehavior.hpp" 38 #define MALEGBEHAVIOR_CREATE(_behavior, _leg_type, _master) \ 39 MABEHAVIOR_CREATE_S(_behavior, _master, MALegBehavior::GetBehaviorSuffix(_leg_type), _leg_type) 41 #define MALEGBEHAVIOR_EXISTS(_behavior, _leg_type) \ 42 MABEHAVIOR_EXISTS_S(_behavior, MALegBehavior::GetBehaviorSuffix(_leg_type)) 44 #define MALEGBEHAVIOR_DELETE(_behavior, _leg_type) \ 45 MABEHAVIOR_DELETE_S(_behavior, MALegBehavior::GetBehaviorSuffix(_leg_type)) 47 #define MALEGBEHAVIOR_IS_ACTIVATED(_behavior, _leg_type) \ 48 (MABEHAVIOR_IS_ACTIVATED_S(_behavior, MALegBehavior::GetBehaviorSuffix(_leg_type))) 50 #define MALEGBEHAVIOR_IS_FINISHED(_behavior, _leg_type) \ 51 (MABEHAVIOR_IS_FINISHED_S(_behavior, MALegBehavior::GetBehaviorSuffix(_leg_type))) 53 #define MALEGBEHAVIOR_IS_FAILED(_behavior, _leg_type) \ 54 (MABEHAVIOR_IS_FAILED_S(_behavior, MALegBehavior::GetBehaviorSuffix(_leg_type))) 62 MALegBehavior(
const std::string& behavior_name, MA::Leg::LegTypes leg_type,
bool dynamic =
true);
64 static std::string GetBehaviorSuffix(MA::Leg::LegTypes leg_type);
75 std::string MAGetLegBehaviorName(MA::Leg::LegTypes leg_type)
77 std::string ClassName = MCGetClassName<T>();
79 if (!boost::is_base_of<MALegBehavior, T>::value)
81 MC_ERROR(
"The class %s is not derived from MALegBehavior", ClassName.c_str());
83 return ClassName+MALegBehavior::GetBehaviorSuffix(leg_type);
MALegController * Controller
Leg controller.
Base class for leg behaviors.
#define MC_ERROR(...)
Error macro.
const MALeg & LegState
Leg state.