/****************************************************************************
**
** Copyright (C) 2016 The Qt Company Ltd.
** Contact: https://www.qt.io/licensing/
**
** This file is part of the documentation of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:FDL$
** 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 The Qt Company. For licensing terms
** and conditions see https://www.qt.io/terms-conditions. For further
** information use the contact form at https://www.qt.io/contact-us.
**
** GNU Free Documentation License Usage
** Alternatively, this file may be used under the terms of the GNU Free
** Documentation License version 1.3 as published by the Free Software
** Foundation and appearing in the file included in the packaging of
** this file. Please review the following information to ensure
** the GNU Free Documentation License version 1.3 requirements
** will be met: https://www.gnu.org/licenses/fdl-1.3.html.
** $QT_END_LICENSE$
**
****************************************************************************/

/*!
    \module QtPlatformHeaders
    \title Qt Platform Headers C++ Classes
    \ingroup modules

    \brief The Qt Platform Headers module offers header-only inline classes that
    encapsulate platform-specific information that is tied to a given runtime
    configuration of a platform plugin.
*/

/*!
    \page qtplatformheaders-index.html
    \title Qt Platform Headers

    \brief The Qt Platform Headers module offers header-only inline classes that
    encapsulate platform-specific information that is tied to a given runtime
    configuration of a platform plugin.

    Some applications may need to interface Qt with other frameworks. This often
    means using graphics contexts or other types of native handles created by
    one framework with another. For example, on some platforms, QOpenGLContext
    offers the ability to wrap an existing native OpenGL context, instead of
    creating a new one. This existing native context can be created by some
    other third-party code.

    The type of such native handles is highly platform specific and in some
    cases the platform plugin will need more information to adopt a handle, just
    the handle in itself will not be sufficient. Therefore the public API
    consists of functions taking or returning a QVariant that contains a
    platform-specific value type. See for example
    QOpenGLContext::setNativeHandle() and QOpenGLContext::nativeHandle(). When
    running on Linux/X11, using the xcb platform plugin and the GLX windowing
    system interface, the variant contains a QGLXNativeContext. On other
    platforms a different class will be used. These classes are all placed in
    the Qt Platform Headers module.

    Platform headers can be used in conjunction with
    QGuiApplication::platformFunction() to give a type safe interface to
    platform specific functionality. It is possible for headers defined in
    QtPlatformHeaders to define typedefs for functions that can be returned by
    a platform plugin from QGuiApplication::platformFunction(). Headers in
    QtPlatformHeaders can also implement wrapper functions for the function
    pointer, giving a static function that can be called from any context after
    the platform integration has been created. An implementation of this
    pattern is QXcbWindowFunctions::setWmWindowType().  This function retrieves
    a function pointer from QGuiApplication::platformFunction, and executes
    that function if the requested function was returned.

    \note Similar to the other QPA APIs, there are no binary compatibility
    guarantees for these classes, meaning that an application using these
    classes is only guaranteed to work with the Qt version it was developed
    against. Unlike QPA however, source compatibility is guaranteed.

    \sa QXcbWindowFunctions QWindowsWindowFunctions

    \section1 Getting Started

    To include the definitions of the module's functions and classes, use the following directives:
    \code
    #include <QtPlatformHeaders/QWindowsWindowFunctions>
    #include <QtPlatformHeaders/QXcbWindowFunctions>
    \endcode

    As the module is header-only, no further modifications to the .pro files are required to use it.

    \note The module name (\c QtPlatformHeaders) must appear in the \c #include directive.
    \note It is not necessary to enclose the code in \c #ifdef directives depending on platform.

    \section1 API Reference
    \list
    \li \l{Qt Platform Headers C++ Classes}{C++ Classes}
    \endlist
 */
