blob: e6c7b0b8cb1068805da372c1d06b4a177e8394c1 (
plain)
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
103
104
105
106
107
108
109
110
111
112
|
// Copyright (C) 2016 The Qt Company Ltd.
// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
#pragma once
#include <QList>
QT_BEGIN_NAMESPACE
class QString;
QT_END_NAMESPACE
namespace Valgrind::Callgrind {
class Function;
/**
* Represents all the information extracted from a callgrind data file.
*/
class ParseData
{
public:
explicit ParseData(const QString &fileName);
~ParseData();
QString fileName() const;
static QString prettyStringForEvent(const QString &event);
/// List of events reported in the data file.
QStringList events() const;
void setEvents(const QStringList &events);
static QString prettyStringForPosition(const QString &position);
/// List of positions reported in the data file.
QStringList positions() const;
void setPositions(const QStringList &positions);
/// the index of the line number in @c positions()
/// or -1 if no line numbers where reported.
int lineNumberPositionIndex() const;
/**
* Total cost of @p event reported in the data file.
*
* @see events()
*/
quint64 totalCost(uint event) const;
void setTotalCost(uint event, quint64 cost);
/**
* When @p detectCycles is set to true, the returned list will have all @c Function's in call
* cycles replaced with @c FunctionCycle.
*
* @return All functions that where reported in the data file.
*/
QList<const Function *> functions(bool detectCycles = false) const;
/// NOTE: The @c ParseData will take ownership.
void addFunction(const Function *function);
/// @return executed command with arguments
QString command() const;
void setCommand(const QString &command);
/// @return pid of executed command
quint64 pid() const;
void setPid(quint64 pid);
/// @return number of data, if callgrind_control --dump was used
uint part() const;
void setPart(uint part) const;
/// @return list of desc: lines in the data
QStringList descriptions() const;
void addDescription(const QString &description);
void setDescriptions(const QStringList &descriptions);
/// @return version of the callgrind data format
int version() const;
void setVersion(int version);
/// @return creator of the data
QString creator() const;
void setCreator(const QString &creator);
/**
* Internal name compression lookup table.
*
* We save the @c QString representations of the compressed data format only once here.
* This should make sure the memory consumption doesn't skyrocket as long
* as these strings are only displayed without applying detaching operations on them.
*/
/// for Objects
QString stringForObjectCompression(qint64 id) const;
/// @p id if it is -1, an uncompressed string is assumed and it will be compressed internally
void addCompressedObject(const QString &object, qint64 &id);
/// for Files
QString stringForFileCompression(qint64 id) const;
/// @p id if it is -1, an uncompressed string is assumed and it will be compressed internally
void addCompressedFile(const QString &file, qint64 &id);
/// for Functions
QString stringForFunctionCompression(qint64 id) const;
/// @p id if it is -1, an uncompressed string is assumed and it will be compressed internally
void addCompressedFunction(const QString &function, qint64 &id);
private:
class Private;
Private *d;
};
} // namespace Valgrind::Callgrind
|