1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-18 00:54:19 +00:00
JUCE/src/core/juce_SystemStats.h

195 lines
7.4 KiB
C++

/*
==============================================================================
This file is part of the JUCE library - "Jules' Utility Class Extensions"
Copyright 2004-9 by Raw Material Software Ltd.
------------------------------------------------------------------------------
JUCE can be redistributed and/or modified under the terms of the GNU General
Public License (Version 2), as published by the Free Software Foundation.
A copy of the license is included in the JUCE distribution, or can be found
online at www.gnu.org/licenses.
JUCE is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE. See the GNU General Public License for more details.
------------------------------------------------------------------------------
To release a closed-source product which uses JUCE, commercial licenses are
available: visit www.rawmaterialsoftware.com/juce for more information.
==============================================================================
*/
#ifndef __JUCE_SYSTEMSTATS_JUCEHEADER__
#define __JUCE_SYSTEMSTATS_JUCEHEADER__
#include "../text/juce_StringArray.h"
//==============================================================================
/**
Contains methods for finding out about the current hardware and OS configuration.
*/
class JUCE_API SystemStats
{
public:
//==============================================================================
/** Returns the current version of JUCE,
(just in case you didn't already know at compile-time.)
See also the JUCE_VERSION, JUCE_MAJOR_VERSION and JUCE_MINOR_VERSION macros.
*/
static const String getJUCEVersion() throw();
//==============================================================================
/** The set of possible results of the getOperatingSystemType() method.
*/
enum OperatingSystemType
{
UnknownOS = 0,
MacOSX = 0x1000,
Linux = 0x2000,
Win95 = 0x4001,
Win98 = 0x4002,
WinNT351 = 0x4103,
WinNT40 = 0x4104,
Win2000 = 0x4105,
WinXP = 0x4106,
WinVista = 0x4107,
Windows7 = 0x4108,
Windows = 0x4000, /**< To test whether any version of Windows is running,
you can use the expression ((getOperatingSystemType() & Windows) != 0). */
WindowsNT = 0x0100, /**< To test whether the platform is Windows NT or later (i.e. not Win95 or 98),
you can use the expression ((getOperatingSystemType() & WindowsNT) != 0). */
};
/** Returns the type of operating system we're running on.
@returns one of the values from the OperatingSystemType enum.
@see getOperatingSystemName
*/
static OperatingSystemType getOperatingSystemType() throw();
/** Returns the name of the type of operating system we're running on.
@returns a string describing the OS type.
@see getOperatingSystemType
*/
static const String getOperatingSystemName() throw();
/** Returns true if the OS is 64-bit, or false for a 32-bit OS.
*/
static bool isOperatingSystem64Bit() throw();
//==============================================================================
/** Returns the current user's name, if available.
@see getFullUserName()
*/
static const String getLogonName();
/** Returns the current user's full name, if available.
On some OSes, this may just return the same value as getLogonName().
@see getLogonName()
*/
static const String getFullUserName();
//==============================================================================
// CPU and memory information..
/** Returns the approximate CPU speed.
@returns the speed in megahertz, e.g. 1500, 2500, 32000 (depending on
what year you're reading this...)
*/
static int getCpuSpeedInMegaherz() throw();
/** Returns a string to indicate the CPU vendor.
Might not be known on some systems.
*/
static const String getCpuVendor() throw();
/** Checks whether Intel MMX instructions are available. */
static bool hasMMX() throw();
/** Checks whether Intel SSE instructions are available. */
static bool hasSSE() throw();
/** Checks whether Intel SSE2 instructions are available. */
static bool hasSSE2() throw();
/** Checks whether AMD 3DNOW instructions are available. */
static bool has3DNow() throw();
/** Returns the number of CPUs.
*/
static int getNumCpus() throw();
/** Returns a clock-cycle tick counter, if available.
If the machine can do it, this will return a tick-count
where each tick is one cpu clock cycle - used for profiling
code.
@returns the tick count, or zero if not available.
*/
static int64 getClockCycleCounter() throw();
//==============================================================================
/** Finds out how much RAM is in the machine.
@returns the approximate number of megabytes of memory, or zero if
something goes wrong when finding out.
*/
static int getMemorySizeInMegabytes() throw();
/** Returns the system page-size.
This is only used by programmers with beards.
*/
static int getPageSize() throw();
//==============================================================================
/** Returns a list of MAC addresses found on this machine.
@param addresses an array into which the MAC addresses should be copied
@param maxNum the number of elements in this array
@param littleEndian the endianness of the numbers to return. If this is true,
the least-significant byte of each number is the first byte
of the mac address. If false, the least significant byte is
the last number. Note that the default values of this parameter
are different on Mac/PC to avoid breaking old software that was
written before this parameter was added (when the two systems
defaulted to using different endiannesses). In newer
software you probably want to specify an explicit value
for this.
@returns the number of MAC addresses that were found
*/
static int getMACAddresses (int64* addresses, int maxNum,
#if JUCE_MAC
const bool littleEndian = true);
#else
const bool littleEndian = false);
#endif
/** Returns a list of MAC addresses found on this machine.
@returns an array of strings containing the MAC addresses that were found
*/
static const StringArray getMACAddressStrings();
//==============================================================================
// not-for-public-use platform-specific method gets called at startup to initialise things.
static void initialiseStats() throw();
};
#endif // __JUCE_SYSTEMSTATS_JUCEHEADER__