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 
00033                 template <typename genUType>
00034                 genUType uaddCarry(
00035                         genUType const & x, 
00036                         genUType const & y, 
00037                         genUType & carry);
00038 
00045                 template <typename genUType>
00046                 genUType usubBorrow(
00047                         genUType const & x, 
00048                         genUType const & y, 
00049                         genUType & borrow);
00050                 
00057                 template <typename genUType>
00058                 void umulExtended(
00059                         genUType const & x, 
00060                         genUType const & y, 
00061                         genUType & msb, 
00062                         genUType & lsb);
00063                 
00070                 template <typename genIType>
00071                 void imulExtended(
00072                         genIType const & x, 
00073                         genIType const & y, 
00074                         genIType & msb, 
00075                         genIType & lsb);
00076 
00090                 template <typename genIUType>
00091                 genIUType bitfieldExtract(
00092                         genIUType const & Value, 
00093                         int const & Offset, 
00094                         int const & Bits);
00095 
00108                 template <typename genIUType>
00109                 genIUType bitfieldInsert(
00110                         genIUType const & Base, 
00111                         genIUType const & Insert, 
00112                         int const & Offset, 
00113                         int const & Bits);
00114 
00121                 template <typename genIUType>
00122                 genIUType bitfieldReverse(genIUType const & value);
00123                 
00128                 template <typename T, template <typename> class C>
00129                 typename C<T>::signed_type bitCount(C<T> const & Value);
00130 
00137                 template <typename T, template <typename> class C>
00138                 typename C<T>::signed_type findLSB(C<T> const & Value);
00139 
00147                 template <typename T, template <typename> class C>
00148                 typename C<T>::signed_type findMSB(C<T> const & Value);
00149 
00151 
00152         }//namespace integer
00153         }//namespace function
00154         }//namespace core
00155 
00156         using namespace core::function::integer;
00157 }//namespace glm
00158 
00159 #include "func_integer.inl"
00160 
00161 #endif//glm_core_func_integer
00162