File: globalconfig.h

package info (click to toggle)
kcachegrind 4%3A25.04.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 9,964 kB
  • sloc: cpp: 32,149; xml: 403; perl: 325; python: 235; sh: 8; makefile: 6
file content (102 lines) | stat: -rw-r--r-- 2,657 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
/*
    This file is part of KCachegrind.

    SPDX-FileCopyrightText: 2002-2016 Josef Weidendorfer <Josef.Weidendorfer@gmx.de>

    SPDX-License-Identifier: GPL-2.0-only
*/

/*
 * Global configuration for KCachegrind (only non-GUI options)
 */

#ifndef GLOBALCONFIG_H
#define GLOBALCONFIG_H

#include <QStringList>
#include <QHash>

#include "tracedata.h"

class GlobalConfig;

/**
 * Global configuration (only non-GUI options).
 * A singleton.
 */
class GlobalConfig
{
    friend class ConfigDlg;

public:
    GlobalConfig();
    virtual ~GlobalConfig();

    // gets the singleton instance
    static GlobalConfig* config();

    virtual void saveOptions();
    virtual void readOptions();

    static QStringList sourceDirs(TraceData*, TraceObject* o = nullptr);
    static bool showPercentage();
    static bool showExpanded();
    static bool showCycles();
    static bool hideTemplates();

    // lower percentage limit of cost items filled into lists
    static int percentPrecision();
    // max symbol lengths/count in tooltip/popup
    static int maxSymbolLength();
    // strip a symbol name according to <maxSymbolLength>
    static QString shortenSymbol(const QString&);
    static int maxSymbolCount();
    // max. number of items in lists
    static int maxListCount();

    // how many lines of context to show before/after annotated source/assembler
    static int context();
    // how many lines without cost are still regarded as inside a function
    static int noCostInside();

    const QStringList& generalSourceDirs();
    QStringList objectSourceDirs(QString);
    void setGeneralSourceDirs(QStringList);
    void setObjectSourceDirs(QString, QStringList);
    void clearObjectSourceDirs();

    void setPercentPrecision(int);
    void setMaxSymbolLength(int);
    void setMaxSymbolCount(int);
    void setMaxListCount(int);
    void setContext(int);

    static void setShowPercentage(bool);
    static void setShowExpanded(bool);

    static void setShowCycles(bool);

    static void setHideTemplates(bool);
    // upper limit for cutting of a call in cycle detection
    static double cycleCut();

    void addDefaultTypes();

protected:
    QStringList knownTypes();
    QString knownFormula(const QString& name);
    QString knownLongName(const QString& name);

    QStringList _generalSourceDirs;
    QHash<QString, QStringList> _objectSourceDirs;

    bool _showPercentage, _showExpanded, _showCycles, _hideTemplates;
    double _cycleCut;
    int _percentPrecision;
    int _maxSymbolLength, _maxSymbolCount, _maxListCount;
    int _context, _noCostInside;

    static GlobalConfig* _config;
};

#endif // GLOBALCONFIG_H