OSDN Git Service

Update license.
[qt-creator-jp/qt-creator-jp.git] / src / plugins / projectexplorer / abi.h
1 /**************************************************************************
2 **
3 ** This file is part of Qt Creator
4 **
5 ** Copyright (c) 2011 Nokia Corporation and/or its subsidiary(-ies).
6 **
7 ** Contact: Nokia Corporation (info@qt.nokia.com)
8 **
9 **
10 ** GNU Lesser General Public License Usage
11 **
12 ** This file may be used under the terms of the GNU Lesser General Public
13 ** License version 2.1 as published by the Free Software Foundation and
14 ** appearing in the file LICENSE.LGPL included in the packaging of this file.
15 ** Please review the following information to ensure the GNU Lesser General
16 ** Public License version 2.1 requirements will be met:
17 ** http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
18 **
19 ** In addition, as a special exception, Nokia gives you certain additional
20 ** rights. These rights are described in the Nokia Qt LGPL Exception
21 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
22 **
23 ** Other Usage
24 **
25 ** Alternatively, this file may be used in accordance with the terms and
26 ** conditions contained in a signed written agreement between you and Nokia.
27 **
28 ** If you have questions regarding the use of this file, please contact
29 ** Nokia at qt-info@nokia.com.
30 **
31 **************************************************************************/
32
33 #ifndef PROJECTEXPLORER_ABI_H
34 #define PROJECTEXPLORER_ABI_H
35
36 #include "projectexplorer_export.h"
37
38 #include <QtCore/QList>
39
40 namespace ProjectExplorer {
41
42 // --------------------------------------------------------------------------
43 // ABI
44 // --------------------------------------------------------------------------
45
46 class PROJECTEXPLORER_EXPORT Abi
47 {
48 public:
49     enum Architecture {
50         UnknownArchitecture,
51         ArmArchitecture,
52         X86Architecture,
53         ItaniumArchitecture,
54         MipsArcitecture,
55         PowerPCArchitecture
56     };
57
58     enum OS {
59         UnknownOS,
60         LinuxOS,
61         MacOS,
62         SymbianOS,
63         UnixOS,
64         WindowsOS
65     };
66
67     enum OSFlavor {
68         UnknownFlavor,
69
70         // Linux
71         GenericLinuxFlavor,
72         HarmattanLinuxFlavor,
73         MaemoLinuxFlavor,
74         MeegoLinuxFlavor,
75
76         // Mac
77         GenericMacFlavor,
78
79         // Symbian
80         SymbianDeviceFlavor,
81         SymbianEmulatorFlavor,
82
83         // Unix
84         GenericUnixFlavor,
85
86         // Windows
87         WindowsMsvc2005Flavor,
88         WindowsMsvc2008Flavor,
89         WindowsMsvc2010Flavor,
90         WindowsMSysFlavor,
91         WindowsCEFlavor
92     };
93
94     enum BinaryFormat {
95         UnknownFormat,
96         ElfFormat,
97         MachOFormat,
98         PEFormat,
99         RuntimeQmlFormat
100     };
101
102     Abi() :
103         m_architecture(UnknownArchitecture), m_os(UnknownOS),
104         m_osFlavor(UnknownFlavor), m_binaryFormat(UnknownFormat), m_wordWidth(0)
105     { }
106
107     Abi(const Architecture &a, const OS &o,
108         const OSFlavor &so, const BinaryFormat &f, unsigned char w);
109     Abi(const QString &abiString);
110
111     bool operator != (const Abi &other) const;
112     bool operator == (const Abi &other) const;
113     bool isCompatibleWith(const Abi &other) const;
114
115     bool isValid() const;
116
117     Architecture architecture() const { return m_architecture; }
118     OS os() const { return m_os; }
119     OSFlavor osFlavor() const { return m_osFlavor; }
120     BinaryFormat binaryFormat() const { return m_binaryFormat; }
121     unsigned char wordWidth() const { return m_wordWidth; }
122
123     QString toString() const;
124
125     static QString toString(const Architecture &a);
126     static QString toString(const OS &o);
127     static QString toString(const OSFlavor &of);
128     static QString toString(const BinaryFormat &bf);
129     static QString toString(int w);
130
131     static Abi hostAbi();
132     static QList<Abi> abisOfBinary(const QString &path);
133
134 private:
135     Architecture m_architecture;
136     OS m_os;
137     OSFlavor m_osFlavor;
138     BinaryFormat m_binaryFormat;
139     unsigned char m_wordWidth;
140 };
141
142 } // namespace ProjectExplorer
143
144 #endif // PROJECTEXPLORER_ABI_H