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 core{
00016         namespace function{
00018         namespace integer{
00019 
00022 
00029                 template <typename genUType>
00030                 genUType uaddCarry(
00031                         genUType const & x, 
00032                         genUType const & y, 
00033                         genUType & carry);
00034 
00041                 template <typename genUType>
00042                 genUType usubBorrow(
00043                         genUType const & x, 
00044                         genUType const & y, 
00045                         genUType & borrow);
00046                 
00053                 template <typename genUType>
00054                 void umulExtended(
00055                         genUType const & x, 
00056                         genUType const & y, 
00057                         genUType & msb, 
00058                         genUType & lsb);
00059                 
00066                 template <typename genIType>
00067                 void imulExtended(
00068                         genIType const & x, 
00069                         genIType const & y, 
00070                         genIType & msb, 
00071                         genIType & lsb);
00072 
00086                 template <typename genIUType>
00087                 genIUType bitfieldExtract(
00088                         genIUType const & Value, 
00089                         int const & Offset, 
00090                         int const & Bits);
00091 
00104                 template <typename genIUType>
00105                 genIUType bitfieldInsert(
00106                         genIUType const & Base, 
00107                         genIUType const & Insert, 
00108                         int const & Offset, 
00109                         int const & Bits);
00110 
00117                 template <typename genIUType>
00118                 genIUType bitfieldReverse(genIUType const & value);
00119                 
00124                 template <typename T, template <typename> class C>
00125                 typename C<T>::signed_type bitCount(C<T> const & Value);
00126 
00133                 template <typename T, template <typename> class C>
00134                 typename C<T>::signed_type findLSB(C<T> const & Value);
00135 
00143                 template <typename T, template <typename> class C>
00144                 typename C<T>::signed_type findMSB(C<T> const & Value);
00145 
00147 
00148         }//namespace integer
00149         }//namespace function
00150         }//namespace core
00151 
00152         using namespace core::function::integer;
00153 }//namespace glm
00154 
00155 #include "func_integer.inl"
00156 
00157 #endif//glm_core_func_integer
00158