OpenShot Audio Library | OpenShotAudio  0.6.0
juce_SystemStats.h
1 /*
2  ==============================================================================
3 
4  This file is part of the JUCE library.
5  Copyright (c) 2022 - Raw Material Software Limited
6 
7  JUCE is an open source library subject to commercial or open-source
8  licensing.
9 
10  The code included in this file is provided under the terms of the ISC license
11  http://www.isc.org/downloads/software-support-policy/isc-license. Permission
12  To use, copy, modify, and/or distribute this software for any purpose with or
13  without fee is hereby granted provided that the above copyright notice and
14  this permission notice appear in all copies.
15 
16  JUCE IS PROVIDED "AS IS" WITHOUT ANY WARRANTY, AND ALL WARRANTIES, WHETHER
17  EXPRESSED OR IMPLIED, INCLUDING MERCHANTABILITY AND FITNESS FOR PURPOSE, ARE
18  DISCLAIMED.
19 
20  ==============================================================================
21 */
22 
23 namespace juce
24 {
25 
26 //==============================================================================
32 class JUCE_API SystemStats final
33 {
34 public:
35  //==============================================================================
39  static String getJUCEVersion();
40 
41  //==============================================================================
44  {
45  UnknownOS = 0,
46 
47  MacOSX = 0x0100,
49  Windows = 0x0200,
51  Linux = 0x0400,
52  Android = 0x0800,
53  iOS = 0x1000,
54  WASM = 0x2000,
55 
56  MacOSX_10_7 = MacOSX | 7,
57  MacOSX_10_8 = MacOSX | 8,
58  MacOSX_10_9 = MacOSX | 9,
59  MacOSX_10_10 = MacOSX | 10,
60  MacOSX_10_11 = MacOSX | 11,
61  MacOSX_10_12 = MacOSX | 12,
62  MacOSX_10_13 = MacOSX | 13,
63  MacOSX_10_14 = MacOSX | 14,
64  MacOSX_10_15 = MacOSX | 15,
65  MacOS_11 = MacOSX | 16,
66  MacOS_12 = MacOSX | 17,
67  MacOS_13 = MacOSX | 18,
68  MacOS_14 = MacOSX | 19,
69 
70  Win2000 = Windows | 1,
71  WinXP = Windows | 2,
72  WinVista = Windows | 3,
73  Windows7 = Windows | 4,
74  Windows8_0 = Windows | 5,
75  Windows8_1 = Windows | 6,
76  Windows10 = Windows | 7,
77  Windows11 = Windows | 8
78  };
79 
86 
93 
95  static bool isOperatingSystem64Bit();
96 
100  static String getEnvironmentVariable (const String& name, const String& defaultValue);
101 
102  //==============================================================================
107 
113 
116 
121 
126 
133 
139 
144 
150  [[deprecated ("The identifiers produced by this function are not reliable. Use getUniqueDeviceID() instead.")]]
151  static StringArray getDeviceIdentifiers();
152 
166 
168  enum class MachineIdFlags
169  {
170  macAddresses = 1 << 0,
171  fileSystemId = 1 << 1,
172  legacyUniqueId = 1 << 2,
173  uniqueId = 1 << 3,
174  };
175 
190  static StringArray getMachineIdentifiers (MachineIdFlags flags);
191 
192  //==============================================================================
193  // CPU and memory information..
194 
196  static int getNumCpus() noexcept;
197 
199  static int getNumPhysicalCpus() noexcept;
200 
205  static int getCpuSpeedInMegahertz();
206 
210  static String getCpuVendor();
211 
215  static String getCpuModel();
216 
217  static bool hasMMX() noexcept;
218  static bool has3DNow() noexcept;
219  static bool hasFMA3() noexcept;
220  static bool hasFMA4() noexcept;
221  static bool hasSSE() noexcept;
222  static bool hasSSE2() noexcept;
223  static bool hasSSE3() noexcept;
224  static bool hasSSSE3() noexcept;
225  static bool hasSSE41() noexcept;
226  static bool hasSSE42() noexcept;
227  static bool hasAVX() noexcept;
228  static bool hasAVX2() noexcept;
229  static bool hasAVX512F() noexcept;
230  static bool hasAVX512BW() noexcept;
231  static bool hasAVX512CD() noexcept;
232  static bool hasAVX512DQ() noexcept;
233  static bool hasAVX512ER() noexcept;
234  static bool hasAVX512IFMA() noexcept;
235  static bool hasAVX512PF() noexcept;
236  static bool hasAVX512VBMI() noexcept;
237  static bool hasAVX512VL() noexcept;
238  static bool hasAVX512VPOPCNTDQ() noexcept;
239  static bool hasNeon() noexcept;
241  //==============================================================================
246  static int getMemorySizeInMegabytes();
247 
251  static int getPageSize();
252 
253  //==============================================================================
258  static String getStackBacktrace();
259 
263  using CrashHandlerFunction = void (*) (void*);
264 
271  static void setApplicationCrashHandler (CrashHandlerFunction);
272 
276  static bool isRunningInAppExtensionSandbox() noexcept;
277 
278  #if JUCE_MAC
279  static bool isAppSandboxEnabled();
280  #endif
281 
282  //==============================================================================
283  #ifndef DOXYGEN
284  [[deprecated ("This method was spelt wrong! Please change your code to use getCpuSpeedInMegahertz instead.")]]
285  static int getCpuSpeedInMegaherz() { return getCpuSpeedInMegahertz(); }
286  #endif
287 
288 private:
289  SystemStats() = delete; // uses only static methods
290  JUCE_DECLARE_NON_COPYABLE (SystemStats)
291 };
292 
293 JUCE_DECLARE_SCOPED_ENUM_BITWISE_OPERATORS (SystemStats::MachineIdFlags)
294 
295 } // namespace juce
static String getOperatingSystemName()
static String getUserRegion()
static String getFullUserName()
static String getLogonName()
static OperatingSystemType getOperatingSystemType()
static String getDeviceManufacturer()
static bool isOperatingSystem64Bit()
static String getDisplayLanguage()
void(*)(void *) CrashHandlerFunction
static String getUniqueDeviceID()
static String getEnvironmentVariable(const String &name, const String &defaultValue)
static String getComputerName()
static String getDeviceDescription()
static String getUserLanguage()