File indexing completed on 2024-04-28 05:41:32

0001 /*
0002     This file is part of KCachegrind.
0003 
0004     SPDX-FileCopyrightText: 2003-2016 Josef Weidendorfer <Josef.Weidendorfer@gmx.de>
0005 
0006     SPDX-License-Identifier: GPL-2.0-only
0007 */
0008 
0009 /*
0010  * Items of coverage view.
0011  */
0012 
0013 #ifndef COVERAGEITEM_H
0014 #define COVERAGEITEM_H
0015 
0016 #include <QTreeWidget>
0017 #include "tracedata.h"
0018 
0019 class Coverage;
0020 
0021 class CallerCoverageItem: public QTreeWidgetItem
0022 {
0023 public:
0024     CallerCoverageItem(QTreeWidget* parent, Coverage* c,
0025                        TraceFunction* base,
0026                        EventType* ct, ProfileContext::Type gt);
0027     CallerCoverageItem(QTreeWidget* parent, int skipped, Coverage* c,
0028                        TraceFunction* base,
0029                        EventType* ct, ProfileContext::Type gt);
0030 
0031     bool operator< ( const QTreeWidgetItem & other ) const override;
0032     TraceFunction* function() { return (_skipped) ? nullptr : _function; }
0033     void setCostType(EventType* ct);
0034     void setGroupType(ProfileContext::Type);
0035     void update();
0036 
0037 private:
0038     float _pSum;
0039     SubCost _sum;
0040     EventType* _costType;
0041     ProfileContext::Type _groupType;
0042     SubCost _cc;
0043     int _distance, _skipped;
0044     TraceFunction *_function, *_base;
0045     Coverage* _coverage;
0046 };
0047 
0048 
0049 class CalleeCoverageItem: public QTreeWidgetItem
0050 {
0051 public:
0052     CalleeCoverageItem(QTreeWidget* parent, Coverage* c,
0053                        TraceFunction* base,
0054                        EventType* ct, ProfileContext::Type gt);
0055     CalleeCoverageItem(QTreeWidget* parent, int skipped, Coverage* c,
0056                        TraceFunction* base,
0057                        EventType* ct, ProfileContext::Type gt);
0058 
0059     bool operator< ( const QTreeWidgetItem & other ) const override;
0060     TraceFunction* function() { return (_skipped) ? nullptr : _function; }
0061     void setCostType(EventType* ct);
0062     void setGroupType(ProfileContext::Type);
0063     void update();
0064 
0065 private:
0066     float _pSum, _pSelf;
0067     SubCost _sum, _self;
0068     EventType* _costType;
0069     ProfileContext::Type _groupType;
0070     SubCost _cc;
0071     int _distance, _skipped;
0072     TraceFunction *_function, *_base;
0073     Coverage* _coverage;
0074 };
0075 
0076 #endif