X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling%2FMEDCouplingTimeLabel.hxx;h=3da7bef0fab7b225eb14b00ab8f3d2842747e351;hb=b607ffc713080a567fb90595118069ac18181e99;hp=cd5f1396907a870430b317f4ec3fddb798d41dc1;hpb=fb512e2b77325290aaa2b4c9fd8f22d5949b6369;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling/MEDCouplingTimeLabel.hxx b/src/MEDCoupling/MEDCouplingTimeLabel.hxx index cd5f13969..3da7bef0f 100644 --- a/src/MEDCoupling/MEDCouplingTimeLabel.hxx +++ b/src/MEDCoupling/MEDCouplingTimeLabel.hxx @@ -1,4 +1,4 @@ -// Copyright (C) 2007-2014 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 @@ -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