File: util_pointer.h

package info (click to toggle)
dosbox-x 2026.01.02%2Bdfsg-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 53,220 kB
  • sloc: cpp: 341,269; ansic: 165,494; sh: 1,463; makefile: 967; perl: 385; python: 106; asm: 57
file content (35 lines) | stat: -rw-r--r-- 1,296 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
/* (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 */