X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling%2FMEDCouplingTimeLabel.hxx;h=3da7bef0fab7b225eb14b00ab8f3d2842747e351;hb=b607ffc713080a567fb90595118069ac18181e99;hp=87280fd92527a9a0e285954bde88027dee88f5d0;hpb=5c5eac0685cacee529bf388d4369f3535c3803f9;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling/MEDCouplingTimeLabel.hxx b/src/MEDCoupling/MEDCouplingTimeLabel.hxx index 87280fd92..3da7bef0f 100644 --- a/src/MEDCoupling/MEDCouplingTimeLabel.hxx +++ b/src/MEDCoupling/MEDCouplingTimeLabel.hxx @@ -1,9 +1,9 @@ -// Copyright (C) 2007-2013 CEA/DEN, EDF R&D +// Copyright (C) 2007-2020 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 @@ -23,9 +23,10 @@ #include "MEDCoupling.hxx" +#include #include -namespace ParaMEDMEM +namespace MEDCoupling { /*! * Class representing a label of time of the lastely modified part of this. @@ -34,10 +35,11 @@ namespace ParaMEDMEM class TimeLabel { public: + MEDCOUPLING_EXPORT TimeLabel(const TimeLabel& other) = default; MEDCOUPLING_EXPORT TimeLabel& operator=(const TimeLabel& other); //! This method should be called when write access has been done on this. MEDCOUPLING_EXPORT void declareAsNew() const; - //! This method should be called on high level classes as Field or Mesh to take into acount modifications done in aggregates objects. + //! This method should be called on high level classes as Field or Mesh to take into account modifications done in aggregates objects. MEDCOUPLING_EXPORT virtual void updateTime() const = 0; MEDCOUPLING_EXPORT std::size_t getTimeOfThis() const { return _time; } protected: @@ -46,9 +48,21 @@ namespace ParaMEDMEM MEDCOUPLING_EXPORT void updateTimeWith(const TimeLabel& other) const; MEDCOUPLING_EXPORT void forceTimeOfThis(const TimeLabel& other) const; private: - static std::size_t GLOBAL_TIME; + static std::atomic GLOBAL_TIME; mutable std::size_t _time; }; + + class TimeLabelConstOverseer + { + public: + MEDCOUPLING_EXPORT TimeLabelConstOverseer(const TimeLabel *tl); + MEDCOUPLING_EXPORT void checkConst() const; + MEDCOUPLING_EXPORT bool resetState(); + MEDCOUPLING_EXPORT bool keepTrackOfNewTL(const TimeLabel *tl); + private: + const TimeLabel *_tl; + std::size_t _ref_time; + }; } #endif