00001
00002
00004
00005
00006
00007
00009
00010
00011
00013
00014 #ifndef glm_gtx_bit
00015 #define glm_gtx_bit
00016
00017
00018 #include "../glm.hpp"
00019 #include "../gtc/half_float.hpp"
00020
00021 namespace glm
00022 {
00023 namespace test{
00024 void main_gtx_bit();
00025 }
00026
00027 namespace gtx{
00029 namespace bit
00030 {
00031 using namespace gtc::half_float;
00032
00035 template <typename genIType>
00036 genIType mask(genIType const & count);
00037
00041 template <typename genIUType, typename sizeType>
00042 genIUType extractField(
00043 genIUType const & v,
00044 sizeType const & first,
00045 sizeType const & count);
00046
00049 template <typename genType>
00050 int lowestBit(genType const & value);
00051
00054 template <typename genType>
00055 int highestBit(genType const & value);
00056
00059 template <typename genType>
00060 genType highestBitValue(genType const & value);
00061
00064 template <typename genType>
00065 bool isPowerOfTwo(genType const & value);
00066
00069 template <typename genType>
00070 genType powerOfTwoAbove(genType const & value);
00071
00074 template <typename genType>
00075 genType powerOfTwoBelow(genType const & value);
00076
00079 template <typename genType>
00080 genType powerOfTwoNearest(genType const & value);
00081
00084 template <typename genType>
00085 genType bitRevert(genType const & value);
00086
00089 template <typename genType>
00090 genType bitRotateRight(genType const & In, std::size_t Shift);
00091
00094 template <typename genType>
00095 genType bitRotateLeft(genType const & In, std::size_t Shift);
00096
00097 }
00098 }
00099 }
00100
00101 #include "bit.inl"
00102
00103 namespace glm{using namespace gtx::bit;}
00104
00105 #endif//glm_gtx_bit