metaforce/metaforce-gui/Common.hpp

54 lines
1.6 KiB
C++
Raw Normal View History

2018-10-06 20:41:18 -07:00
#pragma once
#include <QString>
#include <QMetaType>
#include "zeus/Math.hpp"
2018-12-07 21:19:40 -08:00
enum class Platform { Invalid, MacOS, Win32, Linux, MAXPlatform };
QString PlatformToString(Platform plat);
Platform StringToPlatform(const QString& str);
#if __APPLE__
constexpr Platform CurPlatform = Platform::MacOS;
#elif _WIN32
constexpr Platform CurPlatform = Platform::Win32;
#elif __linux__
constexpr Platform CurPlatform = Platform::Linux;
#endif
extern const QString CurPlatformString;
2021-03-29 10:23:02 -07:00
enum class Architecture { Invalid, X86, X86_64, ARM, ARM64, MAXArchitecture };
QString ArchitectureToString(Architecture arch);
Architecture StringToArchitecture(const QString& str);
extern Architecture CurArchitecture;
extern QString CurArchitectureString;
2021-03-29 10:23:02 -07:00
enum class VectorISA { Invalid, X87, SSE, SSE2, SSE3, SSE41, AVX, AVX2, AVX512, MAXVectorISA };
QString VectorISAToString(VectorISA visa);
VectorISA StringToVectorISA(const QString& str);
2018-12-07 21:19:40 -08:00
class URDEVersion {
QString m_version{};
2018-12-07 21:19:40 -08:00
Platform m_platform = CurPlatform;
Architecture m_architecture = CurArchitecture;
VectorISA m_vectorISA = VectorISA::Invalid;
QString m_extension{};
QString m_extra{};
2018-12-07 21:19:40 -08:00
public:
2018-12-07 21:19:40 -08:00
URDEVersion() = default;
explicit URDEVersion(const QString& filename);
bool isValid() const { return !m_version.isEmpty(); }
2018-12-07 21:19:40 -08:00
QString fileString(bool withExtension) const;
QString getVersion() const { return m_version; }
2018-12-07 21:19:40 -08:00
Platform getPlatform() const { return m_platform; }
Architecture getArchitecture() const { return m_architecture; }
VectorISA getVectorISA() const { return m_vectorISA; }
QString getExtra() const { return m_extra; }
};
Q_DECLARE_METATYPE(URDEVersion);
void InitializePlatform();