16 #ifndef __IPSDKUTIL_INSTRUCTIONSET_COMPATIBLETYPE32_H__ 17 #define __IPSDKUTIL_INSTRUCTIONSET_COMPATIBLETYPE32_H__ 21 #include <boost/type_traits/is_integral.hpp> 22 #include <boost/type_traits/is_unsigned.hpp> 23 #include <boost/type_traits/is_float.hpp> 24 #include <boost/type_traits/is_integral.hpp> 25 #include <boost/type_traits/make_signed.hpp> 26 #include <boost/mpl/if.hpp> 27 #include <boost/mpl/greater_equal.hpp> 28 #include <boost/mpl/sizeof.hpp> 29 #include <boost/mpl/and.hpp> 36 template <
typename T1,
typename T2,
46 template <
typename T1,
typename T2>
56 template <
typename T1,
typename T2>
59 boost::is_integral<T2>
66 template <
typename T1,
typename T2>
68 boost::is_integral<T1>,
76 template <
typename T1,
typename T2>
78 boost::is_integral<T1>,
79 boost::is_integral<T2>
82 typedef typename boost::mpl::if_<
84 boost::is_unsigned<T1>,
86 typename boost::mpl::if_<
88 boost::is_unsigned<T2>,
90 typename boost::mpl::if_<
92 boost::mpl::greater_equal<boost::mpl::sizeof_<T1>, boost::mpl::sizeof_<T2> >,
97 typename boost::mpl::if_<
99 boost::mpl::greater_equal<boost::mpl::sizeof_<T1>, boost::mpl::sizeof_<T2> >,
100 typename boost::make_signed<typename UpperType32<T1>::Type>::type,
105 typename boost::mpl::if_<
107 boost::is_unsigned<T2>,
109 typename boost::mpl::if_<
111 boost::mpl::greater_equal<boost::mpl::sizeof_<T2>, boost::mpl::sizeof_<T1> >,
112 typename boost::make_signed<typename UpperType32<T2>::Type>::type,
116 typename boost::mpl::if_<
118 boost::mpl::greater_equal<boost::mpl::sizeof_<T1>, boost::mpl::sizeof_<T2> >,
133 #endif // __IPSDKUTIL_INSTRUCTIONSET_COMPATIBLETYPE32_H__ Main namespace for IPSDK library.
Definition: AlgorithmFunctionEfficiency.h:22
Definition: DataItemNodeHdrMacrosDetails.h:48
template structures used for immediate type promotion
Base types for multiplatform compatibility.
defines template structure CompatibleType32<T1, T2>
float ipReal32
Base types definition.
Definition: BaseTypes.h:56