/************************************************************************
 * This file has been generated automatically from                      *
 *                                                                      *
 * src/core/qgsruntimeprofiler.h                                        *
 *                                                                      *
 * Do not edit manually ! Edit header and run scripts/sipify.py again   *
 ************************************************************************/



class QgsRuntimeProfiler : QAbstractItemModel
{
%Docstring(signature="appended")
Provides a method of recording run time profiles of operations, allowing
easy recording of their overall run time.

:py:class:`QgsRuntimeProfiler` is not usually instantied manually, but
rather accessed through :py:func:`QgsApplication.profiler()`.

This class is thread-safe only if accessed through
:py:func:`QgsApplication.profiler()`. If accessed in this way,
operations can be profiled from non-main threads.
%End

%TypeHeaderCode
#include "qgsruntimeprofiler.h"
%End
  public:

    QgsRuntimeProfiler();
%Docstring
Constructor to create a new runtime profiler.

.. warning::

   QgsRuntimeProfiler is not usually instantied manually, but rather accessed
   through :py:func:`QgsApplication.profiler()`.
%End
    ~QgsRuntimeProfiler();

 void beginGroup( const QString &name ) /Deprecated/;
%Docstring
Begin the group for the profiler. Groups will append {GroupName}/ to the
front of the profile tag set using start.

:param name: The name of the group.

.. deprecated:: 3.40

   Use :py:func:`~QgsRuntimeProfiler.start` instead.
%End

 void endGroup() /Deprecated/;
%Docstring
End the current active group.

.. deprecated:: 3.40

   Use :py:func:`~QgsRuntimeProfiler.end` instead.
%End

    QStringList childGroups( const QString &parent = QString(), const QString &group = "startup" ) const;
%Docstring
Returns a list of all child groups with the specified ``parent``.

.. versionadded:: 3.14
%End

    void start( const QString &name, const QString &group = "startup", const QString &id = QString() );
%Docstring
Start a profile event with the given name. The ``name`` of the profile
event. Will have the name of the active ``group`` appended after ending.

Since QGIS 3.34, the optional ``id`` argument can be used to provide a
unique ID to disambiguate nodes with the same ``name``.
%End

    void end( const QString &group = "startup" );
%Docstring
End the current profile event.
%End

    void record( const QString &name, double time, const QString &group = "startup", const QString &id = QString() );
%Docstring
Manually adds a profile event with the given name and total ``time`` (in
seconds).

The optional ``id`` argument can be used to provider a unique ID to
disambiguate nodes with the same ``name``.

.. versionadded:: 3.34
%End

    double profileTime( const QString &name, const QString &group = "startup" ) const;
%Docstring
Returns the profile time for the specified ``name``.

.. versionadded:: 3.14
%End

    void clear( const QString &group = "startup" );
%Docstring
clear Clear all profile data.
%End

    double totalTime( const QString &group = "startup" );
%Docstring
The current total time collected in the profiler.

:return: The current total time collected in the profiler.
%End

    QSet< QString > groups() const;
%Docstring
Returns the set of known groups.
%End

    bool groupIsActive( const QString &group ) const;
%Docstring
Returns ``True`` if the specified ``group`` is currently being logged,
i.e. it has a entry which has started and not yet stopped.

.. versionadded:: 3.14
%End

    static QString translateGroupName( const QString &group );
%Docstring
Returns the translated name of a standard profile ``group``.
%End


    virtual int rowCount( const QModelIndex &parent = QModelIndex() ) const;

    virtual int columnCount( const QModelIndex &parent = QModelIndex() ) const;

    virtual QModelIndex index( int row, int column, const QModelIndex &parent = QModelIndex() ) const;

    virtual QModelIndex parent( const QModelIndex &child ) const;

    virtual QVariant data( const QModelIndex &index, int role = Qt::DisplayRole ) const;

    virtual QVariant headerData( int section, Qt::Orientation orientation, int role = Qt::DisplayRole ) const;


    QString asText( const QString &group = QString() );
%Docstring
Returns the model as a multi-line text string.

:param group: A group name to filter the model against.

.. versionadded:: 3.34
%End


    void groupAdded( const QString &group );
%Docstring
Emitted when a new group has started being profiled.
%End

};


class QgsScopedRuntimeProfile
{
%Docstring(signature="appended")
Scoped object for logging of the runtime for a single operation or group
of operations.

This class automatically takes care of registering an operation in the
:py:func:`QgsApplication.profiler()` registry upon construction, and
recording of the elapsed runtime upon destruction.

Python scripts should not use :py:class:`QgsScopedRuntimeProfile`
directly. Instead, use :py:func:`QgsRuntimeProfiler.profile()`

.. code-block:: python

       with QgsRuntimeProfiler.profile('My operation'):
         # do something

.. versionadded:: 3.14
%End

%TypeHeaderCode
#include "qgsruntimeprofiler.h"
%End
  public:

    QgsScopedRuntimeProfile( const QString &name, const QString &group = "startup", const QString &id = QString() );
%Docstring
Constructor for QgsScopedRuntimeProfile.

Automatically registers the operation in the
:py:func:`QgsApplication.profiler()` instance and starts recording the
run time of the operation.

Since QGIS 3.34, the optional ``id`` argument can be used to provide a
unique ID to disambiguate nodes with the same ``name``.
%End

    ~QgsScopedRuntimeProfile();

    void switchTask( const QString &name );
%Docstring
Switches the current task managed by the scoped profile to a new task
with the given ``name``. The current task will be finalised before
switching.

This is useful for reusing an existing scoped runtime profiler with
multi-step processes.

.. versionadded:: 3.14
%End

};


/************************************************************************
 * This file has been generated automatically from                      *
 *                                                                      *
 * src/core/qgsruntimeprofiler.h                                        *
 *                                                                      *
 * Do not edit manually ! Edit header and run scripts/sipify.py again   *
 ************************************************************************/
