ChimeraTK-ApplicationCore 04.06.00
Loading...
Searching...
No Matches
CircularDependencyDetectionRecursionStopper.cc
Go to the documentation of this file.
1// SPDX-FileCopyrightText: Deutsches Elektronen-Synchrotron DESY, MSK, ChimeraTK Project <chimeratk-support@desy.de>
2// SPDX-License-Identifier: LGPL-3.0-or-later
4
5#include <ChimeraTK/Exception.h>
6
7namespace ChimeraTK::detail {
8
9 size_t CircularDependencyDetectionRecursionStopper::_globalScanCounter{0};
10
11 void CircularDependencyDetectionRecursionStopper::startNewScan() {
12 ++_globalScanCounter;
13 }
14 void CircularDependencyDetectionRecursionStopper::setRecursionDetected() {
15 _localScanCounter = _globalScanCounter;
16 }
17 bool CircularDependencyDetectionRecursionStopper::recursionDetected() const {
18 if(_globalScanCounter == 0) {
19 throw ChimeraTK::logic_error(
20 "CircularDependencyDetectionRecursionStopper::recursionDetected() called without starting a scan.");
21 }
22 return _localScanCounter == _globalScanCounter;
23 }
24
25} // namespace ChimeraTK::detail