%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% Name:        platinfo.tex
%% Purpose:     wxPlatformInfo
%% Author:      Francesco Montorsi
%% Modified by:
%% Created:     31-7-2006
%% RCS-ID:      $Id$
%% Copyright:   (c) wxWidgets Team
%% License:     wxWindows license
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\section{\class{wxPlatformInfo}}\label{wxplatforminfo}

This class holds informations about the operating system and the toolkit that the application
is running under and some basic architecture info of the machine where it's running.

\wxheading{Derived from}

\helpref{wxObject}{wxobject}

\wxheading{Include files}

<wx/platinfo.h>

\wxheading{Library}

\helpref{wxBase}{librarieslist}

\wxheading{See also}

\helpref{wxGetOSVersion}{wxgetosversion}, \helpref{wxIsPlatformLittleEndian}{wxisplatformlittleendian},
\helpref{wxIsPlatform64Bit}{wxisplatform64bit}, \helpref{wxAppTraits}{wxapptraits}

\wxheading{Data structures}

The following are the operating systems which are recognized by wxWidgets
and whose version can be detected at run-time. The values of the constants
are chosen so that they can be combined as flags; this allows to check
for operating system {\it families} like e.g. wxOS\_MAC and wxOS\_UNIX.

\begin{verbatim}
enum wxOperatingSystemId
{
    wxOS_UNKNOWN = 0,                 // returned on error

    wxOS_MAC_OS         = 1 << 0,     // Apple Mac OS 8/9/X with Mac paths
    wxOS_MAC_OSX_DARWIN = 1 << 1,     // Apple Mac OS X with Unix paths
    wxOS_MAC = wxOS_MAC_OS|wxOS_MAC_OSX_DARWIN,

    wxOS_WINDOWS_9X     = 1 << 2,     // Windows 9x family (95/98/ME)
    wxOS_WINDOWS_NT     = 1 << 3,     // Windows NT family (NT/2000/XP)
    wxOS_WINDOWS_MICRO  = 1 << 4,     // MicroWindows
    wxOS_WINDOWS_CE     = 1 << 5,     // Windows CE (Window Mobile)
    wxOS_WINDOWS = wxOS_WINDOWS_9X      |
                   wxOS_WINDOWS_NT      |
                   wxOS_WINDOWS_MICRO   |
                   wxOS_WINDOWS_CE,

    wxOS_UNIX_LINUX     = 1 << 6,       // Linux
    wxOS_UNIX_FREEBSD   = 1 << 7,       // FreeBSD
    wxOS_UNIX_OPENBSD   = 1 << 8,       // OpenBSD
    wxOS_UNIX_NETBSD    = 1 << 9,       // NetBSD
    wxOS_UNIX_SOLARIS   = 1 << 10,      // SunOS
    wxOS_UNIX_AIX       = 1 << 11,      // AIX
    wxOS_UNIX_HPUX      = 1 << 12,      // HP/UX
    wxOS_UNIX = wxOS_UNIX_LINUX     |
                wxOS_UNIX_FREEBSD   |
                wxOS_UNIX_OPENBSD   |
                wxOS_UNIX_NETBSD    |
                wxOS_UNIX_SOLARIS   |
                wxOS_UNIX_AIX       |
                wxOS_UNIX_HPUX,

    wxOS_DOS            = 1 << 15,      // Microsoft DOS
    wxOS_OS2            = 1 << 16       // OS/2
};
\end{verbatim}

The list of wxWidgets ports. Some of them can be used with more than
a single (native) toolkit; e.g. wxWinCE port sources can be used with
smartphones, pocket PCs and handheld devices SDKs.

\begin{verbatim}
enum wxPortId
{
    wxPORT_UNKNOWN  = 0,            // returned on error

    wxPORT_BASE     = 1 << 0,       // wxBase, no native toolkit used

    wxPORT_MSW      = 1 << 1,       // wxMSW, native toolkit is Windows API
    wxPORT_MOTIF    = 1 << 2,       // wxMotif, using [Open]Motif or Lesstif
    wxPORT_GTK      = 1 << 3,       // wxGTK, using GTK+ 1.x, 2.x, GPE or Maemo
    wxPORT_MGL      = 1 << 4,       // wxMGL, using wxUniversal
    wxPORT_X11      = 1 << 5,       // wxX11, using wxUniversal
    wxPORT_OS2      = 1 << 6,       // wxOS2, using OS/2 Presentation Manager
    wxPORT_MAC      = 1 << 7,       // wxMac, using Carbon or Classic Mac API
    wxPORT_COCOA    = 1 << 8,       // wxCocoa, using Cocoa NextStep/Mac API
    wxPORT_WINCE    = 1 << 9,       // wxWinCE, toolkit is WinCE SDK API
    wxPORT_PALMOS   = 1 << 10,      // wxPalmOS, toolkit is PalmOS API
    wxPORT_DFB      = 1 << 11       // wxDFB, using wxUniversal
};
\end{verbatim}

The architecture of the operating system (regardless of the build environment
of wxWidgets library - see \helpref{wxIsPlatform64bit}{wxisplatform64bit} documentation
for more info).

\begin{verbatim}
enum wxArchitecture
{
    wxARCH_INVALID = -1,        // returned on error

    wxARCH_32,                  // 32 bit
    wxARCH_64,

    wxARCH_MAX
}
\end{verbatim}

The endian-ness of the machine.

\begin{verbatim}
enum wxEndianness
{
    wxENDIAN_INVALID = -1,      // returned on error

    wxENDIAN_BIG,               // 4321
    wxENDIAN_LITTLE,            // 1234
    wxENDIAN_PDP,               // 3412

    wxENDIAN_MAX
}
\end{verbatim}

\latexignore{\rtfignore{\wxheading{Members}}}


\membersection{wxPlatformInfo::wxPlatformInfo}\label{wxplatforminfowxplatforminfo}

\func{}{wxPlatformInfo}{}

Initializes the instance with the values corresponding to the currently running platform.
This is a fast operation because it only requires to copy the values internally cached for the
currently running platform (see also \helpref{Get}{wxplatforminfoget}).

\func{}{wxPlatformInfo}{\param{wxPortId }{pid = wxPORT\_UNKNOWN}, \param{int }{tkMajor = -1}, \param{int }{tkMinor = -1}, \param{wxOperatingSystemId }{id = wxOS\_UNKNOWN}, \param{int }{osMajor = -1}, \param{int }{osMinor = -1}, \param{wxArchitecture }{arch = wxARCH\_INVALID}, \param{wxEndianness }{endian = wxENDIAN\_INVALID}}

Initializes the object using given values.



\membersection{wxPlatformInfo::CheckOSVersion}\label{wxplatforminfocheckosversion}

\constfunc{bool}{CheckOSVersion}{\param{int }{major}, \param{int }{minor}}

Returns \true if the OS version is at least \texttt{major.minor}.

\wxheading{See also}

\helpref{GetOSMajorVersion}{wxplatforminfogetosmajorversion},
\helpref{GetOSMinorVersion}{wxplatforminfogetosminorversion},
\helpref{CheckToolkitVersion}{wxplatforminfochecktoolkitversion}


\membersection{wxPlatformInfo::CheckToolkitVersion}\label{wxplatforminfochecktoolkitversion}

\constfunc{bool}{CheckToolkitVersion}{\param{int }{major}, \param{int }{minor}}

Returns \true if the toolkit version is at least \texttt{major.minor}.

\wxheading{See also}

\helpref{GetToolkitMajorVersion}{wxplatforminfogettoolkitmajorversion},
\helpref{GetToolkitMinorVersion}{wxplatforminfogettoolkitminorversion},
\helpref{CheckOSVersion}{wxplatforminfocheckosversion}



\membersection{wxPlatformInfo::Get}\label{wxplatforminfoget}

\func{static const wxPlatformInfo\& }{Get}{\void}

Returns the global wxPlatformInfo object, initialized with the values for the currently running platform.


\membersection{wxPlatformInfo::GetArch}\label{wxplatforminfogetarch}

\func{static wxArchitecture}{GetArch}{\param{const wxString\& }{arch}}

Converts the given string to a wxArchitecture enum value or to
wxARCH\_INVALID if the given string is not a valid architecture string
(i.e. does not contain nor {\tt 32} nor {\tt 64} strings).


\membersection{wxPlatformInfo::GetArchName}\label{wxplatforminfogetarchname}

\func{static wxString}{GetArchName}{\param{wxArchitecture }{arch}}

Returns the name for the given wxArchitecture enumeration value.

\constfunc{wxString}{GetArchName}{\void}

Returns the name for the architecture of this wxPlatformInfo instance.


\membersection{wxPlatformInfo::GetArchitecture}\label{wxplatforminfogetarchitecture}

\constfunc{wxArchitecture}{GetArchitecture}{\void}

Returns the architecture ID of this wxPlatformInfo instance.




\membersection{wxPlatformInfo::GetEndianness}\label{wxplatforminfogetendianness}

\func{static wxEndianness}{GetEndianness}{\param{const wxString\& }{end}}

Converts the given string to a wxEndianness enum value or to
wxENDIAN\_INVALID if the given string is not a valid endianness string
(i.e. does not contain nor {\tt little} nor {\tt big} strings).

\constfunc{wxEndianness}{GetEndianness}{\void}

Returns the endianness ID of this wxPlatformInfo instance.

\membersection{wxPlatformInfo::GetEndiannessName}\label{wxplatforminfogetendiannessname}

\func{static wxString}{GetEndiannessName}{\param{wxEndianness }{end}}

Returns name for the given wxEndianness enumeration value.

\constfunc{wxString}{GetEndiannessName}{\void}

Returns the name for the endianness of this wxPlatformInfo instance.





\membersection{wxPlatformInfo::GetOSMajorVersion}\label{wxplatforminfogetosmajorversion}

\constfunc{int}{GetOSMajorVersion}{\void}

Returns the run-time major version of the OS associated with this wxPlatformInfo instance.
See \helpref{wxGetOsVersion}{wxgetosversion} for more info.

\wxheading{See also}

\helpref{CheckOSVersion}{wxplatforminfocheckosversion}


\membersection{wxPlatformInfo::GetOSMinorVersion}\label{wxplatforminfogetosminorversion}

\constfunc{int}{GetOSMinorVersion}{\void}

Returns the run-time minor version of the OS associated with this wxPlatformInfo instance.
See \helpref{wxGetOsVersion}{wxgetosversion} for more info.

\wxheading{See also}

\helpref{CheckOSVersion}{wxplatforminfocheckosversion}



\membersection{wxPlatformInfo::GetOperatingSystemFamilyName}\label{wxplatforminfogetoperatingsystemfamilyname}

\func{static wxString}{GetOperatingSystemFamilyName}{\param{wxOperatingSystemId }{os}}

Returns the operating system family name for the given wxOperatingSystemId enumeration value:
{\tt Unix} for wxOS\_UNIX, {\tt Macintosh} for wxOS\_MAC, {\tt Windows} for wxOS\_WINDOWS,
{\tt DOS} for wxOS\_DOS, {\tt OS/2} for wxOS\_OS2.

\constfunc{wxString}{GetOperatingSystemFamilyName}{\void}

Returns the operating system family name of the OS associated with this wxPlatformInfo instance.



\membersection{wxPlatformInfo::GetOperatingSystemId}\label{wxplatforminfogetoperatingsystemid}

\func{static wxOperatingSystemId}{GetOperatingSystemId}{\param{const wxString\& }{name}}

Converts the given string to a wxOperatingSystemId enum value or to
wxOS\_UNKNOWN if the given string is not a valid operating system name.

\constfunc{wxOperatingSystemId}{GetOperatingSystemId}{\void}

Returns the operating system ID of this wxPlatformInfo instance.



\membersection{wxPlatformInfo::GetOperatingSystemIdName}\label{wxplatforminfogetoperatingsystemidname}

\func{static wxString}{GetOperatingSystemIdName}{\param{wxOperatingSystemId }{os}}

Returns the name for the given operating system ID value. This can be a long name
(e.g. {\tt Microsoft Windows NT}); use \helpref{GetOperatingSystemFamilyName}{wxplatforminfogetoperatingsystemfamilyname} to
retrieve a short, generic name.


\constfunc{wxString}{GetOperatingSystemIdName}{\void}

Returns the operating system name of the OS associated with this wxPlatformInfo instance.





\membersection{wxPlatformInfo::GetPortId}\label{wxplatforminfogetportid}

\func{static wxPortId}{GetPortId}{\param{const wxString\& }{portname}}

Converts the given string to a wxWidgets port ID value or to wxPORT\_UNKNOWN if
the given string does not match any of the wxWidgets canonical name ports ("wxGTK", "wxMSW", etc)
nor any of the short wxWidgets name ports ("gtk", "msw", etc).

\constfunc{wxPortId}{GetPortId}{\void}

Returns the wxWidgets port ID associated with this wxPlatformInfo instance.

\membersection{wxPlatformInfo::GetPortIdName}\label{wxplatforminfogetportidname}

\func{static wxString}{GetPortIdName}{\param{wxPortId }{port}, \param{bool }{usingUniversal}}

Returns the name of the given wxWidgets port ID value. The \arg{usingUniversal}
argument specifies whether the port is in its native or wxUniversal variant.

The returned string always starts with the "wx" prefix and is a mixed-case
string.

\constfunc{wxString}{GetPortIdName}{\void}

Returns the name of the wxWidgets port ID associated with this wxPlatformInfo instance.




\membersection{wxPlatformInfo::GetPortIdShortName}\label{wxplatforminfogetportidshortname}

\func{static wxString}{GetPortIdShortName}{\param{wxPortId }{port}, \param{bool }{usingUniversal}}

Returns the short name of the given wxWidgets port ID value. The
\arg{usingUniversal} argument specifies whether the port is in its native or
wxUniversal variant.

The returned string does not start with the "wx" prefix and is always lower
case.

\constfunc{wxString}{GetPortIdShortName}{\void}

Returns the short name of the wxWidgets port ID associated with this wxPlatformInfo instance.




\membersection{wxPlatformInfo::GetToolkitMajorVersion}\label{wxplatforminfogettoolkitmajorversion}

\constfunc{int}{GetToolkitMajorVersion}{\void}

Returns the run-time major version of the toolkit associated with this wxPlatformInfo instance.
Note that if \helpref{GetPortId}{wxplatforminfogetportid} returns wxPORT\_BASE, then this value is zero (unless externally modified with \helpref{SetToolkitVersion}{wxplatforminfosettoolkitversion}); that is, no native toolkit is in use.

See \helpref{wxAppTraits::GetToolkitVersion}{wxapptraitsgettoolkitversion} for more info.


\wxheading{See also}

\helpref{CheckToolkitVersion}{wxplatforminfochecktoolkitversion}


\membersection{wxPlatformInfo::GetToolkitMinorVersion}\label{wxplatforminfogettoolkitminorversion}

\constfunc{int}{GetToolkitMinorVersion}{\void}

Returns the run-time minor version of the toolkit associated with this wxPlatformInfo instance.
Note that if \helpref{GetPortId}{wxplatforminfogetportid} returns wxPORT\_BASE, then this value is zero (unless externally modified with \helpref{SetToolkitVersion}{wxplatforminfosettoolkitversion}); that is, no native toolkit is in use.

See \helpref{wxAppTraits::GetToolkitVersion}{wxapptraitsgettoolkitversion} for more info.

\wxheading{See also}

\helpref{CheckToolkitVersion}{wxplatforminfochecktoolkitversion}




\membersection{wxPlatformInfo::IsOk}\label{wxplatforminfoisok}

\constfunc{bool}{IsOk}{\void}

Returns \true if this instance is fully initialized with valid values.



\membersection{wxPlatformInfo::IsUsingUniversalWidgets}\label{wxplatforminfoisusinguniversalwidgets}

\constfunc{bool}{IsUsingUniversalWidgets}{\void}

Returns \true if this wxPlatformInfo describes wxUniversal build.


\membersection{wxPlatformInfo::SetArchitecture}\label{wxplatforminfosetarchitecture}

\func{void}{SetArchitecture}{\param{wxArchitecture }{n}}

Sets the architecture enum value associated with this wxPlatformInfo instance.



\membersection{wxPlatformInfo::SetEndianness}\label{wxplatforminfosetendianness}

\func{void}{SetEndianness}{\param{wxEndianness }{n}}

Sets the endianness enum value associated with this wxPlatformInfo instance.


\membersection{wxPlatformInfo::SetOSVersion}\label{wxplatforminfosetosversion}

\func{void}{SetOSVersion}{\param{int }{major}, \param{int }{minor}}

Sets the version of the operating system associated with this wxPlatformInfo instance.



\membersection{wxPlatformInfo::SetOperatingSystemId}\label{wxplatforminfosetoperatingsystemid}

\func{void}{SetOperatingSystemId}{\param{wxOperatingSystemId }{n}}

Sets the operating system associated with this wxPlatformInfo instance.



\membersection{wxPlatformInfo::SetPortId}\label{wxplatforminfosetportid}

\func{void}{SetPortId}{\param{wxPortId }{n}}

Sets the wxWidgets port ID associated with this wxPlatformInfo instance.



\membersection{wxPlatformInfo::SetToolkitVersion}\label{wxplatforminfosettoolkitversion}

\func{void}{SetToolkitVersion}{\param{int }{major}, \param{int }{minor}}

Sets the version of the toolkit associated with this wxPlatformInfo instance.



\membersection{wxPlatformInfo::operator!=}\label{wxplatforminfooperatorunknown}

\constfunc{bool}{operator!=}{\param{const wxPlatformInfo\& }{t}}

Inequality operator. Tests all class' internal variables.


\membersection{wxPlatformInfo::operator==}\label{wxplatforminfooperatorequal}

\constfunc{bool}{operator==}{\param{const wxPlatformInfo\& }{t}}

Equality operator. Tests all class' internal variables.

