/*** Copyright (C) 2022 J Reece Wilson (a/k/a "Reece"). All rights reserved. File: OSInformation.hpp Date: 2022-1-25 Author: Reece ***/ #pragma once namespace Aurora::SWInfo { struct OSInformation { const AuString *kKernelString; // const AuString *kUserlandBrand; // Windows 10 Pro, Xbox, glibc, Ubuntu, distro name const AuString *kUserlandDesktopEnv; // DWM, CF, [kwin/etc] const AuString *kBuildString; // Example: (`??7??.?.amd64???.rs?_release.??-??`, `Linux version wtf-doxing-lts (no-lts@fingerprinterinos) (some things here) #1 SMP Mon, 69 Apr 2000 13:33:37 +0000`) AuUInt32 uKernelMajor {}; AuUInt32 uKernelMinor {}; AuUInt32 uKernelPatch {}; AuUInt32 uUserlandMajor {}; AuUInt32 uUserlandMinor {}; AuUInt32 uUserlandPatch {}; bool bIsServer {}; bool bIsEnterprise {}; Aurora::Build::EPlatform ePlatform = Aurora::Build::EPlatform::eEnumInvalid; private: static inline AuString _kIgnore {}; public: inline OSInformation() : kKernelString(&_kIgnore), kUserlandDesktopEnv(&_kIgnore), kUserlandBrand(&_kIgnore), kBuildString(&_kIgnore), ePlatform(Build::EPlatform::eEnumInvalid) { } AU_DEFINE_CTOR_VA(OSInformation, ( kKernelString, kUserlandBrand, kUserlandDesktopEnv, kBuildString, ePlatform )) AU_COPY_MOVE(OSInformation); }; }