xtd - Reference Guide  0.1.2
Modern c++17/20 framework to create console, GUI and unit test applications on Windows, macOS, Linux, iOS and android.
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
processor.h
Go to the documentation of this file.
1
4#pragma once
5#include <map>
6#include <vector>
7#include "architecture_id.h"
8#include "object.h"
9#include "ustring.h"
10
12namespace xtd {
19 class processor final : public object {
20 public:
21 processor(xtd::architecture_id architecture, bool is_64_bit, uint32_t core_count) : architecture_(architecture), is_64_bit_(is_64_bit), core_count_(core_count) {}
22
24 processor() = default;
25 processor(const processor&) = default;
26 processor& operator=(const processor&) = default;
27 friend std::ostream& operator <<(std::ostream& os, const processor& processor) noexcept {return os << processor.to_string();}
29
32 xtd::architecture_id architecture() const noexcept {return architecture_;}
33
36 uint32_t core_count() const noexcept {return core_count_;}
37
40 bool is_64_bit() const noexcept {return is_64_bit_;}
41
44 xtd::ustring name() const noexcept {
45 static std::map<xtd::architecture_id, xtd::ustring> processor_names {{architecture_id::x86, "Intel or AMD"}, {architecture_id::arm, "ARM"}, {architecture_id::unknown, "<Unknown>"}};
46 return processor_names[architecture_];
47 }
48
49 xtd::ustring architecture_string() const noexcept {
50 if (!architecture_string_.empty()) return architecture_string_;
51 architecture_string_ = ustring::format("{}", architecture_);
52 if (is_64_bit_) {
53 if (architecture_ == architecture_id::x86) architecture_string_ += "_";
54 architecture_string_ += "64";
55 }
56 return architecture_string_;
57 }
58
61 xtd::ustring to_string() const noexcept {return architecture_string();}
62
63 private:
65 bool is_64_bit_ = false;
66 uint32_t core_count_ = 1;
67 mutable xtd::ustring architecture_string_;
68 };
69}
Contains xtd::architecture_id enum class.
Supports all classes in the xtd class hierarchy and provides low-level services to derived classes....
Definition object.h:26
Represents information about a processor, such as the architecture. This class cannot be inherited.
Definition processor.h:19
uint32_t core_count() const noexcept
Gets the number of processors on the current machine.
Definition processor.h:36
xtd::architecture_id architecture() const noexcept
Gets a xtd::platform_id enumeration value that identifies the operating system platform.
Definition processor.h:32
xtd::ustring name() const noexcept
Gets the concatenated string representation of the platform identifier.
Definition processor.h:44
xtd::ustring to_string() const noexcept
Converts the value of this processor object to its equivalent string representation.
Definition processor.h:61
bool is_64_bit() const noexcept
Determines whether the current operating system is a 64-bit operating system.
Definition processor.h:40
Represents text as a sequence of UTF-8 code units.
Definition ustring.h:48
static ustring format(const ustring &fmt, args_t &&... args)
Writes the text representation of the specified arguments list, to string using the specified format ...
Definition ustring.h:689
architecture_id
Identifies the processor architecture, supported by an assembly.
Definition architecture_id.h:16
@ x86
The processor architecture is x86 (Intel or amd).
@ unknown
The processor architecture is unknown.
@ arm
The processor architecture is ARM.
The xtd namespace contains all fundamental classes to access Hardware, Os, System,...
Definition system_report.h:17
Contains xtd::object class.
Contains xtd::ustring class.