StormByte-System
2.0.0
C++26 process and environment module of the StormByte suite
Loading...
Searching...
No Matches
host.hxx
Go to the documentation of this file.
1
/*
2
* Copyright (C) 2024-2026 David C. Manuelda (StormBytePP)
3
*
4
* This file is part of StormByte-System.
5
*
6
* StormByte-System original source is dual-licensed:
7
*
8
* 1. GNU Lesser General Public License v3.0 (or later)
9
* You may redistribute and/or modify this file under the terms of the
10
* GNU Lesser General Public License as published by the Free Software
11
* Foundation, either version 3 of the License, or (at your option)
12
* any later version.
13
*
14
* 2. Commercial license
15
* Alternatively, this file may be used under the terms of a commercial
16
* license agreement with the copyright holder
17
* (David C. Manuelda <StormByte@gmail.com>).
18
*
19
* Both licenses apply only to original StormByte-System source in this
20
* repository. They do not cover other StormByte modules or any third-party
21
* material shipped with this repository (including everything under
22
* thirdparty/, and in particular the bundled StormByte Base tree), which
23
* remains under its own license.
24
*
25
* Neither license grants any patent rights. Any patent licenses required
26
* to use this software or third-party components must be obtained separately
27
* from the patent holders.
28
*
29
* StormByte-System is distributed in the hope that it will be useful,
30
* but WITHOUT ANY WARRANTY; without even the implied warranty of
31
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
32
* GNU Lesser General Public License for more details.
33
*
34
* You should have received a copy of the GNU Lesser General Public License
35
* version 3 along with StormByte-System. If not, see
36
* <https://www.gnu.org/licenses/lgpl-3.0.html>.
37
*
38
* SPDX-License-Identifier: LGPL-3.0-or-later OR LicenseRef-StormByte-Commercial
39
*/
40
41
#pragma once
42
43
#include <
StormByte/error.hxx
>
44
#include <
StormByte/size.hxx
>
45
#include <
StormByte/string/string.hxx
>
46
#include <
StormByte/system/visibility.h
>
47
48
#include <string>
49
#include <system_error>
50
54
namespace
StormByte::System
{
64
namespace
Host {
71
enum class
Error
{
72
Success
= 0,
73
Failed
74
};
75
80
STORMBYTE_SYSTEM_PUBLIC
StormByte::Error::Fault
LastError
() noexcept;
81
87
STORMBYTE_SYSTEM_PUBLIC
bool
Name
(
StormByte
::
String
::
String
& name);
88
93
STORMBYTE_SYSTEM_PUBLIC
StormByte
::
String
::
String
Architecture
();
94
99
STORMBYTE_SYSTEM_PUBLIC
StormByte
::
String
::
String
CPU
();
100
105
STORMBYTE_SYSTEM_PUBLIC
StormByte
::
String
::
String
OS
();
106
111
STORMBYTE_SYSTEM_PUBLIC
StormByte
::
String
::
String
Kernel
();
112
117
STORMBYTE_SYSTEM_PUBLIC
StormByte
::
Size
PageSize
();
118
123
STORMBYTE_SYSTEM_PUBLIC
StormByte
::
Size
PhysicalMemory
();
124
129
STORMBYTE_SYSTEM_PUBLIC
StormByte
::
Size
AvailableMemory
();
130
135
STORMBYTE_SYSTEM_PUBLIC
unsigned
LogicalProcessors
() noexcept;
136
141
STORMBYTE_SYSTEM_PUBLIC
unsigned
Bitness
() noexcept;
142
}
143
}
144
148
template<>
149
struct
StormByte
::
Error
::
Domain
<
StormByte
::System::Host::
Error
> {
150
static
constexpr
const
char
*
Name
=
"StormByte.System.Host"
;
151
157
static
std::string
Message
(
StormByte::System::Host::Error
e) {
158
switch
(e) {
159
case
StormByte::System::Host::Error::Success
:
160
return
"Success"
;
161
case
StormByte::System::Host::Error::Failed
:
162
return
"Host operation failed"
;
163
}
164
return
"Unknown Host error"
;
165
}
166
};
167
168
namespace
StormByte::System
{
173
STORMBYTE_SYSTEM_PUBLIC
const
StormByte::Error::Category<Host::Error>
&
host_category
() noexcept;
174
180
STORMBYTE_SYSTEM_PUBLIC
std
::error_code make_error_code(Host::Error e) noexcept;
181
}
182
183
namespace
std
{
187
template
<>
188
struct
is_error_code_enum<
StormByte
::System::Host::Error>: true_type {};
189
}
StormByte::Error::Category
StormByte::Error::Fault
StormByte::Size
error.hxx
StormByte::System::Host::PhysicalMemory
StormByte::Size PhysicalMemory()
Installed physical memory.
StormByte::System::Host::Error
Error
Host enumerators.
Definition
host.hxx:71
StormByte::System::Host::Error::Success
@ Success
No error.
StormByte::System::Host::Error::Failed
@ Failed
The platform call failed.
StormByte::System::Host::OS
StormByte::String::String OS()
Operating system brand and version.
StormByte::System::Host::Kernel
StormByte::String::String Kernel()
Kernel identification.
StormByte::System::Host::Architecture
StormByte::String::String Architecture()
Instruction-set name of this machine.
StormByte::System::Host::Bitness
unsigned Bitness() noexcept
Pointer width of this process.
StormByte::System::Host::LastError
StormByte::Error::Fault LastError() noexcept
Last Host error on this thread.
StormByte::System::Host::PageSize
StormByte::Size PageSize()
System page size.
StormByte::System::Host::CPU
StormByte::String::String CPU()
Processor brand string.
StormByte::System::Host::LogicalProcessors
unsigned LogicalProcessors() noexcept
Logical processor count.
StormByte::System::Host::AvailableMemory
StormByte::Size AvailableMemory()
Currently available physical memory.
StormByte::System::Host::Name
bool Name(StormByte::String::String &name)
Host name of this machine.
StormByte::System
System module of the StormByte suite.
Definition
device.hxx:58
StormByte::System::host_category
const StormByte::Error::Category< Host::Error > & host_category() noexcept
Category singleton for Host::Error.
StormByte
String
std
STL namespace.
size.hxx
string.hxx
StormByte::Error::Domain< StormByte::System::Host::Error >::Message
static std::string Message(StormByte::System::Host::Error e)
Text for one Host enumerator.
Definition
host.hxx:157
StormByte::Error::Domain
visibility.h
STORMBYTE_SYSTEM_PUBLIC
#define STORMBYTE_SYSTEM_PUBLIC
Definition
visibility.h:53
lib
public
StormByte
system
host.hxx
Generated by
1.9.8