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
00029 template <typename genUType>
00030 genUType uaddCarry(
00031 genUType const & x,
00032 genUType const & y,
00033 genUType & carry);
00034
00040 template <typename genUType>
00041 genUType usubBorrow(
00042 genUType const & x,
00043 genUType const & y,
00044 genUType & borrow);
00045
00050 template <typename genUType>
00051 void umulExtended(
00052 genUType const & x,
00053 genUType const & y,
00054 genUType & msb,
00055 genUType & lsb);
00056
00061 template <typename genIType>
00062 void imulExtended(
00063 genIType const & x,
00064 genIType const & y,
00065 genIType & msb,
00066 genIType & lsb);
00067
00068
00081 template <typename genIUType>
00082 genIUType bitfieldExtract(
00083 genIUType const & Value,
00084 int const & Offset,
00085 int const & Bits);
00086
00098 template <typename genIUType>
00099 genIUType bitfieldInsert(
00100 genIUType const & Base,
00101 genIUType const & Insert,
00102 int const & Offset,
00103 int const & Bits);
00104
00109 template <typename genIUType>
00110 genIUType bitfieldReverse(genIUType const & value);
00111
00114 template <typename T, template <typename> class C>
00115 typename C<T>::signed_type bitCount(C<T> const & Value);
00116
00121 template <typename T, template <typename> class C>
00122 typename C<T>::signed_type findLSB(C<T> const & Value);
00123
00129 template <typename T, template <typename> class C>
00130 typename C<T>::signed_type findMSB(C<T> const & Value);
00131
00132 }
00133 }
00134 }
00135
00136 using namespace core::function::integer;
00137 }
00138
00139 #include "func_integer.inl"
00140
00141 #endif//glm_core_func_integer
00142