ReXGlue SDK
Loading...
Searching...
No Matches
platform.h File Reference

Platform flags, packing macros and export markers. More...

#include <bit>
#include <cstdint>

Go to the source code of this file.

Namespaces

namespace  rex
namespace  rex::platform

Macros

#define REX_PLATFORM_WIN32   1
#define REX_PLATFORM_MAC   0
#define REX_PLATFORM_ANDROID   0
#define REX_PLATFORM_GNU_LINUX   0
#define REX_PLATFORM_LINUX   0
#define REX_ARCH_AMD64   1
#define REX_PACKED_STRUCT(name, value)
#define REX_PACKED_STRUCT_ANONYMOUS(value)
#define REX_PACKED_UNION(name, value)
#define REX_XSTRINGIFY(x)
#define REX_STRINGIFY(x)
#define REX_MUSTTAIL
#define REX_API   __attribute__((visibility("default")))
#define REX_PPC_API   __attribute__((visibility("default")))
#define REX_APU_API   __attribute__((visibility("default")))
#define REX_HID_API   __attribute__((visibility("default")))
#define REX_GPU_API   __attribute__((visibility("default")))
#define REX_UI_API   __attribute__((visibility("default")))
#define REX_APP_API   __attribute__((visibility("default")))
#define REX_KERNEL_API   __attribute__((visibility("default")))
#define REX_XAM_API   __attribute__((visibility("default")))

Variables

constexpr bool rex::platform::kWindows = REX_PLATFORM_WIN32
constexpr bool rex::platform::kLinux = REX_PLATFORM_LINUX
constexpr bool rex::platform::kMac = REX_PLATFORM_MAC
constexpr bool rex::platform::kPosix = kLinux || kMac
constexpr char rex::platform::kPathSeparator = '/'

Detailed Description

Platform flags, packing macros and export markers.

License
BSD 3-Clause License See LICENSE file in the project root for full license text.
Remarks
Derived from Xenia's xenia/base/platform.h (Ben Vanik, 2020).

Macro Definition Documentation

◆ REX_API

#define REX_API   __attribute__((visibility("default")))

Marks a declaration that rexbase exports.

class REX_API Clock;
REX_API void Break();
#define REX_API
Definition platform.h:177

◆ REX_APP_API

#define REX_APP_API   __attribute__((visibility("default")))

Marks a declaration that rexapp exports.

class REX_APP_API App;
#define REX_APP_API
Definition platform.h:279

◆ REX_APU_API

#define REX_APU_API   __attribute__((visibility("default")))

Marks a declaration that rexapu exports.

REX_APU_API class AudioSettings;
#define REX_APU_API
Definition platform.h:211

◆ REX_GPU_API

#define REX_GPU_API   __attribute__((visibility("default")))

Marks a declaration that rexgpu exports.

REX_GPU_API class GraphicsSettings;
#define REX_GPU_API
Definition platform.h:245

◆ REX_HID_API

#define REX_HID_API   __attribute__((visibility("default")))

Marks a declaration that rexhid exports.

REX_HID_API class InputSettings;
#define REX_HID_API
Definition platform.h:228

◆ REX_KERNEL_API

#define REX_KERNEL_API   __attribute__((visibility("default")))

Marks a declaration that rexkernel exports.

class REX_KERNEL_API GuestAddressSpace;
REX_KERNEL_API std::span<const ExportEntry> Exports(ExportModule module);
#define REX_KERNEL_API
Definition platform.h:297

◆ REX_MUSTTAIL

#define REX_MUSTTAIL

Makes a return statement a guaranteed tail call where the compiler supports it.

◆ REX_PACKED_STRUCT

#define REX_PACKED_STRUCT ( name,
value )
Value:
REX_DETAIL_PACKED_SCOPE(struct name value)

Declares a struct with 1 byte packing.

Parameters
nameAn identifier, pasted after struct.
valueBraced member list.
u8 tag;
u32 size;
})
#define REX_PACKED_STRUCT(name, value)
Definition platform.h:107

◆ REX_PACKED_STRUCT_ANONYMOUS

#define REX_PACKED_STRUCT_ANONYMOUS ( value)
Value:
REX_DETAIL_PACKED_SCOPE(struct value)

Declares an unnamed struct with 1 byte packing.

Parameters
valueBraced member list.
u8 tag;
u32 size;
})
#define REX_PACKED_STRUCT_ANONYMOUS(value)
Definition platform.h:120

◆ REX_PACKED_UNION

#define REX_PACKED_UNION ( name,
value )
Value:
REX_DETAIL_PACKED_SCOPE(union name value)

Declares a union with 1 byte packing.

Parameters
valueBraced member list.
u32 value;
u8 bytes[4];
})
#define REX_PACKED_UNION(name, value)
Definition platform.h:133

◆ REX_PLATFORM_MAC

#define REX_PLATFORM_MAC   0

Each REX_PLATFORM_ flag not set above is 0, so it works in preprocessor conditions and static_assert.

◆ REX_PPC_API

#define REX_PPC_API   __attribute__((visibility("default")))

Marks a declaration that rexppc exports.

REX_PPC_API void AttachMMIO(MMIOBlock block, const MMIORecipient& recipient);
#define REX_PPC_API
Definition platform.h:194

◆ REX_STRINGIFY

#define REX_STRINGIFY ( x)
Value:
#define REX_XSTRINGIFY(x)
Definition platform.h:142

Expands the argument, then turns it into a string literal.

REX_STRINGIFY(__LINE__)
#define REX_STRINGIFY(x)
Definition platform.h:150

◆ REX_UI_API

#define REX_UI_API   __attribute__((visibility("default")))

Marks a declaration that rexui exports.

REX_UI_API class UISettings;
#define REX_UI_API
Definition platform.h:262

◆ REX_XAM_API

#define REX_XAM_API   __attribute__((visibility("default")))

Marks a declaration that rexxam exports.

class REX_XAM_API XAMApplet;
#define REX_XAM_API
Definition platform.h:314

◆ REX_XSTRINGIFY

#define REX_XSTRINGIFY ( x)
Value:
#x

Turns the argument into a string literal without expanding it first.

REX_XSTRINGIFY(__LINE__)