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_WINDOWSHYPERION_PLATFORM_IS_APPLEHYPERION_PLATFORM_IS_UNIXHYPERION_PLATFORM_IS_LINUXHYPERION_PLATFORM_IS_BSDHYPERION_PLATFORM_IS_ANDROIDHYPERION_PLATFORM_COMPILER_IS_CLANGHYPERION_PLATFORM_COMPILER_IS_GCCHYPERION_PLATFORM_COMPILER_IS_MSVCHYPERION_PLATFORM_STD_LIB_IS_LIBCPPHYPERION_PLATFORM_STD_LIB_IS_LIBSTDCPPHYPERION_PLATFORM_STD_LIB_IS_MSVCHYPERION_PLATFORM_MODE_IS_DEBUGHYPERION_PLATFORM_MODE_IS_RELEASEHYPERION_PLATFORM_X86_64HYPERION_PLATFORM_X86HYPERION_PLATFORM_ARM_V6HYPERION_PLATFORM_ARM_V7HYPERION_PLATFORM_ARM_V7AHYPERION_PLATFORM_ARM_V7RHYPERION_PLATFORM_ARM_V7MHYPERION_PLATFORM_ARM_V7SHYPERION_PLATFORM_ARM_V8HYPERION_PLATFORM_ARM_64HYPERION_PLATFORM_UNKNOWNHYPERION_PLATFORM_ARCHITECTUREHYPERION_PLATFORM_IS_ARCHITECTUREHYPERION_PLATFORM_IS_LITTLE_ENDIANHYPERION_PLATFORM_IS_BIG_ENDIANHYPERION_PLATFORM_CACHE_LINE_SIZE
Utility Macros
- Defines
HYPERION_IGNORE_UNUSED_MACROS_WARNING_STARTHYPERION_IGNORE_UNUSED_MACROS_WARNING_STOPHYPERION_STD_LIB_HAS_EXPERIMENTAL_SOURCE_LOCATIONHYPERION_STD_LIB_HAS_SOURCE_LOCATIONHYPERION_STD_LIB_HAS_JTHREADHYPERION_PLATFORM_STD_LIB_HAS_COMPAREHYPERION_COMPILER_HAS_TYPE_PACK_ELEMENTHYPERION_PLATFORM_COMPILER_SUPPORTS_CONDITIONALLY_TRIVIAL_SMFSHYPERION_NO_UNIQUE_ADDRESSHYPERION_TRIVIAL_ABIHYPERION_NO_DESTROYHYPERION_CONSTEXPR_STRINGSHYPERION_UNREACHABLEHYPERION_IGNORE_SUGGEST_DESTRUCTOR_OVERRIDE_WARNING_STARTHYPERION_IGNORE_SUGGEST_DESTRUCTOR_OVERRIDE_WARNING_STOPHYPERION_IGNORE_SWITCH_MISSING_ENUM_VALUES_WARNING_STARTHYPERION_IGNORE_SWITCH_MISSING_ENUM_VALUES_WARNING_STOPHYPERION_IGNORE_OLD_STYLE_CASTS_WARNING_STARTHYPERION_IGNORE_OLD_STYLE_CASTS_WARNING_STOPHYPERION_IGNORE_INVALID_NORETURN_WARNING_STARTHYPERION_IGNORE_INVALID_NORETURN_WARNING_STOPHYPERION_IGNORE_DEPRECATED_DECLARATIONS_WARNING_STARTHYPERION_IGNORE_DEPRECATED_DECLARATIONS_WARNING_STOPHYPERION_IGNORE_UNINITIALIZED_VARIABLES_WARNING_STARTHYPERION_IGNORE_UNINITIALIZED_VARIABLES_WARNING_STOPHYPERION_IGNORE_UNNEEDED_INTERNAL_DECL_WARNING_STARTHYPERION_IGNORE_UNNEEDED_INTERNAL_DECL_WARNING_STOPHYPERION_IGNORE_CONSTANT_CONDITIONAL_EXPRESSIONS_WARNING_STARTHYPERION_IGNORE_CONSTANT_CONDITIONAL_EXPRESSIONS_WARNING_STOPHYPERION_IGNORE_MARKED_NOEXCEPT_BUT_THROWS_WARNING_STARTHYPERION_IGNORE_MARKED_NOEXCEPT_BUT_THROWS_WARNING_STOPHYPERION_IGNORE_UNUSED_VALUES_WARNING_STARTHYPERION_IGNORE_UNUSED_VALUES_WARNING_STOPHYPERION_IGNORE_UNUSED_VARIABLES_WARNING_STARTHYPERION_IGNORE_UNUSED_VARIABLES_WARNING_STOPHYPERION_IGNORE_MISSING_NORETURN_WARNING_STARTHYPERION_IGNORE_MISSING_NORETURN_WARNING_STOPHYPERION_IGNORE_RESERVED_IDENTIFIERS_WARNING_STARTHYPERION_IGNORE_RESERVED_IDENTIFIERS_WARNING_STOPHYPERION_IGNORE_RESERVED_MACRO_IDENTIFIERS_WARNING_STARTHYPERION_IGNORE_RESERVED_MACRO_IDENTIFIERS_WARNING_STOPHYPERION_IGNORE_PADDING_WARNING_STARTHYPERION_IGNORE_PADDING_WARNING_STOPHYPERION_IGNORE_WEAK_VTABLES_WARNING_STARTHYPERION_IGNORE_WEAK_VTABLES_WARNING_STOPHYPERION_IGNORE_UNUSED_TEMPLATES_WARNING_STARTHYPERION_IGNORE_UNUSED_TEMPLATES_WARNING_STOPHYPERION_IGNORE_UNUSED_FUNCTIONS_WARNING_STARTHYPERION_IGNORE_UNUSED_FUNCTIONS_WARNING_STOPHYPERION_IGNORE_UNUSED_MEMBER_FUNCTIONS_WARNING_STARTHYPERION_IGNORE_UNUSED_MEMBER_FUNCTIONS_WARNING_STOPHYPERION_IGNORE_SIGNED_BITFIELD_WARNING_STARTHYPERION_IGNORE_SIGNED_BITFIELD_WARNING_STOPHYPERION_IGNORE_UNKNOWN_DOC_COMMAND_WARNING_STARTHYPERION_IGNORE_UNKNOWN_DOC_COMMAND_WARNING_STOPHYPERION_IGNORE_DOCUMENTATION_WARNING_STARTHYPERION_IGNORE_DOCUMENTATION_WARNING_STOPHYPERION_IGNORE_CONSTRUCTOR_SHADOW_FIELDS_WARNING_STARTHYPERION_IGNORE_CONSTRUCTOR_SHADOW_FIELDS_WARNING_STOPHYPERION_IGNORE_FLOAT_EQUALITY_WARNING_STARTHYPERION_IGNORE_FLOAT_EQUALITY_WARNING_STOPHYPERION_IGNORE_COMMA_MISUSE_WARNING_STARTHYPERION_IGNORE_COMMA_MISUSE_WARNING_STOPHYPERION_IGNORE_UNSAFE_BUFFER_WARNING_STARTHYPERION_IGNORE_UNSAFE_BUFFER_WARNING_STOPHYPERION_PLATFORM_PROFILING_ENABLEDHYPERION_PROFILE_FUNCTIONHYPERION_PROFILE_START_FRAMEHYPERION_PROFILE_END_FRAMEHYPERION_PROFILE_MARK_FRAME
Core Library Utilities
- Core Library Utilities
ignore()EpsilonTypemake_epsilon()equality_compare()inequality_compare()less_than_compare()less_than_or_equal_compare()greater_than_compare()greater_than_or_equal_compare()is_epsilon_specialization_vhyperion::platform::compare::Epsilonhyperion::platform::compare::is_epsilon_specializationEqualityComparableInequalityComparableLessThanComparableLessThanOrEqualComparableGreaterThanComparableGreaterThanOrEqualComparableArithmeticEpsilonKind
Core Numeric types
- Core Numeric Types
u8u16u32u64usizeumaxi8i16i32i64imaxbytef32f64fmaxoperator""_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()