Enigma  3.2.0
A Simple, Reliable and Efficient Encryption Tool
SystemAndHardwareInfoTool.hpp
Go to the documentation of this file.
1 #pragma once
2 #include "Tool.hpp"
3 #include <Core/Core.hpp>
4 #include <imgui.h>
5 
6 #include <infoware/infoware.hpp>
7 
8 
9 /*
10 * System & Hardware Information Tool Collapsing Header View To be drawn in ToolsScene
11 */
14  public:
17 
18  private: /* Helper Functions */
19  const char *StringifyArchitectureEnum(const iware::cpu::architecture_t arch) const noexcept {
20 #define CASE_RET_STR(c) \
21  case iware::cpu::architecture_t::c: \
22  return #c
23  switch (arch) {
24  CASE_RET_STR(x64);
25  CASE_RET_STR(arm);
26  CASE_RET_STR(itanium);
27  CASE_RET_STR(x86);
28  default:
29  return "<unknown arch>";
30  }
31 #undef CASE_RET_STR
32  }
33 
34  const char *StringifyCacheTypeEnum(const iware::cpu::cache_type_t cache_type) const noexcept {
35 #define CASE_RET_STR(c) \
36  case iware::cpu::cache_type_t::c: \
37  return #c
38  switch (cache_type) {
39  CASE_RET_STR(unified);
40  CASE_RET_STR(instruction);
41  CASE_RET_STR(data);
42  CASE_RET_STR(trace);
43  default:
44  return "<unknown cache type>";
45  }
46 #undef CASE_RET_STR
47  }
48 
49  const char *StringifyInstructionSetEnum(const iware::cpu::instruction_set_t is) const noexcept {
50 #define CASE_RET_STR(c) \
51  case iware::cpu::instruction_set_t::c: \
52  return #c
53  switch (is) {
54  CASE_RET_STR(s3d_now);
55  CASE_RET_STR(s3d_now_extended);
56  CASE_RET_STR(mmx);
57  CASE_RET_STR(mmx_extended);
58  CASE_RET_STR(sse);
59  CASE_RET_STR(sse2);
60  CASE_RET_STR(sse3);
61  CASE_RET_STR(ssse3);
62  CASE_RET_STR(sse4a);
63  CASE_RET_STR(sse41);
64  CASE_RET_STR(sse42);
65  CASE_RET_STR(aes);
66  CASE_RET_STR(avx);
67  CASE_RET_STR(avx2);
68  CASE_RET_STR(avx_512);
69  CASE_RET_STR(avx_512_f);
70  CASE_RET_STR(avx_512_cd);
71  CASE_RET_STR(avx_512_pf);
72  CASE_RET_STR(avx_512_er);
73  CASE_RET_STR(avx_512_vl);
74  CASE_RET_STR(avx_512_bw);
75  CASE_RET_STR(avx_512_bq);
76  CASE_RET_STR(avx_512_dq);
77  CASE_RET_STR(avx_512_ifma);
78  CASE_RET_STR(avx_512_vbmi);
79  CASE_RET_STR(hle);
80  CASE_RET_STR(bmi1);
81  CASE_RET_STR(bmi2);
82  CASE_RET_STR(adx);
83  CASE_RET_STR(mpx);
84  CASE_RET_STR(sha);
85  CASE_RET_STR(prefetch_wt1);
86  CASE_RET_STR(fma3);
87  CASE_RET_STR(fma4);
88  CASE_RET_STR(xop);
89  CASE_RET_STR(rd_rand);
90  CASE_RET_STR(x64);
91  CASE_RET_STR(x87_fpu);
92  default:
93  return "<unknown instruction set>";
94  }
95 #undef CASE_RET_STR
96  }
97 
98  const char *StringifyKernelVariantEnum(const iware::system::kernel_t variant) const noexcept {
99  switch (variant) {
100  case iware::system::kernel_t::windows_nt:
101  return "Windows NT";
102  case iware::system::kernel_t::linux:
103  return "Linux";
104  case iware::system::kernel_t::darwin:
105  return "Darwin";
106  case iware::system::kernel_t::unknown:
107  default:
108  return "<unknown kernel variant>";
109  }
110  }
111 
112  const char *StringifyGPUVendorEnum(const iware::gpu::vendor_t vendor) const noexcept {
113  switch (vendor) {
114  case iware::gpu::vendor_t::intel:
115  return "Intel";
116  case iware::gpu::vendor_t::amd:
117  return "AMD";
118  case iware::gpu::vendor_t::nvidia:
119  return "Nvidia";
120  case iware::gpu::vendor_t::microsoft:
121  return "Microsoft";
122  case iware::gpu::vendor_t::qualcomm:
123  return "Qualcomm";
124  case iware::gpu::vendor_t::apple:
125  return "Apple";
126  case iware::gpu::vendor_t::unknown:
127  default:
128  return "<unknown gpu vendor>";
129  }
130  }
131 
132  public: /* Tool Life Cycle */
133  void OnCreate() override;
134  void OnDraw(Scene *parent) override;
135  void OnDestroy() override;
136 };
#define NS_ENIGMA_BEGIN
Enable/Disable Assertions.
Definition: Macros.hpp:13
#define NS_ENIGMA_END
Definition: Macros.hpp:14
#define CASE_RET_STR(c)
Definition: Scene.hpp:20
~SystemAndHardwareInfoTool()=default
void OnCreate() override
SystemAndHardwareInfoTool()=default
void OnDestroy() override
void OnDraw(Scene *parent) override
Definition: Tool.hpp:10