1 /**
2 * UGENE - Integrated Bioinformatics Tools.
3 * Copyright (C) 2008-2021 UniPro <ugene@unipro.ru>
4 * http://ugene.net
5 *
6 * This program is free software; you can redistribute it and/or
7 * modify it under the terms of the GNU General Public License
8 * as published by the Free Software Foundation; either version 2
9 * of the License, or (at your option) any later version.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19 * MA 02110-1301, USA.
20 */
21
22 #include "BaseBreakpointHitCounter.h"
23
24 #include "BreakpointEqualHitCounter.h"
25 #include "BreakpointGreaterOrEqualHitCounter.h"
26 #include "BreakpointMultipleHitCounter.h"
27
28 const quint32 DEFAULT_HIT_COUNT_PARAMETER = 1;
29 const quint32 HIT_COUNTER_INITIAL_VALUE = 0;
30
31 namespace U2 {
32
BaseBreakpointHitCounter(BreakpointHitCountCondition initCondition)33 BaseBreakpointHitCounter::BaseBreakpointHitCounter(BreakpointHitCountCondition initCondition)
34 : condition(initCondition), hitCount(HIT_COUNTER_INITIAL_VALUE) {
35 }
36
~BaseBreakpointHitCounter()37 BaseBreakpointHitCounter::~BaseBreakpointHitCounter() {
38 }
39
getCondition() const40 BreakpointHitCountCondition BaseBreakpointHitCounter::getCondition() const {
41 return condition;
42 }
43
hit()44 bool BaseBreakpointHitCounter::hit() {
45 ++hitCount;
46 return true;
47 }
48
getHitCount() const49 quint32 BaseBreakpointHitCounter::getHitCount() const {
50 return hitCount;
51 }
52
setHitCountParameter(quint32 newParameter)53 void BaseBreakpointHitCounter::setHitCountParameter(quint32 newParameter) {
54 Q_UNUSED(newParameter);
55 }
56
getHitCountParameter() const57 quint32 BaseBreakpointHitCounter::getHitCountParameter() const {
58 return DEFAULT_HIT_COUNT_PARAMETER;
59 }
60
reset()61 void BaseBreakpointHitCounter::reset() {
62 hitCount = HIT_COUNTER_INITIAL_VALUE;
63 }
64
createInstance(BreakpointHitCountCondition kindOfCondition,const QVariant & hitCounterParameter)65 BaseBreakpointHitCounter *BaseBreakpointHitCounter::createInstance(
66 BreakpointHitCountCondition kindOfCondition,
67 const QVariant &hitCounterParameter) {
68 BaseBreakpointHitCounter *result = nullptr;
69 bool conversionResult = true;
70 switch (kindOfCondition) {
71 case ALWAYS:
72 result = new BaseBreakpointHitCounter(kindOfCondition);
73 break;
74 case HIT_COUNT_EQUAL:
75 result = new BreakpointEqualHitCounter(kindOfCondition,
76 hitCounterParameter.toUInt(&conversionResult));
77 break;
78 case HIT_COUNT_MULTIPLE:
79 result = new BreakpointMultipleHitCounter(kindOfCondition,
80 hitCounterParameter.toUInt(&conversionResult));
81 break;
82 case HIT_COUNT_GREATER_OR_EQUAL:
83 result = new BreakpointGreaterOrEqualHitCounter(kindOfCondition,
84 hitCounterParameter.toUInt(&conversionResult));
85 break;
86 default:
87 Q_ASSERT(false);
88 }
89 Q_ASSERT(nullptr != result);
90 Q_ASSERT(conversionResult);
91
92 return result;
93 }
94
95 } // namespace U2
96