SDL_bits.h File Reference
`#include "SDL_stdinc.h"`
`#include "begin_code.h"`
`#include "close_code.h"`
Include dependency graph for SDL_bits.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

## Functions

SDL_FORCE_INLINE int | SDL_MostSignificantBitIndex32 (Uint32 x)
SDL_FORCE_INLINE SDL_bool | SDL_HasExactlyOneBitSet32 (Uint32 x)

## Detailed Description

Functions for fiddling with bits and bitmasks.

Definition in file SDL_bits.h.

## Function Documentation

## SDL_HasExactlyOneBitSet32()

SDL_FORCE_INLINE SDL_bool SDL_HasExactlyOneBitSet32 | ( | Uint32 | x | ) |

Definition at line 105 of file SDL_bits.h.

{
if (x && !(x & (x - 1))) {
return SDL_TRUE;
}
return SDL_FALSE;
}

References SDL_FALSE, and SDL_TRUE.

Referenced by SDL_WasInit().

## SDL_MostSignificantBitIndex32()

SDL_FORCE_INLINE int SDL_MostSignificantBitIndex32 | ( | Uint32 | x | ) |

Get the index of the most significant bit. Result is undefined when called with 0. This operation can also be stated as "count leading zeroes" and "log base 2".

Returns
  Index of the most significant bit, or -1 if the value is 0.

Definition at line 61 of file SDL_bits.h.

{
#if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
/* Count Leading Zeroes builtin in GCC.
* http://gcc.gnu.org/onlinedocs/gcc-4.3.4/gcc/Other-Builtins.html
*/
if (x == 0) {
return -1;
}
return 31 - __builtin_clz(x);
#elif defined(__WATCOMC__) && defined(__386__)
if (x == 0) {
return -1;
}
return 31 - _SDL_clz_watcom(x);
#else
/* Based off of Bit Twiddling Hacks by Sean Eron Anderson
* <seander@cs.stanford.edu>, released in the public domain.
* http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog
*/
const Uint32 b[] = {0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000};
const int S[] = {1, 2, 4, 8, 16};
int msbIndex = 0;
int i;
if (x == 0) {
return -1;
}
for (i = 4; i >= 0; i--)
{
if (x & b[i])
{
x >>= S[i];
msbIndex |= S[i];
}
}
return msbIndex;
#endif
}

References i.

Referenced by SDL_PrivateShouldInitSubsystem(), SDL_PrivateShouldQuitSubsystem(), SDL_PrivateSubsystemRefCountDecr(), SDL_PrivateSubsystemRefCountIncr(), and SDL_WasInit().

Uint32
uint32_t Uint32
Definition: SDL_stdinc.h:203
b
GLboolean GLboolean GLboolean b
Definition: SDL_opengl_glext.h:1109
SDL_FALSE
@ SDL_FALSE
Definition: SDL_stdinc.h:163
x
GLint GLint GLint GLint GLint x
Definition: SDL_opengl.h:1574
SDL_TRUE
@ SDL_TRUE
Definition: SDL_stdinc.h:164
i
return Display return Display Bool Bool int int int return Display XEvent Bool(*) XPointer return Display return Display Drawable _Xconst char unsigned int unsigned int return Display Pixmap Pixmap XColor XColor unsigned int unsigned int return Display _Xconst char char int char return Display Visual unsigned int int int char unsigned int unsigned int in i)
Definition: SDL_x11sym.h:50