mirror of
https://github.com/4jcraft/4jcraft.git
synced 2026-05-17 20:02:54 +00:00
19 lines
746 B
C++
19 lines
746 B
C++
#pragma once
|
|
|
|
#include "IPlatformFilesystem.h"
|
|
|
|
// Function accessor backed by a function-local static (Meyers singleton).
|
|
// Avoids the static-initialization-order fiasco that the previous
|
|
// `extern IPlatformFilesystem& PlatformFilesystem;` form had: anything reading
|
|
// PlatformFilesystem during another translation unit's static init was UB.
|
|
//
|
|
// The macro lets the existing call sites keep writing
|
|
// `PlatformFilesystem.foo()` without each call site having to add the `()`. The
|
|
// expansion is just a call to a function returning a reference, so codegen is
|
|
// unchanged once inlined.
|
|
namespace platform_internal {
|
|
IPlatformFilesystem& PlatformFilesystem_get();
|
|
}
|
|
|
|
#define PlatformFilesystem (::platform_internal::PlatformFilesystem_get())
|