World of Might and Magic  0.2.0
Open reimplementation of Might and Magic 6 7 8 game engine
Файл SDL_bits.h

См. исходные тексты.

Функции

_inline int _SDL_clz_watcom (Uint32)
 
SDL_FORCE_INLINE int SDL_MostSignificantBitIndex32 (Uint32 x)
 
SDL_FORCE_INLINE SDL_bool SDL_HasExactlyOneBitSet32 (Uint32 x)
 

Подробное описание

Functions for fiddling with bits and bitmasks.

См. определение в файле SDL_bits.h

Функции

◆ _SDL_clz_watcom()

_inline int _SDL_clz_watcom ( Uint32  )

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".

Возвращает
Index of the most significant bit, or -1 if the value is 0.

Используется в SDL_MostSignificantBitIndex32().

+ Граф вызова функции:

◆ SDL_MostSignificantBitIndex32()

SDL_FORCE_INLINE int SDL_MostSignificantBitIndex32 ( Uint32  x)

См. определение в файле SDL_bits.h строка 61

62 {
63 #if defined(__GNUC__) && (__GNUC__ >= 4 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
64  /* Count Leading Zeroes builtin in GCC.
65  * http://gcc.gnu.org/onlinedocs/gcc-4.3.4/gcc/Other-Builtins.html
66  */
67  if (x == 0) {
68  return -1;
69  }
70  return 31 - __builtin_clz(x);
71 #elif defined(__WATCOMC__) && defined(__386__)
72  if (x == 0) {
73  return -1;
74  }
75  return 31 - _SDL_clz_watcom(x);
76 #else
77  /* Based off of Bit Twiddling Hacks by Sean Eron Anderson
78  * <seander@cs.stanford.edu>, released in the public domain.
79  * http://graphics.stanford.edu/~seander/bithacks.html#IntegerLog
80  */
81  const Uint32 b[] = {0x2, 0xC, 0xF0, 0xFF00, 0xFFFF0000};
82  const int S[] = {1, 2, 4, 8, 16};
83 
84  int msbIndex = 0;
85  int i;
86 
87  if (x == 0) {
88  return -1;
89  }
90 
91  for (i = 4; i >= 0; i--)
92  {
93  if (x & b[i])
94  {
95  x >>= S[i];
96  msbIndex |= S[i];
97  }
98  }
99 
100  return msbIndex;
101 #endif
102 }

Перекрестные ссылки _SDL_clz_watcom().

+ Граф вызовов:

◆ SDL_HasExactlyOneBitSet32()

SDL_FORCE_INLINE SDL_bool SDL_HasExactlyOneBitSet32 ( Uint32  x)

См. определение в файле SDL_bits.h строка 105

106 {
107  if (x && !(x & (x - 1))) {
108  return SDL_TRUE;
109  }
110  return SDL_FALSE;
111 }

Перекрестные ссылки SDL_FALSE и SDL_TRUE.

x
EGLSurface EGLint x
Definition: SDL_egl.h:1596
av_intfloat64::i
uint64_t i
Definition: intfloat.h:33
SDL_FALSE
@ SDL_FALSE
Definition: SDL_stdinc.h:163
_SDL_clz_watcom
_inline int _SDL_clz_watcom(Uint32)
b
GLboolean GLboolean GLboolean b
Definition: SDL_opengl_glext.h:1112
SDL_TRUE
@ SDL_TRUE
Definition: SDL_stdinc.h:164
Uint32
uint32_t Uint32
Definition: SDL_stdinc.h:203