/*
  gammaray-metaobject-browser.qdoc

  This file is part of GammaRay, the Qt application inspection and manipulation tool.

  SPDX-FileCopyrightText: 2016 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
  Author: Volker Krause <volker.krause@kdab.com>

  SPDX-License-Identifier: GPL-2.0-or-later

  Contact KDAB at <info@kdab.com> for commercial licensing options.
*/

/*!
    \nextpage{Meta Type Browser}
    \previouspage {Translations}
    \page gammaray-metaobject-browser.html

    \title Meta-Object Browser

    \section1 Overview

    The meta-object browser shows the hierarchy of all QMetaObject instances found in the target in the tree view on the left side.
    The property view on the right side shows information known by the QMetaObject system, including data from:

    \list
        \li QMetaProperty,
        \li QMetaMethod,
        \li QMetaEnum,
        \li and QMetaClassInfo.
    \endlist

    GammaRay checks all QMetaObject instances for typical problems such as using unregistered or improperly qualified types on properties
    or method arguments. In case such issues are detected, a warning icon is shown, and a tooltip informs you about the details. These
    problems are usually harmless when working with C++ API, but tend to be relevant for dynamic invocation or language bindings, ie. most
    commonly when exposing the affected types to QML.

    \section1 Instance Statistics

    The meta-object tree view also contains columns with information about how many instances of a specific type have been created, including and excluding sub-classes.

    \image gammaray-metaobject-browser.png

    In particular, these numbers are:
    \list
        \li Self total: The total amount of instances of this type ever created, excluding instances of sub-classes.
        \li Inclusive total: The total amount of instances of this type ever created, including sub-classes.
        \li Self alive: The amount of instances created but not destroyed yet of this type, excluding sub-classes.
        \li Inclusive alive: The amount of instances created but not destroyed yet of this type, including sub-classes.
    \endlist

    Tooltips and colorization of these columns show the ratio of this type on the overall amount of QObject instances. This is particularly useful for identifying
    unnecessarily created instances, as QObject construction is not exactly cheap.

    For dynamically created QMetaObject instances (such as found in QML defined types or dynamic QtSCXML state charts), it might not
    be possible for GammaRay to determine the lifetime correctly, those types are grayed out in order to avoid access to already freed memory.
    For those types you will not be able to access information beyond the basic statistics.
*/
