libnx v4.9.0
Loading...
Searching...
No Matches
types.h
Go to the documentation of this file.
1/**
2 * @file switch/types.h
3 * @brief Various system types.
4 * @copyright libnx Authors
5 */
6#pragma once
7
8#include <stdint.h>
9#include <stdbool.h>
10#include <stddef.h>
11#include <stdalign.h>
12
13#ifndef SSIZE_MAX
14#ifdef SIZE_MAX
15#define SSIZE_MAX ((SIZE_MAX) >> 1)
16#endif
17#endif
18
19typedef uint8_t u8; ///< 8-bit unsigned integer.
20typedef uint16_t u16; ///< 16-bit unsigned integer.
21typedef uint32_t u32; ///< 32-bit unsigned integer.
22typedef uint64_t u64; ///< 64-bit unsigned integer.
23typedef __uint128_t u128; ///< 128-bit unsigned integer.
24
25typedef int8_t s8; ///< 8-bit signed integer.
26typedef int16_t s16; ///< 16-bit signed integer.
27typedef int32_t s32; ///< 32-bit signed integer.
28typedef int64_t s64; ///< 64-bit signed integer.
29typedef __int128_t s128; ///< 128-bit unsigned integer.
30
31typedef volatile u8 vu8; ///< 8-bit volatile unsigned integer.
32typedef volatile u16 vu16; ///< 16-bit volatile unsigned integer.
33typedef volatile u32 vu32; ///< 32-bit volatile unsigned integer.
34typedef volatile u64 vu64; ///< 64-bit volatile unsigned integer.
35typedef volatile u128 vu128; ///< 128-bit volatile unsigned integer.
36
37typedef volatile s8 vs8; ///< 8-bit volatile signed integer.
38typedef volatile s16 vs16; ///< 16-bit volatile signed integer.
39typedef volatile s32 vs32; ///< 32-bit volatile signed integer.
40typedef volatile s64 vs64; ///< 64-bit volatile signed integer.
41typedef volatile s128 vs128; ///< 128-bit volatile signed integer.
42
43typedef u32 Handle; ///< Kernel object handle.
44typedef u32 Result; ///< Function error code result type.
45typedef void (*ThreadFunc)(void *); ///< Thread entrypoint function.
46typedef void (*VoidFn)(void); ///< Function without arguments nor return value.
47
48typedef struct { u8 uuid[0x10]; } Uuid; ///< Unique identifier.
49
50typedef struct { float value[3]; } UtilFloat3; ///< 3 floats.
51
52/// Creates a bitmask from a bit number.
53#ifndef BIT
54#define BIT(n) (1U<<(n))
55#endif
56
57#ifndef BITL
58#define BITL(n) (1UL<<(n))
59#endif
60
61/// Packs a struct so that it won't include padding bytes.
62#ifndef NX_PACKED
63#define NX_PACKED __attribute__((packed))
64#endif
65
66/// Marks a function as not returning, for the purposes of compiler optimization.
67#ifndef NX_NORETURN
68#define NX_NORETURN __attribute__((noreturn))
69#endif
70
71/// Performs a dummy operation on the specified argument in order to silence compiler warnings about unused arguments.
72#ifndef NX_IGNORE_ARG
73#define NX_IGNORE_ARG(x) (void)(x)
74#endif
75
76/// Flags a function as deprecated.
77#ifndef NX_DEPRECATED
78#ifndef LIBNX_NO_DEPRECATION
79#define NX_DEPRECATED __attribute__ ((deprecated))
80#else
81#define NX_DEPRECATED
82#endif
83#endif
84
85/// Flags a function as (always) inline.
86#define NX_INLINE __attribute__((always_inline)) static inline
87
88/// Flags a function as constexpr in C++14 and above; or as (always) inline otherwise.
89#if __cplusplus >= 201402L
90#define NX_CONSTEXPR NX_INLINE constexpr
91#else
92#define NX_CONSTEXPR NX_INLINE
93#endif
94
95/// Invalid handle.
96#define INVALID_HANDLE ((Handle) 0)
Definition types.h:50
Definition types.h:48
__int128_t s128
128-bit unsigned integer.
Definition types.h:29
volatile s8 vs8
8-bit volatile signed integer.
Definition types.h:37
volatile u8 vu8
8-bit volatile unsigned integer.
Definition types.h:31
int64_t s64
64-bit signed integer.
Definition types.h:28
uint64_t u64
64-bit unsigned integer.
Definition types.h:22
volatile u128 vu128
128-bit volatile unsigned integer.
Definition types.h:35
volatile s64 vs64
64-bit volatile signed integer.
Definition types.h:40
void(* VoidFn)(void)
Function without arguments nor return value.
Definition types.h:46
volatile u16 vu16
16-bit volatile unsigned integer.
Definition types.h:32
volatile s32 vs32
32-bit volatile signed integer.
Definition types.h:39
volatile s128 vs128
128-bit volatile signed integer.
Definition types.h:41
volatile s16 vs16
16-bit volatile signed integer.
Definition types.h:38
void(* ThreadFunc)(void *)
Thread entrypoint function.
Definition types.h:45
uint8_t u8
8-bit unsigned integer.
Definition types.h:19
__uint128_t u128
128-bit unsigned integer.
Definition types.h:23
int8_t s8
8-bit signed integer.
Definition types.h:25
int16_t s16
16-bit signed integer.
Definition types.h:26
u32 Handle
Kernel object handle.
Definition types.h:43
volatile u32 vu32
32-bit volatile unsigned integer.
Definition types.h:33
volatile u64 vu64
64-bit volatile unsigned integer.
Definition types.h:34
uint16_t u16
16-bit unsigned integer.
Definition types.h:20
u32 Result
Function error code result type.
Definition types.h:44
int32_t s32
32-bit signed integer.
Definition types.h:27
uint32_t u32
32-bit unsigned integer.
Definition types.h:21