Leptonica  1.54
Файл src/arrayaccess.h

Макросы

#define USE_INLINE_ACCESSORS   1
#define GET_DATA_BIT(pdata, n)   ((*((l_uint32 *)(pdata) + ((n) >> 5)) >> (31 - ((n) & 31))) & 1)
#define SET_DATA_BIT(pdata, n)   (*((l_uint32 *)(pdata) + ((n) >> 5)) |= (0x80000000 >> ((n) & 31)))
#define CLEAR_DATA_BIT(pdata, n)   (*((l_uint32 *)(pdata) + ((n) >> 5)) &= ~(0x80000000 >> ((n) & 31)))
#define SET_DATA_BIT_VAL(pdata, n, val)
#define GET_DATA_DIBIT(pdata, n)   ((*((l_uint32 *)(pdata) + ((n) >> 4)) >> (2 * (15 - ((n) & 15)))) & 3)
#define SET_DATA_DIBIT(pdata, n, val)
#define CLEAR_DATA_DIBIT(pdata, n)   (*((l_uint32 *)(pdata) + ((n) >> 4)) &= ~(0xc0000000 >> (2 * ((n) & 15))))
#define GET_DATA_QBIT(pdata, n)   ((*((l_uint32 *)(pdata) + ((n) >> 3)) >> (4 * (7 - ((n) & 7)))) & 0xf)
#define SET_DATA_QBIT(pdata, n, val)
#define CLEAR_DATA_QBIT(pdata, n)   (*((l_uint32 *)(pdata) + ((n) >> 3)) &= ~(0xf0000000 >> (4 * ((n) & 7))))
#define GET_DATA_BYTE(pdata, n)   (*(l_uint8 *)((l_uintptr_t)((l_uint8 *)(pdata) + (n)) ^ 3))
#define SET_DATA_BYTE(pdata, n, val)   (*(l_uint8 *)((l_uintptr_t)((l_uint8 *)(pdata) + (n)) ^ 3) = (val))
#define GET_DATA_TWO_BYTES(pdata, n)   (*(l_uint16 *)((l_uintptr_t)((l_uint16 *)(pdata) + (n)) ^ 2))
#define SET_DATA_TWO_BYTES(pdata, n, val)   (*(l_uint16 *)((l_uintptr_t)((l_uint16 *)(pdata) + (n)) ^ 2) = (val))
#define GET_DATA_FOUR_BYTES(pdata, n)   (*((l_uint32 *)(pdata) + (n)))
#define SET_DATA_FOUR_BYTES(pdata, n, val)   (*((l_uint32 *)(pdata) + (n)) = (val))

Макросы

#define CLEAR_DATA_BIT (   pdata,
 
)    (*((l_uint32 *)(pdata) + ((n) >> 5)) &= ~(0x80000000 >> ((n) & 31)))
#define CLEAR_DATA_DIBIT (   pdata,
 
)    (*((l_uint32 *)(pdata) + ((n) >> 4)) &= ~(0xc0000000 >> (2 * ((n) & 15))))
#define CLEAR_DATA_QBIT (   pdata,
 
)    (*((l_uint32 *)(pdata) + ((n) >> 3)) &= ~(0xf0000000 >> (4 * ((n) & 7))))
#define GET_DATA_BIT (   pdata,
 
)    ((*((l_uint32 *)(pdata) + ((n) >> 5)) >> (31 - ((n) & 31))) & 1)
#define GET_DATA_BYTE (   pdata,
 
)    (*(l_uint8 *)((l_uintptr_t)((l_uint8 *)(pdata) + (n)) ^ 3))
#define GET_DATA_DIBIT (   pdata,
 
)    ((*((l_uint32 *)(pdata) + ((n) >> 4)) >> (2 * (15 - ((n) & 15)))) & 3)
#define GET_DATA_FOUR_BYTES (   pdata,
 
)    (*((l_uint32 *)(pdata) + (n)))
#define GET_DATA_QBIT (   pdata,
 
)    ((*((l_uint32 *)(pdata) + ((n) >> 3)) >> (4 * (7 - ((n) & 7)))) & 0xf)
#define GET_DATA_TWO_BYTES (   pdata,
 
)    (*(l_uint16 *)((l_uintptr_t)((l_uint16 *)(pdata) + (n)) ^ 2))
#define SET_DATA_BIT (   pdata,
 
)    (*((l_uint32 *)(pdata) + ((n) >> 5)) |= (0x80000000 >> ((n) & 31)))
#define SET_DATA_BIT_VAL (   pdata,
  n,
  val 
)
Макроопределение:
({l_uint32 *_TEMP_WORD_PTR_; \
     _TEMP_WORD_PTR_ = (l_uint32 *)(pdata) + ((n) >> 5); \
     *_TEMP_WORD_PTR_ &= ~(0x80000000 >> ((n) & 31)); \
     *_TEMP_WORD_PTR_ |= ((val) << (31 - ((n) & 31))); \
    })
#define SET_DATA_BYTE (   pdata,
  n,
  val 
)    (*(l_uint8 *)((l_uintptr_t)((l_uint8 *)(pdata) + (n)) ^ 3) = (val))
#define SET_DATA_DIBIT (   pdata,
  n,
  val 
)
Макроопределение:
({l_uint32 *_TEMP_WORD_PTR_; \
     _TEMP_WORD_PTR_ = (l_uint32 *)(pdata) + ((n) >> 4); \
     *_TEMP_WORD_PTR_ &= ~(0xc0000000 >> (2 * ((n) & 15))); \
     *_TEMP_WORD_PTR_ |= (((val) & 3) << (30 - 2 * ((n) & 15))); \
    })
#define SET_DATA_FOUR_BYTES (   pdata,
  n,
  val 
)    (*((l_uint32 *)(pdata) + (n)) = (val))
#define SET_DATA_QBIT (   pdata,
  n,
  val 
)
Макроопределение:
({l_uint32 *_TEMP_WORD_PTR_; \
     _TEMP_WORD_PTR_ = (l_uint32 *)(pdata) + ((n) >> 3); \
     *_TEMP_WORD_PTR_ &= ~(0xf0000000 >> (4 * ((n) & 7))); \
     *_TEMP_WORD_PTR_ |= (((val) & 15) << (28 - 4 * ((n) & 7))); \
    })
#define SET_DATA_TWO_BYTES (   pdata,
  n,
  val 
)    (*(l_uint16 *)((l_uintptr_t)((l_uint16 *)(pdata) + (n)) ^ 2) = (val))
#define USE_INLINE_ACCESSORS   1