// Copyright (C) 2023 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only

/*!
    \page qtcreator-api.html

    \title C++ API Reference

    The core of \QC is basically only a \l{ExtensionSystem}{plugin loader}. All
    functionality is implemented in C++-based plugins or Lua-based extensions.
    The basis of \QC is implemented in the Core plugin. The plugin manager lets
    plugins cooperate by providing hooks for other plugins.

    \section1 Libraries

    \section2 Core Libraries

    There are a few core libraries used by many parts of \QC.

    \table
        \header
            \li Library Name
            \li Description

        \row
            \li \l{Aggregation}
            \li Adds functionality for \e glueing QObjects of different types
                together, so you can \e cast between them.

        \row
            \li \l{ExtensionSystem}
            \li Implements the plugin loader framework. Provides a base class
                for plugins and basic mechanisms for plugin interaction like an
                object pool.

        \row
            \li \l{QtTaskTree}
            \li Provides a declarative way to compose and execute asynchronous
                task workflows with proper error handling and execution policies.
                For more information, see \l {Qt TaskTree}.

        \row
            \li \l{Utils}
            \li Useful classes that are reused in a lot of places in \QC code.
    \omit
        \row
            \li \l{QmlJS}
            \li QML and JavaScript language support library.

    \endtable

    \section2 Additional libraries

    \table
        \header
            \li Library Name
            \li Description

        \row
            \li \l{qtcreatorcdbext}
            \li Windows CDB debugger extension
    \endomit
    \endtable


    \section1 Plugins

    As already mentioned, \QC is basically only a plugin loader framework
    which gets its IDE functionality through C++-based plugins and Lua-based
    extensions. The most important plugin
    is the Core plugin which provides all the basic functionality needed
    later to integrate e.g. editors or mode windows.

    \table
        \header
            \li Plugin Name
            \li Description

        \row
            \li \l{Core}
            \li The core plugin. Provides the main window and managers for
                editors, actions, mode windows and files, just to mention the
                most important ones.

                This plugin also contains classes necessary to hook into the
                \l{Core::ILocatorFilter}{Locator} as well as support for
                searching text in arbitrary widgets.

    \omit
        \row
            \li \l{ProjectExplorer}
            \li The project explorer plugin. Provides base classes for project
                handling.

        \row
            \li \l{Debugging}
            \li Debugging functionality.

        \row
            \li \l{VcsBase}
            \li Base classes for version control support.

        \row
            \li \l{TextEditor}
            \li This is where everything starts if you want to create a text
                editor. Besides the base editor itself, this plugin contains
                APIs for supporting functionality like \l{Snippets}{snippets},
                highlighting, \l{CodeAssist}{code assist}, indentation and
                style, and others.
    \endomit
    \endtable

    \section1 Solutions

    \QC uses object libraries that are independent of any \QC-specific code, and
    are threfore ready to be a part of Qt.

    \table
        \header
            \li Solution Name
            \li Description

        \row
            \li \l{Spinner Solution}{Spinner}
            \li Renders a circular, endlessly animated progress indicator,
                which may be attached to any widget as an overlay.
    \endtable

    \section1 Reference

    \list
        \li \l {\QC C++ Classes}
        \li \l {\QC Namespaces}
        \li \l {\QC Functions}
        \li \l {Solutions}
    \endlist
*/

/*!
    \module QtCreator
    \title \QC C++ Classes

    This topic lists the documented \QC C++ classes. For information
    about the classes that have not been documented, please inspect the source
    code.
*/

/*!
    \page namespaces.html
    \title \QC Namespaces

    This topic lists the documented \QC namespaces. For information
    about the namespaces that have not been documented, please inspect the
    source code.

    \generatelist namespaces
*/

/*!
    \page mainclasses.html
    \title \QC Main Classes

    This topic lists the most important \QC C++ classes.

    \generatelist mainclasses
*/

/*!
    \page functions.html
    \title \QC Functions

    This topic lists the documented \QC functions. For information
    about the functions that have not been documented, please inspect the
    source code.

    \generatelist functionindex
*/
