X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling%2FMEDCouplingTimeLabel.cxx;h=66b495b8c32f050269dd0fe925514e42fe85a9bd;hb=30e370a928f879a1c9be2bd685cda6cabec223cf;hp=a827585315fc5807508bf7a1f89a9846b5139db8;hpb=fb512e2b77325290aaa2b4c9fd8f22d5949b6369;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling/MEDCouplingTimeLabel.cxx b/src/MEDCoupling/MEDCouplingTimeLabel.cxx index a82758531..66b495b8c 100644 --- a/src/MEDCoupling/MEDCouplingTimeLabel.cxx +++ b/src/MEDCoupling/MEDCouplingTimeLabel.cxx @@ -20,6 +20,10 @@ #include "MEDCouplingTimeLabel.hxx" +#include "InterpKernelException.hxx" + +#include + using namespace ParaMEDMEM; std::size_t TimeLabel::GLOBAL_TIME=0; @@ -57,3 +61,52 @@ void TimeLabel::forceTimeOfThis(const TimeLabel& other) const { _time=other._time; } + +TimeLabelConstOverseer::TimeLabelConstOverseer(const TimeLabel *tl):_tl(tl),_ref_time(std::numeric_limits::max()) +{ + if(!_tl) + throw INTERP_KERNEL::Exception("TimeLabelConstOverseer constructor : input instance must be not NULL !"); + _tl->updateTime(); + _ref_time=tl->getTimeOfThis(); +} + +/*! + * This method checks that the tracked instance is not NULL and if not NULL that its internal state has not changed. + */ +void TimeLabelConstOverseer::checkConst() const +{ + if(!_tl) + throw INTERP_KERNEL::Exception("TimeLabelConstOverseer::checkConst : NULL tracked instance !"); + _tl->updateTime(); + if(_ref_time!=_tl->getTimeOfThis()) + throw INTERP_KERNEL::Exception("TimeLabelConstOverseer::checkConst : the state of the controlled instance of TimeLable has changed !"); +} + +bool TimeLabelConstOverseer::resetState() +{ + if(_tl) + { + _tl->updateTime(); + _ref_time=_tl->getTimeOfThis(); + return true; + } + else + return false; +} + +bool TimeLabelConstOverseer::keepTrackOfNewTL(const TimeLabel *tl) +{ + if(_tl==tl) + return false; + _tl=tl; + if(_tl) + { + _tl->updateTime(); + _ref_time=_tl->getTimeOfThis(); + } + else + { + _ref_time=std::numeric_limits::max(); + } + return true; +}