// Copyright Epic Games, Inc. All Rights Reserved. #include #if ZEN_PLATFORM_WINDOWS # include #endif #if ZEN_PLATFORM_LINUX # include #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include namespace zen { ////////////////////////////////////////////////////////////////////////// bool IsDebuggerPresent() { #if ZEN_PLATFORM_WINDOWS return ::IsDebuggerPresent(); #else return false; #endif } std::optional InteractiveSessionFlag; void SetIsInteractiveSession(bool Value) { InteractiveSessionFlag = Value; } bool IsInteractiveSession() { if (!InteractiveSessionFlag.has_value()) { #if ZEN_PLATFORM_WINDOWS DWORD dwSessionId = 0; if (ProcessIdToSessionId(GetCurrentProcessId(), &dwSessionId)) { InteractiveSessionFlag = (dwSessionId != 0); } else { InteractiveSessionFlag = false; } #else // TODO: figure out what actually makes sense here InteractiveSessionFlag = true; #endif } return InteractiveSessionFlag.value(); } ////////////////////////////////////////////////////////////////////////// static int s_ApplicationExitCode = 0; static bool s_ApplicationExitRequested; bool IsApplicationExitRequested() { return s_ApplicationExitRequested; } void RequestApplicationExit(int ExitCode) { s_ApplicationExitCode = ExitCode; s_ApplicationExitRequested = true; } #if ZEN_WITH_TESTS void zencore_forcelinktests() { zen::blake3_forcelink(); zen::compositebuffer_forcelink(); zen::compress_forcelink(); zen::filesystem_forcelink(); zen::intmath_forcelink(); zen::iobuffer_forcelink(); zen::memory_forcelink(); zen::mpscqueue_forcelink(); zen::refcount_forcelink(); zen::sha1_forcelink(); zen::stats_forcelink(); zen::stream_forcelink(); zen::string_forcelink(); zen::thread_forcelink(); zen::timer_forcelink(); zen::uid_forcelink(); zen::uson_forcelink(); zen::usonbuilder_forcelink(); zen::usonpackage_forcelink(); zen::crypto_forcelink(); } #endif } // namespace zen