HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
Namespaces | Macros | Typedefs | Enumerations | Variables
architecture.hpp File Reference

Functions and macros for handling architectural difference between compilers, CPUs and operating systems. More...

#include <exception>
#include <cstddef>
#include <type_traits>

Go to the source code of this file.

Namespaces

namespace  v1
 DOXYGEN BUG.
 

Macros

#define HI_OS_WINDOWS   'W'
 
#define HI_OS_MACOS   'A'
 
#define HI_OS_MOBILE   'M'
 
#define HI_OS_OTHER   'O'
 
#define HI_OPERATING_SYSTEM   HI_OS_OTHER
 
#define HI_CC_MSVC   'm'
 
#define HI_CC_GCC   'g'
 
#define HI_CC_CLANG   'c'
 
#define HI_CPU_X86   'i'
 
#define HI_CPU_X64   'I'
 
#define HI_CPU_ARM   'a'
 
#define HI_CPU_ARM64   'A'
 
#define HI_CPU_UNKNOWN   '-'
 
#define HI_PROCESSOR   HI_CPU_UNKNOWN
 
#define HI_X86_64_LEVEL   1
 
#define HI_HAS_INT128   1
 

Typedefs

using v1::intreg_t = int32_t
 
using v1::uintreg_t = uint32_t
 
using v1::int128_t = __int128_t
 Signed 128 bit integer.
 
using v1::uint128_t = unsigned __int128_t
 Unsigned 128 bit integer.
 
using v1::os_handle = void *
 
using v1::file_handle = os_handle
 

Enumerations

enum class  operating_system {
  windows = HI_OS_WINDOWS , macos = HI_OS_MACOS , mobile = HI_OS_MOBILE , other = HI_OS_OTHER ,
  current = HI_OPERATING_SYSTEM
}
 
enum class  compiler { msvc = HI_CC_MSVC , gcc = HI_CC_GCC , clang = HI_CC_CLANG , current = HI_COMPILER }
 
enum class  processor {
  x86 = HI_CPU_X86 , x64 = HI_CPU_X64 , arm = HI_CPU_ARM , arm64 = HI_CPU_ARM64 ,
  unknown = HI_CPU_UNKNOWN , current = HI_PROCESSOR
}
 

Variables

constexpr std::size_t v1::hardware_destructive_interference_size = 128
 
constexpr std::size_t v1::hardware_constructive_interference_size = 64
 

Detailed Description

Functions and macros for handling architectural difference between compilers, CPUs and operating systems.