1 // Copyright (C) 2014-20xx CEA/DEN, EDF R&D
3 // File: PlaneGCSSolver_ScalarWrapper.cpp
4 // Created: 14 Dec 2015
5 // Author: Artem ZHIDKOV
7 #include <PlaneGCSSolver_ScalarWrapper.h>
8 #include <PlaneGCSSolver_ParameterWrapper.h>
12 PlaneGCSSolver_ScalarWrapper::PlaneGCSSolver_ScalarWrapper(
13 const AttributePtr theAttribute,
14 const ParameterWrapperPtr theParam)
16 myBaseAttribute = theAttribute;
17 myParameters.assign(1, theParam);
20 void PlaneGCSSolver_ScalarWrapper::setGroup(const GroupID& theGroup)
23 myParameters.front()->setGroup(theGroup);
26 double* PlaneGCSSolver_ScalarWrapper::scalar() const
28 std::shared_ptr<PlaneGCSSolver_ParameterWrapper> aParam =
29 std::dynamic_pointer_cast<PlaneGCSSolver_ParameterWrapper>(myParameters.front());
30 return aParam->parameter();
33 bool PlaneGCSSolver_ScalarWrapper::isUsed(AttributePtr theAttribute) const
35 return isBase(theAttribute);
38 bool PlaneGCSSolver_ScalarWrapper::isEqual(const EntityWrapperPtr& theOther)
40 if (type() != theOther->type())
43 // Verify equality of parameters
44 const std::list<ParameterWrapperPtr>& anOtherParams = theOther->parameters();
45 if (myParameters.size() != anOtherParams.size())
47 std::list<ParameterWrapperPtr>::const_iterator aMyIt = myParameters.begin();
48 std::list<ParameterWrapperPtr>::const_iterator anOtherIt = anOtherParams.begin();
49 for (; aMyIt != myParameters.end(); ++aMyIt, ++anOtherIt)
50 if (!(*aMyIt)->isEqual(*anOtherIt))
55 bool PlaneGCSSolver_ScalarWrapper::update(const EntityWrapperPtr& theOther)
57 bool isUpdated = false;
58 std::list<ParameterWrapperPtr> aMyParams = parameters();
59 std::list<ParameterWrapperPtr> anOtherParams = theOther->parameters();
60 std::list<ParameterWrapperPtr>::const_iterator aMyParIt = aMyParams.begin();
61 std::list<ParameterWrapperPtr>::const_iterator anOtherParIt = anOtherParams.begin();
62 for (; aMyParIt != aMyParams.end() && anOtherParIt != anOtherParams.end();
63 ++aMyParIt, ++anOtherParIt)
64 isUpdated = (*aMyParIt)->update(*anOtherParIt);