From 2b4ae7fde370bc3316ab30cc38b74d23e785b360 Mon Sep 17 00:00:00 2001 From: Kenji Hosokawa Date: Mon, 24 Aug 2020 21:58:42 +0900 Subject: First commit Signed-off-by: Kenji Hosokawa Change-Id: I381abb0a6521f5349768a76ef7ceecbce4b2d701 --- src/core/model/RBAConstraintImpl.cpp | 96 ++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 src/core/model/RBAConstraintImpl.cpp (limited to 'src/core/model/RBAConstraintImpl.cpp') diff --git a/src/core/model/RBAConstraintImpl.cpp b/src/core/model/RBAConstraintImpl.cpp new file mode 100644 index 0000000..a634621 --- /dev/null +++ b/src/core/model/RBAConstraintImpl.cpp @@ -0,0 +1,96 @@ +/** + * Copyright (c) 2019 DENSO CORPORATION. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/** + * Constraint Implementation class + */ + +#include "RBAConstraintImpl.hpp" + +#include "RBAExpression.hpp" +#include "RBALogManager.hpp" + +namespace rba +{ + +RBAConstraintImpl::RBAConstraintImpl(const std::string& name) + : RBAConstraint(), + RBAAbstractConstraint{name} +{ +} + +void +RBAConstraintImpl::setRuntime(const bool newRuntime) +{ + runtime_ = newRuntime; +} + +std::string +RBAConstraintImpl::getName() const +{ + return RBANamedElement::getElementName(); +} + +bool +RBAConstraintImpl::isConstraint() const +{ + return true; +} + +bool +RBAConstraintImpl::isRuntime() const +{ + return runtime_; +} + +bool +RBAConstraintImpl::execute(RBAArbitrator* const arb) +{ + LOG_arbitrateConstraintLogicLogLine(" constraint expression[" + + getExpression()->LOG_getExpressionText() + + "] check start"); + LOG_initConstraintHierarchy(); + LOG_coverageConstraintStartLog(this); + + clearInfo(); + + bool res {getExpression()->execute(getInfo(), arb)}; +#ifdef RBA_USE_LOG + std::string log = " constraint expression[" + getExpression()->getExpressionText(); + + if (res == true) { + log += "] true"; + } else { +#endif + if (getInfo()->isExceptionBeforeArbitrate() == true) { +#ifdef RBA_USE_LOG + log += "] before arbitrate skip"; +#endif + res = true; +#ifdef RBA_USE_LOG + } else { + log += "] false"; + } +#endif + } + LOG_arbitrateConstraintLogicLogLine(log + "\n"); + + LOG_coverageConstraintEndLog(this); + + return res; +} + +} -- cgit 1.2.3-korg