php-internal-docs 8.4.8
Unofficial docs for php/php-src
Loading...
Searching...
No Matches
zend_bitset.h File Reference
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include "zend_portability.h"
#include "zend_long.h"

Go to the source code of this file.

Macros

#define ZEND_BITSET_ELM_SIZE   sizeof(zend_ulong)
 
#define ZEND_BITSET_ELM_NUM(n)
 
#define ZEND_BITSET_BIT_NUM(n)
 
#define ZEND_BITSET_ALLOCA(n, use_heap)
 
#define ZEND_BITSET_FOREACH(set, len, bit)
 
#define ZEND_BITSET_REVERSE_FOREACH(set, len, bit)
 
#define ZEND_BITSET_FOREACH_END()
 

Typedefs

typedef zend_ulongzend_bitset
 

Macro Definition Documentation

◆ ZEND_BITSET_ALLOCA

#define ZEND_BITSET_ALLOCA ( n,
use_heap )
Value:
zend_long n
Definition ffi.c:4979
zend_ulong * zend_bitset
Definition zend_bitset.h:29
#define ZEND_BITSET_ELM_SIZE
Definition zend_bitset.h:31
#define do_alloca(p, use_heap)

Definition at line 44 of file zend_bitset.h.

◆ ZEND_BITSET_BIT_NUM

#define ZEND_BITSET_BIT_NUM ( n)
Value:
((zend_ulong)(n) & Z_UL(0x1f))
uint32_t zend_ulong
Definition zend_long.h:43
#define Z_UL(i)
Definition zend_long.h:49

Definition at line 35 of file zend_bitset.h.

◆ ZEND_BITSET_ELM_NUM

#define ZEND_BITSET_ELM_NUM ( n)
Value:
((n) >> 5)

Definition at line 34 of file zend_bitset.h.

◆ ZEND_BITSET_ELM_SIZE

#define ZEND_BITSET_ELM_SIZE   sizeof(zend_ulong)

Definition at line 31 of file zend_bitset.h.

◆ ZEND_BITSET_FOREACH

#define ZEND_BITSET_FOREACH ( set,
len,
bit )
Value:
do { \
zend_bitset _set = (set); \
uint32_t _i, _len = (len); \
for (_i = 0; _i < _len; _i++) { \
zend_ulong _x = _set[_i]; \
if (_x) { \
(bit) = ZEND_BITSET_ELM_SIZE * 8 * _i; \
for (; _x != 0; _x >>= Z_UL(1), (bit)++) { \
if (!(_x & Z_UL(1))) continue;
size_t len
Definition apprentice.c:174

Definition at line 266 of file zend_bitset.h.

◆ ZEND_BITSET_FOREACH_END

#define ZEND_BITSET_FOREACH_END ( )
Value:
} \
} \
} \
} while (0)

Definition at line 287 of file zend_bitset.h.

◆ ZEND_BITSET_REVERSE_FOREACH

#define ZEND_BITSET_REVERSE_FOREACH ( set,
len,
bit )
Value:
do { \
zend_bitset _set = (set); \
uint32_t _i = (len); \
zend_ulong _test = Z_UL(1) << (ZEND_BITSET_ELM_SIZE * 8 - 1); \
while (_i-- > 0) { \
zend_ulong _x = _set[_i]; \
if (_x) { \
(bit) = ZEND_BITSET_ELM_SIZE * 8 * (_i + 1) - 1; \
for (; _x != 0; _x <<= Z_UL(1), (bit)--) { \
if (!(_x & _test)) continue; \

Definition at line 276 of file zend_bitset.h.

Typedef Documentation

◆ zend_bitset

Definition at line 29 of file zend_bitset.h.