-// Copyright (C) 2007-2012 CEA/DEN, EDF R&D
+// Copyright (C) 2007-2016 CEA/DEN, EDF R&D
//
// This library is free software; you can redistribute it and/or
// modify it under the terms of the GNU Lesser General Public
// License as published by the Free Software Foundation; either
-// version 2.1 of the License.
+// version 2.1 of the License, or (at your option) any later version.
//
// This library is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
#include "MEDCouplingTimeLabel.hxx"
-using namespace ParaMEDMEM;
+#include "InterpKernelException.hxx"
-unsigned int TimeLabel::GLOBAL_TIME=0;
+#include <limits>
+
+using namespace MEDCoupling;
+
+std::size_t TimeLabel::GLOBAL_TIME=0;
TimeLabel::TimeLabel():_time(GLOBAL_TIME++)
{
{
_time=other._time;
}
+
+TimeLabelConstOverseer::TimeLabelConstOverseer(const TimeLabel *tl):_tl(tl),_ref_time(std::numeric_limits<std::size_t>::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<std::size_t>::max();
+ }
+ return true;
+}