From 72e3605a01394fe2f67ea159f757a4d5a1c3ab90 Mon Sep 17 00:00:00 2001 From: Daniel Teske <daniel.teske@digia.com> Date: Tue, 15 Jan 2013 13:58:06 +0100 Subject: [PATCH] Add architecture information to Utils::HostOsInfo Change-Id: I2e8ec214ba4ea4567e1eeb5d2f3bd1a59000bc48 Reviewed-by: Oswald Buddenhagen <oswald.buddenhagen@digia.com> Reviewed-by: Daniel Teske <daniel.teske@digia.com> --- src/libs/utils/hostosinfo.cpp | 54 +++++++++++++++++++++++++++++++++++ src/libs/utils/hostosinfo.h | 7 ++++- src/libs/utils/utils-lib.pri | 1 + 3 files changed, 61 insertions(+), 1 deletion(-) create mode 100644 src/libs/utils/hostosinfo.cpp diff --git a/src/libs/utils/hostosinfo.cpp b/src/libs/utils/hostosinfo.cpp new file mode 100644 index 0000000000..012976afd1 --- /dev/null +++ b/src/libs/utils/hostosinfo.cpp @@ -0,0 +1,54 @@ +/************************************************************************** +** +** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies). +** Contact: http://www.qt-project.org/legal +** +** This file is part of Qt Creator. +** +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and Digia. For licensing terms and +** conditions see http://qt.digia.com/licensing. For further information +** use the contact form at http://qt.digia.com/contact-us. +** +** GNU Lesser General Public License Usage +** Alternatively, this file may be used under the terms of the GNU Lesser +** General Public License version 2.1 as published by the Free Software +** Foundation and appearing in the file LICENSE.LGPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU Lesser General Public License version 2.1 requirements +** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html. +** +** In addition, as a special exception, Digia gives you certain additional +** rights. These rights are described in the Digia Qt LGPL Exception +** version 1.1, included in the file LGPL_EXCEPTION.txt in this package. +** +****************************************************************************/ + +#include "hostosinfo.h" + +#ifdef Q_OS_WIN +#include <windows.h> + +using namespace Utils; + +HostOsInfo::HostArchitecture HostOsInfo::hostArchitecture() +{ + SYSTEM_INFO info; + GetNativeSystemInfo(&info); + switch (info.wProcessorArchitecture) { + case PROCESSOR_ARCHITECTURE_AMD64: + return HostOsInfo::HostArchitectureAMD64; + case PROCESSOR_ARCHITECTURE_INTEL: + return HostOsInfo::HostArchitectureX86; + case PROCESSOR_ARCHITECTURE_IA64: + return HostOsInfo::HostArchitectureItanium; + case PROCESSOR_ARCHITECTURE_ARM: + return HostOsInfo::HostArchitectureArm; + default: + return HostOsInfo::HostArchitectureOther; + } +} +#endif diff --git a/src/libs/utils/hostosinfo.h b/src/libs/utils/hostosinfo.h index e44be53617..027a57de34 100644 --- a/src/libs/utils/hostosinfo.h +++ b/src/libs/utils/hostosinfo.h @@ -47,9 +47,14 @@ class QTCREATOR_UTILS_EXPORT HostOsInfo public: // Add more as needed. enum HostOs { HostOsWindows, HostOsLinux, HostOsMac, HostOsOtherUnix, HostOsOther }; - static inline HostOs hostOs(); +#ifdef Q_OS_WIN + enum HostArchitecture { HostArchitectureX86, HostArchitectureAMD64, HostArchitectureItanium, + HostArchitectureArm, HostArchitectureOther }; + static HostArchitecture hostArchitecture(); +#endif + static bool isWindowsHost() { return hostOs() == HostOsWindows; } static bool isLinuxHost() { return hostOs() == HostOsLinux; } static bool isMacHost() { return hostOs() == HostOsMac; } diff --git a/src/libs/utils/utils-lib.pri b/src/libs/utils/utils-lib.pri index 53f8ae8a39..141e44d2c5 100644 --- a/src/libs/utils/utils-lib.pri +++ b/src/libs/utils/utils-lib.pri @@ -80,6 +80,7 @@ SOURCES += $$PWD/environment.cpp \ $$PWD/bracematcher.cpp \ $$PWD/proxyaction.cpp \ $$PWD/elidinglabel.cpp \ + $$PWD/hostosinfo.cpp \ $$PWD/tooltip/tooltip.cpp \ $$PWD/tooltip/tips.cpp \ $$PWD/tooltip/tipcontents.cpp \ -- GitLab