mirror of
				https://github.com/netwide-assembler/nasm.git
				synced 2025-10-10 00:25:06 -04:00 
			
		
		
		
	Change the header guards for nasmint.h to NASM_NASMINT_H instead of INTTYPES_H. Signed-off-by: H. Peter Anvin <hpa@linux.intel.com>
		
			
				
	
	
		
			220 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			220 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /*
 | |
|  * nasmint.h
 | |
|  *
 | |
|  * Small ersatz subset of <inttypes.h>, deriving the types from
 | |
|  * <limits.h>.
 | |
|  *
 | |
|  * Important: the preprocessor may truncate numbers too large for it.
 | |
|  * Therefore, test the signed types only ... truncation won't generate
 | |
|  * a 01111111... bit pattern.
 | |
|  */
 | |
| 
 | |
| #ifndef NASM_NASMINT_H
 | |
| #define NASM_NASMINT_H
 | |
| 
 | |
| #include <limits.h>
 | |
| 
 | |
| /*** 64-bit type: __int64, long or long long ***/
 | |
| 
 | |
| /* Some old versions of gcc <limits.h> omit LLONG_MAX */
 | |
| #ifndef LLONG_MAX
 | |
| # ifdef __LONG_LONG_MAX__
 | |
| #  define LLONG_MAX __LONG_LONG_MAX__
 | |
| # else
 | |
| #  define LLONG_MAX 0		/* Assume long long is unusable */
 | |
| # endif
 | |
| #endif
 | |
| 
 | |
| #ifndef _I64_MAX
 | |
| # ifdef _MSC_VER
 | |
| #  define _I64_MAX 9223372036854775807
 | |
| # else
 | |
| #  define _I64_MAX 0
 | |
| # endif
 | |
| #endif
 | |
| 
 | |
| #if _I64_MAX == 9223372036854775807
 | |
| 
 | |
| /* Windows-based compiler: use __int64 */
 | |
| typedef signed __int64		int64_t;
 | |
| typedef unsigned __int64	uint64_t;
 | |
| #define _scn64			"I64"
 | |
| #define _pri64			"I64"
 | |
| #define INT64_C(x)		x ## i64
 | |
| #define UINT64_C(x)		x ## ui64
 | |
| 
 | |
| #elif LONG_MAX == 9223372036854775807L
 | |
| 
 | |
| /* long is 64 bits */
 | |
| typedef signed long		int64_t;
 | |
| typedef unsigned long		uint64_t;
 | |
| #define _scn64			"l"
 | |
| #define _pri64			"l"
 | |
| #define INT64_C(x)		x ## L
 | |
| #define UINT64_C(x)		x ## UL
 | |
| 
 | |
| #elif LLONG_MAX == 9223372036854775807LL
 | |
| 
 | |
| /* long long is 64 bits */
 | |
| typedef signed long long	int64_t;
 | |
| typedef unsigned long long	uint64_t;
 | |
| #define _scn64			"ll"
 | |
| #define _pri64			"ll"
 | |
| #define INT64_C(x)		x ## LL
 | |
| #define UINT64_C(x)		x ## ULL
 | |
| 
 | |
| #else
 | |
| 
 | |
| #error "Neither long nor long long is 64 bits in size"
 | |
| 
 | |
| #endif
 | |
| 
 | |
| /*** 32-bit type: int or long ***/
 | |
| 
 | |
| #if INT_MAX == 2147483647
 | |
| 
 | |
| /* int is 32 bits */
 | |
| typedef signed int		int32_t;
 | |
| typedef unsigned int		uint32_t;
 | |
| #define _scn32			""
 | |
| #define _pri32			""
 | |
| #define INT32_C(x)		x
 | |
| #define UINT32_C(x)		x ## U
 | |
| 
 | |
| #elif LONG_MAX == 2147483647L
 | |
| 
 | |
| /* long is 32 bits */
 | |
| typedef signed long		int32_t;
 | |
| typedef unsigned long		uint32_t;
 | |
| #define _scn32			"l"
 | |
| #define _pri32			"l"
 | |
| #define INT32_C(x)		x ## L
 | |
| #define UINT32_C(x)		x ## UL
 | |
| 
 | |
| #else
 | |
| 
 | |
| #error "Neither int nor long is 32 bits in size"
 | |
| 
 | |
| #endif
 | |
| 
 | |
| /*** 16-bit size: int or short ***/
 | |
| 
 | |
| #if INT_MAX == 32767
 | |
| 
 | |
| /* int is 16 bits */
 | |
| typedef signed int		int16_t;
 | |
| typedef unsigned int		uint16_t;
 | |
| #define _scn16			""
 | |
| #define _pri16			""
 | |
| #define INT16_C(x)		x
 | |
| #define UINT16_C(x)		x ## U
 | |
| 
 | |
| #elif SHRT_MAX == 32767
 | |
| 
 | |
| /* short is 16 bits */
 | |
| typedef signed short		int16_t;
 | |
| typedef unsigned short		uint16_t;
 | |
| #define _scn16			"h"
 | |
| #define _pri16			""
 | |
| #define INT16_C(x)		x
 | |
| #define UINT16_C(x)		x ## U
 | |
| 
 | |
| #else
 | |
| 
 | |
| #error "Neither short nor int is 16 bits in size"
 | |
| 
 | |
| #endif
 | |
| 
 | |
| /*** 8-bit size: char ***/
 | |
| 
 | |
| #if SCHAR_MAX == 127
 | |
| 
 | |
| /* char is 8 bits */
 | |
| typedef signed char		int8_t;
 | |
| typedef unsigned char		uint8_t;
 | |
| #define _scn8			"hh"
 | |
| #define _pri8			""
 | |
| #define INT8_C(x)		x
 | |
| #define UINT8_C(x)		x ## U
 | |
| 
 | |
| #else
 | |
| 
 | |
| #error "char is not 8 bits in size"
 | |
| 
 | |
| #endif
 | |
| 
 | |
| /* The rest of this is common to all models */
 | |
| 
 | |
| #define PRId8		_pri8  "d"
 | |
| #define PRId16		_pri16 "d"
 | |
| #define PRId32		_pri32 "d"
 | |
| #define PRId64		_pri64 "d"
 | |
| 
 | |
| #define PRIi8		_pri8  "i"
 | |
| #define PRIi16		_pri16 "i"
 | |
| #define PRIi32		_pri32 "i"
 | |
| #define PRIi64		_pri64 "i"
 | |
| 
 | |
| #define PRIo8		_pri8  "o"
 | |
| #define PRIo16		_pri16 "o"
 | |
| #define PRIo32		_pri32 "o"
 | |
| #define PRIo64		_pri64 "o"
 | |
| 
 | |
| #define PRIu8		_pri8  "u"
 | |
| #define PRIu16		_pri16 "u"
 | |
| #define PRIu32		_pri32 "u"
 | |
| #define PRIu64		_pri64 "u"
 | |
| 
 | |
| #define PRIx8		_pri8  "x"
 | |
| #define PRIx16		_pri16 "x"
 | |
| #define PRIx32		_pri32 "x"
 | |
| #define PRIx64		_pri64 "x"
 | |
| 
 | |
| #define PRIX8		_pri8  "X"
 | |
| #define PRIX16		_pri16 "X"
 | |
| #define PRIX32		_pri32 "X"
 | |
| #define PRIX64		_pri64 "X"
 | |
| 
 | |
| #define SCNd8		_scn8  "d"
 | |
| #define SCNd16		_scn16 "d"
 | |
| #define SCNd32		_scn32 "d"
 | |
| #define SCNd64		_scn64 "d"
 | |
| 
 | |
| #define SCNi8		_scn8  "i"
 | |
| #define SCNi16		_scn16 "i"
 | |
| #define SCNi32		_scn32 "i"
 | |
| #define SCNi64		_scn64 "i"
 | |
| 
 | |
| #define SCNo8		_scn8  "o"
 | |
| #define SCNo16		_scn16 "o"
 | |
| #define SCNo32		_scn32 "o"
 | |
| #define SCNo64		_scn64 "o"
 | |
| 
 | |
| #define SCNu8		_scn8  "u"
 | |
| #define SCNu16		_scn16 "u"
 | |
| #define SCNu32		_scn32 "u"
 | |
| #define SCNu64		_scn64 "u"
 | |
| 
 | |
| #define SCNx8		_scn8  "x"
 | |
| #define SCNx16		_scn16 "x"
 | |
| #define SCNx32		_scn32 "x"
 | |
| #define SCNx64		_scn64 "x"
 | |
| 
 | |
| #define INT8_MIN	INT8_C(-128)
 | |
| #define INT8_MAX	INT8_C(127)
 | |
| #define UINT8_MAX	UINT8_C(255)
 | |
| 
 | |
| #define INT16_MIN	INT16_C(-32768)
 | |
| #define INT16_MAX	INT16_C(32767)
 | |
| #define UINT16_MAX	UINT16_C(65535)
 | |
| 
 | |
| #define INT32_MIN	INT32_C(-2147483648)
 | |
| #define INT32_MAX	INT32_C(2147483647)
 | |
| #define UINT32_MAX	UINT32_C(4294967295)
 | |
| 
 | |
| #define INT64_MIN	INT64_C(-9223372036854775808)
 | |
| #define INT64_MAX	INT64_C(9223372036854775807)
 | |
| #define UINT64_MAX	UINT64_C(18446744073709551615)
 | |
| 
 | |
| #endif /* NASM_NASMINT_H */
 |