hyperion::platform#
hyperion::platform is a foundational C++ library for cross-platform projects, providing several common features to detect, work around, or abstract away the differences between various platforms and toolchains, such as operating system detection macros, CPU architecture detection macros, compiler and library feature detection macros, and bounds-checked numeric literals.
hyperion::platform is also a core library of the Hyperion game engine project. As such, it also provides an _optional_ feature specific to its usage in that and related projects, namely frame profiling support backed by Tracy. This is disabled by default (see the Quick Start Guide and the documentation for more on to enable it).
See the Quick Start Guide for how to get started using hyperion::platform.
For an overview of each module, see the links in the left sidebar or below.
1#include <hyperion/platform.h>
2#include <hyperion/platform/types.h>
3
4using hyperion::operator""_i32;
5
6static constexpr auto the_meaning_of_life = 42_i32;
7
8#if HYPERION_PLATFORM_IS_ARCHITECTURE(HYPERION_PLATFORM_ARCHITECTURE_ARM_V8)
9 // do something for ARM
10#elif HYPERION_PLATFORM_IS_ARCHITECTURE(HYPERION_PLATFORM_ARCHITECTURE_X86_64)
11 // do something for x86_64
12#else
13 // do something else
14#endif
Getting Started
Quick Reference
Platform and Feature Detection Macros
- Platform
HYPERION_PLATFORM_IS_WINDOWS
HYPERION_PLATFORM_IS_APPLE
HYPERION_PLATFORM_IS_UNIX
HYPERION_PLATFORM_IS_LINUX
HYPERION_PLATFORM_IS_BSD
HYPERION_PLATFORM_IS_ANDROID
HYPERION_PLATFORM_COMPILER_IS_CLANG
HYPERION_PLATFORM_COMPILER_IS_GCC
HYPERION_PLATFORM_COMPILER_IS_MSVC
HYPERION_PLATFORM_STD_LIB_IS_LIBCPP
HYPERION_PLATFORM_STD_LIB_IS_LIBSTDCPP
HYPERION_PLATFORM_STD_LIB_IS_MSVC
HYPERION_PLATFORM_MODE_IS_DEBUG
HYPERION_PLATFORM_MODE_IS_RELEASE
HYPERION_PLATFORM_X86_64
HYPERION_PLATFORM_X86
HYPERION_PLATFORM_ARM_V6
HYPERION_PLATFORM_ARM_V7
HYPERION_PLATFORM_ARM_V7A
HYPERION_PLATFORM_ARM_V7R
HYPERION_PLATFORM_ARM_V7M
HYPERION_PLATFORM_ARM_V7S
HYPERION_PLATFORM_ARM_V8
HYPERION_PLATFORM_ARM_64
HYPERION_PLATFORM_UNKNOWN
HYPERION_PLATFORM_ARCHITECTURE
HYPERION_PLATFORM_IS_ARCHITECTURE
HYPERION_PLATFORM_IS_LITTLE_ENDIAN
HYPERION_PLATFORM_IS_BIG_ENDIAN
HYPERION_PLATFORM_CACHE_LINE_SIZE
Utility Macros
- Defines
HYPERION_IGNORE_UNUSED_MACROS_WARNING_START
HYPERION_IGNORE_UNUSED_MACROS_WARNING_STOP
HYPERION_STD_LIB_HAS_EXPERIMENTAL_SOURCE_LOCATION
HYPERION_STD_LIB_HAS_SOURCE_LOCATION
HYPERION_STD_LIB_HAS_JTHREAD
HYPERION_PLATFORM_STD_LIB_HAS_COMPARE
HYPERION_COMPILER_HAS_TYPE_PACK_ELEMENT
HYPERION_PLATFORM_COMPILER_SUPPORTS_CONDITIONALLY_TRIVIAL_SMFS
HYPERION_NO_UNIQUE_ADDRESS
HYPERION_TRIVIAL_ABI
HYPERION_NO_DESTROY
HYPERION_CONSTEXPR_STRINGS
HYPERION_UNREACHABLE
HYPERION_IGNORE_SUGGEST_DESTRUCTOR_OVERRIDE_WARNING_START
HYPERION_IGNORE_SUGGEST_DESTRUCTOR_OVERRIDE_WARNING_STOP
HYPERION_IGNORE_SWITCH_MISSING_ENUM_VALUES_WARNING_START
HYPERION_IGNORE_SWITCH_MISSING_ENUM_VALUES_WARNING_STOP
HYPERION_IGNORE_OLD_STYLE_CASTS_WARNING_START
HYPERION_IGNORE_OLD_STYLE_CASTS_WARNING_STOP
HYPERION_IGNORE_INVALID_NORETURN_WARNING_START
HYPERION_IGNORE_INVALID_NORETURN_WARNING_STOP
HYPERION_IGNORE_DEPRECATED_DECLARATIONS_WARNING_START
HYPERION_IGNORE_DEPRECATED_DECLARATIONS_WARNING_STOP
HYPERION_IGNORE_UNINITIALIZED_VARIABLES_WARNING_START
HYPERION_IGNORE_UNINITIALIZED_VARIABLES_WARNING_STOP
HYPERION_IGNORE_UNNEEDED_INTERNAL_DECL_WARNING_START
HYPERION_IGNORE_UNNEEDED_INTERNAL_DECL_WARNING_STOP
HYPERION_IGNORE_CONSTANT_CONDITIONAL_EXPRESSIONS_WARNING_START
HYPERION_IGNORE_CONSTANT_CONDITIONAL_EXPRESSIONS_WARNING_STOP
HYPERION_IGNORE_MARKED_NOEXCEPT_BUT_THROWS_WARNING_START
HYPERION_IGNORE_MARKED_NOEXCEPT_BUT_THROWS_WARNING_STOP
HYPERION_IGNORE_UNUSED_VALUES_WARNING_START
HYPERION_IGNORE_UNUSED_VALUES_WARNING_STOP
HYPERION_IGNORE_UNUSED_VARIABLES_WARNING_START
HYPERION_IGNORE_UNUSED_VARIABLES_WARNING_STOP
HYPERION_IGNORE_MISSING_NORETURN_WARNING_START
HYPERION_IGNORE_MISSING_NORETURN_WARNING_STOP
HYPERION_IGNORE_RESERVED_IDENTIFIERS_WARNING_START
HYPERION_IGNORE_RESERVED_IDENTIFIERS_WARNING_STOP
HYPERION_IGNORE_RESERVED_MACRO_IDENTIFIERS_WARNING_START
HYPERION_IGNORE_RESERVED_MACRO_IDENTIFIERS_WARNING_STOP
HYPERION_IGNORE_PADDING_WARNING_START
HYPERION_IGNORE_PADDING_WARNING_STOP
HYPERION_IGNORE_WEAK_VTABLES_WARNING_START
HYPERION_IGNORE_WEAK_VTABLES_WARNING_STOP
HYPERION_IGNORE_UNUSED_TEMPLATES_WARNING_START
HYPERION_IGNORE_UNUSED_TEMPLATES_WARNING_STOP
HYPERION_IGNORE_UNUSED_FUNCTIONS_WARNING_START
HYPERION_IGNORE_UNUSED_FUNCTIONS_WARNING_STOP
HYPERION_IGNORE_UNUSED_MEMBER_FUNCTIONS_WARNING_START
HYPERION_IGNORE_UNUSED_MEMBER_FUNCTIONS_WARNING_STOP
HYPERION_IGNORE_SIGNED_BITFIELD_WARNING_START
HYPERION_IGNORE_SIGNED_BITFIELD_WARNING_STOP
HYPERION_IGNORE_UNKNOWN_DOC_COMMAND_WARNING_START
HYPERION_IGNORE_UNKNOWN_DOC_COMMAND_WARNING_STOP
HYPERION_IGNORE_DOCUMENTATION_WARNING_START
HYPERION_IGNORE_DOCUMENTATION_WARNING_STOP
HYPERION_IGNORE_CONSTRUCTOR_SHADOW_FIELDS_WARNING_START
HYPERION_IGNORE_CONSTRUCTOR_SHADOW_FIELDS_WARNING_STOP
HYPERION_IGNORE_FLOAT_EQUALITY_WARNING_START
HYPERION_IGNORE_FLOAT_EQUALITY_WARNING_STOP
HYPERION_IGNORE_COMMA_MISUSE_WARNING_START
HYPERION_IGNORE_COMMA_MISUSE_WARNING_STOP
HYPERION_IGNORE_UNSAFE_BUFFER_WARNING_START
HYPERION_IGNORE_UNSAFE_BUFFER_WARNING_STOP
HYPERION_PLATFORM_PROFILING_ENABLED
HYPERION_PROFILE_FUNCTION
HYPERION_PROFILE_START_FRAME
HYPERION_PROFILE_END_FRAME
HYPERION_PROFILE_MARK_FRAME
Core Library Utilities
- Core Library Utilities
ignore()
EpsilonType
make_epsilon()
equality_compare()
inequality_compare()
less_than_compare()
less_than_or_equal_compare()
greater_than_compare()
greater_than_or_equal_compare()
is_epsilon_specialization_v
hyperion::platform::compare::Epsilon
hyperion::platform::compare::is_epsilon_specialization
EqualityComparable
InequalityComparable
LessThanComparable
LessThanOrEqualComparable
GreaterThanComparable
GreaterThanOrEqualComparable
Arithmetic
EpsilonKind
Core Numeric types
- Core Numeric Types
u8
u16
u32
u64
usize
umax
i8
i16
i32
i64
imax
byte
f32
f64
fmax
operator""_byte()
operator""_u8()
operator""_u16()
operator""_u32()
operator""_u64()
operator""_usize()
operator""_umax()
operator""_i8()
operator""_i16()
operator""_i32()
operator""_i64()
operator""_imax()
operator""_f32()
operator""_f64()
operator""_fmax()