00001
00002
00004
00005
00006
00007
00009
00010 #ifndef glm_core_func_integer
00011 #define glm_core_func_integer
00012
00013 namespace glm
00014 {
00015 namespace test{
00016 void main_core_func_integer();
00017 }
00018
00019 namespace core{
00020 namespace function{
00022 namespace integer{
00023
00026
00032 template <typename genUType>
00033 genUType uaddCarry(
00034 genUType const & x,
00035 genUType const & y,
00036 genUType & carry);
00037
00043 template <typename genUType>
00044 genUType usubBorrow(
00045 genUType const & x,
00046 genUType const & y,
00047 genUType & borrow);
00048
00053 template <typename genUType>
00054 void umulExtended(
00055 genUType const & x,
00056 genUType const & y,
00057 genUType & msb,
00058 genUType & lsb);
00059
00064 template <typename genIType>
00065 void imulExtended(
00066 genIType const & x,
00067 genIType const & y,
00068 genIType & msb,
00069 genIType & lsb);
00070
00083 template <typename genIUType>
00084 genIUType bitfieldExtract(
00085 genIUType const & Value,
00086 int const & Offset,
00087 int const & Bits);
00088
00100 template <typename genIUType>
00101 genIUType bitfieldInsert(
00102 genIUType const & Base,
00103 genIUType const & Insert,
00104 int const & Offset,
00105 int const & Bits);
00106
00111 template <typename genIUType>
00112 genIUType bitfieldReverse(genIUType const & value);
00113
00116 template <typename T, template <typename> class C>
00117 typename C<T>::signed_type bitCount(C<T> const & Value);
00118
00123 template <typename T, template <typename> class C>
00124 typename C<T>::signed_type findLSB(C<T> const & Value);
00125
00131 template <typename T, template <typename> class C>
00132 typename C<T>::signed_type findMSB(C<T> const & Value);
00133
00135
00136 }
00137 }
00138 }
00139
00140 using namespace core::function::integer;
00141 }
00142
00143 #include "func_integer.inl"
00144
00145 #endif//glm_core_func_integer
00146