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/Containers/Sequence.h"
32 using Characters::String;
36 struct SystemConfiguration {
40 struct BootInformation {
41 optional<Time::DateTime> fBootedAt;
56 nonvirtual
unsigned int GetNumberOfSockets ()
const;
65 nonvirtual
unsigned int GetNumberOfLogicalCores ()
const;
74 nonvirtual String GetCPUModelPrintName ()
const;
116 nonvirtual String ToString ()
const;
130 uint64_t fTotalPhysicalRAM{};
135 uint64_t fTotalVirtualRAM{};
140 nonvirtual String
ToString ()
const;
145 struct OperatingSystem {
154 String fShortPrettyName;
159 String fPrettyNameWithMajorVersion;
166 String fPrettyNameWithVersionDetails;
172 String fMajorMinorVersionString;
180 String fRFC1945CompatProductTokenWithVersion;
187 unsigned int fBits{32};
193 enum class InstallerTechnology {
206 optional<InstallerTechnology> fPreferredInstallerTechnology;
211 nonvirtual String
ToString ()
const;
233 BootInformation fBootInformation;
245 OperatingSystem fActualOperatingSystem;
253 OperatingSystem fApparentOperatingSystem;
258 SystemConfiguration (
const BootInformation& bi,
const CPU& ci,
const Memory& mi,
const OperatingSystem& oi,
const ComputerNames& cn);
259 SystemConfiguration (
const BootInformation& bi,
const CPU& ci,
const Memory& mi,
const OperatingSystem& actualOS,
265 nonvirtual
String ToString ()
const;
277 SystemConfiguration::BootInformation GetSystemConfiguration_BootInformation ();
281 SystemConfiguration::CPU GetSystemConfiguration_CPU ();
285 SystemConfiguration::Memory GetSystemConfiguration_Memory ();
327#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...
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