5 #ifndef __pinocchio_utils_static_if_hpp__
6 #define __pinocchio_utils_static_if_hpp__
8 #include "pinocchio/fwd.hpp"
15 enum ComparisonOperators {LT, LE, EQ, GE, GT};
17 template<
typename LhsType,
typename RhsType,
typename ThenType,
typename ElseType>
18 struct if_then_else_impl;
21 template<
typename LhsType,
typename RhsType,
typename return_type>
22 struct traits< if_then_else_impl<LhsType,RhsType,return_type,return_type> >
24 typedef return_type ReturnType;
27 template<
typename condition_type,
typename ThenType,
typename ElseType>
28 struct if_then_else_impl<condition_type,condition_type,ThenType,ElseType>
30 typedef typename internal::traits<if_then_else_impl>::ReturnType ReturnType;
32 static inline ReturnType run(
const ComparisonOperators op,
33 const condition_type & lhs_value,
34 const condition_type & rhs_value,
35 const ThenType & then_value,
36 const ElseType & else_value)
41 if(lhs_value < rhs_value)
47 if(lhs_value <= rhs_value)
53 if(lhs_value == rhs_value)
59 if(lhs_value >= rhs_value)
65 if(lhs_value > rhs_value)
75 template<
typename LhsType,
typename RhsType,
typename ThenType,
typename ElseType>
76 inline typename if_then_else_impl<LhsType,RhsType,ThenType,ElseType>::ReturnType
77 if_then_else(
const ComparisonOperators op,
78 const LhsType & lhs_value,
79 const RhsType & rhs_value,
80 const ThenType & then_value,
81 const ElseType & else_value)
83 typedef if_then_else_impl<LhsType,RhsType,ThenType,ElseType> algo;