1 /////////////////////////////////////////////////////////////////////////////// 2 // Name: wx/platinfo.h 3 // Purpose: declaration of the wxPlatformInfo class 4 // Author: Francesco Montorsi 5 // Modified by: 6 // Created: 07.07.2006 (based on wxToolkitInfo) 7 // RCS-ID: $Id: platinfo.h 41807 2006-10-09 15:58:56Z VZ $ 8 // Copyright: (c) 2006 Francesco Montorsi 9 // License: wxWindows license 10 /////////////////////////////////////////////////////////////////////////////// 11 12 #ifndef _WX_PLATINFO_H_ 13 #define _WX_PLATINFO_H_ 14 15 #include "wx/string.h" 16 17 // ---------------------------------------------------------------------------- 18 // wxPlatformInfo 19 // ---------------------------------------------------------------------------- 20 21 // VERY IMPORTANT: when changing these enum values, also change the relative 22 // string tables in src/common/platinfo.cpp 23 24 25 // families & sub-families of operating systems 26 enum wxOperatingSystemId 27 { 28 wxOS_UNKNOWN = 0, // returned on error 29 30 wxOS_MAC_OS = 1 << 0, // Apple Mac OS 8/9/X with Mac paths 31 wxOS_MAC_OSX_DARWIN = 1 << 1, // Apple Mac OS X with Unix paths 32 wxOS_MAC = wxOS_MAC_OS|wxOS_MAC_OSX_DARWIN, 33 34 wxOS_WINDOWS_9X = 1 << 2, // Windows 9x family (95/98/ME) 35 wxOS_WINDOWS_NT = 1 << 3, // Windows NT family (NT/2000/XP) 36 wxOS_WINDOWS_MICRO = 1 << 4, // MicroWindows 37 wxOS_WINDOWS_CE = 1 << 5, // Windows CE (Window Mobile) 38 wxOS_WINDOWS = wxOS_WINDOWS_9X | 39 wxOS_WINDOWS_NT | 40 wxOS_WINDOWS_MICRO | 41 wxOS_WINDOWS_CE, 42 43 wxOS_UNIX_LINUX = 1 << 6, // Linux 44 wxOS_UNIX_FREEBSD = 1 << 7, // FreeBSD 45 wxOS_UNIX_OPENBSD = 1 << 8, // OpenBSD 46 wxOS_UNIX_NETBSD = 1 << 9, // NetBSD 47 wxOS_UNIX_SOLARIS = 1 << 10, // SunOS 48 wxOS_UNIX_AIX = 1 << 11, // AIX 49 wxOS_UNIX_HPUX = 1 << 12, // HP/UX 50 wxOS_UNIX = wxOS_UNIX_LINUX | 51 wxOS_UNIX_FREEBSD | 52 wxOS_UNIX_OPENBSD | 53 wxOS_UNIX_NETBSD | 54 wxOS_UNIX_SOLARIS | 55 wxOS_UNIX_AIX | 56 wxOS_UNIX_HPUX, 57 58 // 1<<13 and 1<<14 available for other Unix flavours 59 60 wxOS_DOS = 1 << 15, // Microsoft DOS 61 wxOS_OS2 = 1 << 16 // OS/2 62 }; 63 64 // list of wxWidgets ports - some of them can be used with more than 65 // a single toolkit. 66 enum wxPortId 67 { 68 wxPORT_UNKNOWN = 0, // returned on error 69 70 wxPORT_BASE = 1 << 0, // wxBase, no native toolkit used 71 72 wxPORT_MSW = 1 << 1, // wxMSW, native toolkit is Windows API 73 wxPORT_MOTIF = 1 << 2, // wxMotif, using [Open]Motif or Lesstif 74 wxPORT_GTK = 1 << 3, // wxGTK, using GTK+ 1.x, 2.x, GPE or Maemo 75 wxPORT_MGL = 1 << 4, // wxMGL, using wxUniversal 76 wxPORT_X11 = 1 << 5, // wxX11, using wxUniversal 77 wxPORT_PM = 1 << 6, // wxOS2, using OS/2 Presentation Manager 78 wxPORT_OS2 = wxPORT_PM, // wxOS2, using OS/2 Presentation Manager 79 wxPORT_MAC = 1 << 7, // wxMac, using Carbon or Classic Mac API 80 wxPORT_COCOA = 1 << 8, // wxCocoa, using Cocoa NextStep/Mac API 81 wxPORT_WINCE = 1 << 9, // wxWinCE, toolkit is WinCE SDK API 82 wxPORT_PALMOS = 1 << 10, // wxPalmOS, toolkit is PalmOS API 83 wxPORT_DFB = 1 << 11 // wxDFB, using wxUniversal 84 }; 85 86 // architecture of the operating system 87 // (regardless of the build environment of wxWidgets library - see 88 // wxIsPlatform64bit documentation for more info) 89 enum wxArchitecture 90 { 91 wxARCH_INVALID = -1, // returned on error 92 93 wxARCH_32, // 32 bit 94 wxARCH_64, 95 96 wxARCH_MAX 97 }; 98 99 100 // endian-ness of the machine 101 enum wxEndianness 102 { 103 wxENDIAN_INVALID = -1, // returned on error 104 105 wxENDIAN_BIG, // 4321 106 wxENDIAN_LITTLE, // 1234 107 wxENDIAN_PDP, // 3412 108 109 wxENDIAN_MAX 110 }; 111 112 // Information about the toolkit that the app is running under and some basic 113 // platform and architecture info 114 class WXDLLIMPEXP_BASE wxPlatformInfo 115 { 116 public: 117 wxPlatformInfo(); 118 wxPlatformInfo(wxPortId pid, 119 int tkMajor = -1, int tkMinor = -1, 120 wxOperatingSystemId id = wxOS_UNKNOWN, 121 int osMajor = -1, int osMinor = -1, 122 wxArchitecture arch = wxARCH_INVALID, 123 wxEndianness endian = wxENDIAN_INVALID, 124 bool usingUniversal = false); 125 126 // default copy ctor, assignment operator and dtor are ok 127 128 bool operator==(const wxPlatformInfo &t) const; 129 130 bool operator!=(const wxPlatformInfo &t) const 131 { return !(*this == t); } 132 133 // Gets a wxPlatformInfo already initialized with the values for 134 // the currently running platform. 135 static const wxPlatformInfo& Get(); 136 137 138 139 // string -> enum conversions 140 // --------------------------------- 141 142 static wxOperatingSystemId GetOperatingSystemId(const wxString &name); 143 static wxPortId GetPortId(const wxString &portname); 144 145 static wxArchitecture GetArch(const wxString &arch); 146 static wxEndianness GetEndianness(const wxString &end); 147 148 // enum -> string conversions 149 // --------------------------------- 150 151 static wxString GetOperatingSystemFamilyName(wxOperatingSystemId os); 152 static wxString GetOperatingSystemIdName(wxOperatingSystemId os); 153 static wxString GetPortIdName(wxPortId port, bool usingUniversal); 154 static wxString GetPortIdShortName(wxPortId port, bool usingUniversal); 155 156 static wxString GetArchName(wxArchitecture arch); 157 static wxString GetEndiannessName(wxEndianness end); 158 159 // getters 160 // ----------------- 161 GetOSMajorVersion()162 int GetOSMajorVersion() const 163 { return m_osVersionMajor; } GetOSMinorVersion()164 int GetOSMinorVersion() const 165 { return m_osVersionMinor; } 166 167 // return true if the OS version >= major.minor CheckOSVersion(int major,int minor)168 bool CheckOSVersion(int major, int minor) const 169 { 170 return DoCheckVersion(GetOSMajorVersion(), 171 GetOSMinorVersion(), 172 major, 173 minor); 174 } 175 GetToolkitMajorVersion()176 int GetToolkitMajorVersion() const 177 { return m_tkVersionMajor; } GetToolkitMinorVersion()178 int GetToolkitMinorVersion() const 179 { return m_tkVersionMinor; } 180 CheckToolkitVersion(int major,int minor)181 bool CheckToolkitVersion(int major, int minor) const 182 { 183 return DoCheckVersion(GetToolkitMajorVersion(), 184 GetToolkitMinorVersion(), 185 major, 186 minor); 187 } 188 IsUsingUniversalWidgets()189 bool IsUsingUniversalWidgets() const 190 { return m_usingUniversal; } 191 GetOperatingSystemId()192 wxOperatingSystemId GetOperatingSystemId() const 193 { return m_os; } GetPortId()194 wxPortId GetPortId() const 195 { return m_port; } GetArchitecture()196 wxArchitecture GetArchitecture() const 197 { return m_arch; } GetEndianness()198 wxEndianness GetEndianness() const 199 { return m_endian; } 200 201 202 // string getters 203 // ----------------- 204 GetOperatingSystemFamilyName()205 wxString GetOperatingSystemFamilyName() const 206 { return GetOperatingSystemFamilyName(m_os); } GetOperatingSystemIdName()207 wxString GetOperatingSystemIdName() const 208 { return GetOperatingSystemIdName(m_os); } GetPortIdName()209 wxString GetPortIdName() const 210 { return GetPortIdName(m_port, m_usingUniversal); } GetPortIdShortName()211 wxString GetPortIdShortName() const 212 { return GetPortIdShortName(m_port, m_usingUniversal); } GetArchName()213 wxString GetArchName() const 214 { return GetArchName(m_arch); } GetEndiannessName()215 wxString GetEndiannessName() const 216 { return GetEndiannessName(m_endian); } 217 218 // setters 219 // ----------------- 220 SetOSVersion(int major,int minor)221 void SetOSVersion(int major, int minor) 222 { m_osVersionMajor=major; m_osVersionMinor=minor; } SetToolkitVersion(int major,int minor)223 void SetToolkitVersion(int major, int minor) 224 { m_tkVersionMajor=major; m_tkVersionMinor=minor; } 225 SetOperatingSystemId(wxOperatingSystemId n)226 void SetOperatingSystemId(wxOperatingSystemId n) 227 { m_os = n; } SetPortId(wxPortId n)228 void SetPortId(wxPortId n) 229 { m_port = n; } SetArchitecture(wxArchitecture n)230 void SetArchitecture(wxArchitecture n) 231 { m_arch = n; } SetEndianness(wxEndianness n)232 void SetEndianness(wxEndianness n) 233 { m_endian = n; } 234 235 // miscellaneous 236 // ----------------- 237 IsOk()238 bool IsOk() const 239 { 240 return m_osVersionMajor != -1 && m_osVersionMinor != -1 && 241 m_os != wxOS_UNKNOWN && 242 m_tkVersionMajor != -1 && m_tkVersionMinor != -1 && 243 m_port != wxPORT_UNKNOWN && 244 m_arch != wxARCH_INVALID && m_endian != wxENDIAN_INVALID; 245 } 246 247 248 protected: DoCheckVersion(int majorCur,int minorCur,int major,int minor)249 static bool DoCheckVersion(int majorCur, int minorCur, int major, int minor) 250 { 251 return majorCur > major || (majorCur == major && minorCur >= minor); 252 } 253 254 void InitForCurrentPlatform(); 255 256 257 // OS stuff 258 // ----------------- 259 260 // Version of the OS; valid if m_os != wxOS_UNKNOWN 261 // (-1 means not initialized yet). 262 int m_osVersionMajor, 263 m_osVersionMinor; 264 265 // Operating system ID. 266 wxOperatingSystemId m_os; 267 268 269 // toolkit 270 // ----------------- 271 272 // Version of the underlying toolkit 273 // (-1 means not initialized yet; zero means no toolkit). 274 int m_tkVersionMajor, m_tkVersionMinor; 275 276 // name of the wxWidgets port 277 wxPortId m_port; 278 279 // is using wxUniversal widgets? 280 bool m_usingUniversal; 281 282 283 // others 284 // ----------------- 285 286 // architecture of the OS 287 wxArchitecture m_arch; 288 289 // endianness of the machine 290 wxEndianness m_endian; 291 }; 292 293 294 #if WXWIN_COMPATIBILITY_2_6 295 #define wxUNKNOWN_PLATFORM wxOS_UNKNOWN 296 #define wxUnix wxOS_UNIX 297 #define wxWin95 wxOS_WINDOWS_9X 298 #define wxWIN95 wxOS_WINDOWS_9X 299 #define wxWINDOWS_NT wxOS_WINDOWS_NT 300 #define wxMSW wxOS_WINDOWS 301 #define wxWinCE wxOS_WINDOWS_CE 302 #define wxWIN32S wxOS_WINDOWS_9X 303 304 #define wxPalmOS wxPORT_PALMOS 305 #define wxOS2 wxPORT_OS2 306 #define wxMGL wxPORT_MGL 307 #define wxCocoa wxPORT_MAC 308 #define wxMac wxPORT_MAC 309 #define wxMotif wxPORT_MOTIF 310 #define wxGTK wxPORT_GTK 311 #endif // WXWIN_COMPATIBILITY_2_6 312 313 #endif // _WX_PLATINFO_H_ 314