func_integer.hpp

00001 
00002 // OpenGL Mathematics Copyright (c) 2005 - 2011 G-Truc Creation (www.g-truc.net)
00004 // Created : 2010-03-17
00005 // Updated : 2010-03-31
00006 // Licence : This source is under MIT License
00007 // File    : glm/core/func_integer.hpp
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         }//namespace test
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         }//namespace integer
00137         }//namespace function
00138         }//namespace core
00139 
00140         using namespace core::function::integer;
00141 }//namespace glm
00142 
00143 #include "func_integer.inl"
00144 
00145 #endif//glm_core_func_integer
00146