dosbox-x/include/util_pointer.h
2021-08-22 15:47:10 +09:00

36 lines
1.3 KiB
C

/* (C) 2014 Castus all rights reserved.
* Written by Jonathan Campbell
*
* Intended language: C (also compatible with C++) */
#ifndef __UTIL_POINTER_H
#define __UTIL_POINTER_H
#define min_uintptr_t ((uintptr_t)0)
#define max_uintptr_t ( ~((uintptr_t)0) )
#define min_size_t ((size_t)0)
#define max_size_t ( ~((size_t)0) )
#define ptr2int(x) ((uintptr_t)((void*)(x)))
#define int2ptr(x) ((void*)(x))
#define ptr_misaligned(x,a) (ptr2int(x) & (((uintptr_t)(a)) - (uintptr_t)1))
#define ptr_aligned(x,a) (ptr_misaligned(x,a) == (uintptr_t)0)
#define ptr_align_down(x,a) (ptr2int(x) & (~(((uintptr_t)(a)) - (uintptr_t)1)))
#define ptr_align_up(x,a) ((ptr2int(x) + ((uintptr_t)(a) - (uintptr_t)1)) & (~(((uintptr_t)(a)) - (uintptr_t)1)))
#define ptr_align_nearest(x,a) ((ptr2int(x) + ((uintptr_t)(a) >> (uintptr_t)1)) & (~(((uintptr_t)(a)) - (uintptr_t)1)))
#define ptr_align_next(x,a) ((ptr2int(x) + (uintptr_t)(a)) & (~(((uintptr_t)(a)) - (uintptr_t)1)))
#define alloca_aligned(s,a) ( (void*)ptr_align_up((void*)alloca((size_t)(s) + (size_t)(a) - (size_t)1),a) )
#define alignment_word (2)
#define alignment_dword (4)
#define alignment_qword (8)
#define alignment_mmx (8)
#define alignment_sse (16)
#define alignment_avx (32)
#endif /* __UTIL_POINTER_H */