4#ifndef _Stroika_Foundation_Common_SystemConfiguration_h_
5#define _Stroika_Foundation_Common_SystemConfiguration_h_ 1
7#include "Stroika/Foundation/StroikaPreComp.h"
10#include "Stroika/Foundation/Common/Common.h"
11#include "Stroika/Foundation/Common/GUID.h"
12#include "Stroika/Foundation/Containers/Sequence.h"
33 using Characters::String;
48 struct BootInformation {
49 optional<Time::DateTime> fBootedAt;
54 nonvirtual
String ToString ()
const;
64 nonvirtual
unsigned int GetNumberOfSockets ()
const;
73 nonvirtual
unsigned int GetNumberOfLogicalCores ()
const;
82 nonvirtual
String GetCPUModelPrintName ()
const;
124 nonvirtual String ToString ()
const;
138 uint64_t fTotalPhysicalRAM{};
143 uint64_t fTotalVirtualRAM{};
148 nonvirtual String
ToString ()
const;
153 struct OperatingSystem {
162 String fShortPrettyName;
167 String fPrettyNameWithMajorVersion;
174 String fPrettyNameWithVersionDetails;
180 String fMajorMinorVersionString;
188 String fRFC1945CompatProductTokenWithVersion;
195 unsigned int fBits{32};
201 enum class InstallerTechnology {
214 optional<InstallerTechnology> fPreferredInstallerTechnology;
219 nonvirtual String
ToString ()
const;
241 BootInformation fBootInformation;
273 const optional<GUID>& machineID = nullopt);
274 SystemConfiguration (
const BootInformation& bi,
const CPU& ci,
const Memory& mi,
const OperatingSystem& actualOS,
275 const OperatingSystem& apparentOS,
const ComputerNames& cn,
const optional<GUID>& machineID = nullopt);
296 SystemConfiguration::BootInformation GetSystemConfiguration_BootInformation ();
300 SystemConfiguration::CPU GetSystemConfiguration_CPU ();
304 SystemConfiguration::Memory GetSystemConfiguration_Memory ();
384#include "SystemConfiguration.inl"
#define Stroika_Define_Enum_Bounds(FIRST_ITEM, LAST_ITEM)
String is like std::u32string, except it is much easier to use, often much more space efficient,...
A generalization of a vector: a container whose elements are keyed by the natural numbers.
STRING_TYPE ToString(FLOAT_TYPE f, const ToStringOptions &options={})
SystemConfiguration::OperatingSystem GetSystemConfiguration_ActualOperatingSystem()
SystemConfiguration GetSystemConfiguration()
Get the System Configuration object - note not a system global - because the configuration can change...
optional< GUID > GetSystemConfiguration_MachineID()
The operating system's own ID for this machine - exactly as the OS keeps it, the same every time (it ...
SystemConfiguration::OperatingSystem GetSystemConfiguration_ApparentOperatingSystem()
unsigned int GetNumberOfLogicalCPUCores(const chrono::duration< double > &allowedStaleness=1min)
return the number of currently available CPU cores on this (virtual) machine
nonvirtual String ToString() const
nonvirtual String ToString() const
What can be told of the machine this runs on - GetSystemConfiguration () gets it all,...
nonvirtual String ToString() const
OperatingSystem fApparentOperatingSystem
optional< GUID > fMachineID
OperatingSystem fActualOperatingSystem