X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FMEDCoupling%2FMEDCouplingTimeDiscretization.hxx;h=f6d877a7539136c7467a9e08faa986cfd0603a76;hb=e7835cba1eb17f50ef4e130c2cb8d0f54bc25083;hp=c75304ab8966ebee8d9adf12745c286828b292ec;hpb=b12a80ec1ec3312c133b32d696c8f103d19d98d0;p=tools%2Fmedcoupling.git diff --git a/src/MEDCoupling/MEDCouplingTimeDiscretization.hxx b/src/MEDCoupling/MEDCouplingTimeDiscretization.hxx index c75304ab8..f6d877a75 100644 --- a/src/MEDCoupling/MEDCouplingTimeDiscretization.hxx +++ b/src/MEDCoupling/MEDCouplingTimeDiscretization.hxx @@ -35,24 +35,36 @@ namespace MEDCoupling class DataArrayDouble; class TimeLabel; + class TimeHolder + { + public: + MEDCOUPLING_EXPORT std::string getTimeUnit() const { return _time_unit; } + MEDCOUPLING_EXPORT void setTimeUnit(const std::string& unit) { _time_unit=unit; } + MEDCOUPLING_EXPORT double getTime(int& iteration, int& order) const { return getStartTime(iteration,order); } + MEDCOUPLING_EXPORT virtual double getStartTime(int& iteration, int& order) const = 0; + void copyTinyAttrFrom(const TimeHolder& other) { _time_unit=other._time_unit; } + protected: + TimeHolder() { } + TimeHolder(const TimeHolder& other):_time_unit(other._time_unit) { } + virtual ~TimeHolder() { } + private: + std::string _time_unit; + }; + template - class MEDCouplingTimeDiscretizationTemplate : public TimeLabel, public BigMemoryObject + class MEDCouplingTimeDiscretizationTemplate : public TimeLabel, public BigMemoryObject, public TimeHolder { public: MEDCOUPLING_EXPORT void updateTime() const; MEDCOUPLING_EXPORT virtual void setArray(typename Traits::ArrayType *array, TimeLabel *owner); MEDCOUPLING_EXPORT typename Traits::ArrayType *getArray() { return _array; } MEDCOUPLING_EXPORT const typename Traits::ArrayType *getArray() const { return _array; } - MEDCOUPLING_EXPORT void setTimeUnit(const std::string& unit) { _time_unit=unit; } - MEDCOUPLING_EXPORT std::string getTimeUnit() const { return _time_unit; } MEDCOUPLING_EXPORT void setTimeTolerance(double val) { _time_tolerance=val; } MEDCOUPLING_EXPORT double getTimeTolerance() const { return _time_tolerance; } - MEDCOUPLING_EXPORT double getTime(int& iteration, int& order) const { return getStartTime(iteration,order); } MEDCOUPLING_EXPORT void setTime(double time, int iteration, int order) { setStartTime(time,iteration,order); } MEDCOUPLING_EXPORT void setIteration(int it) { setStartIteration(it); } MEDCOUPLING_EXPORT void setOrder(int order) { setStartOrder(order); } MEDCOUPLING_EXPORT void setTimeValue(double val) { setStartTimeValue(val); } - MEDCOUPLING_EXPORT virtual double getStartTime(int& iteration, int& order) const = 0; MEDCOUPLING_EXPORT virtual void setStartIteration(int it) = 0; MEDCOUPLING_EXPORT virtual void setStartOrder(int order) = 0; MEDCOUPLING_EXPORT virtual void setStartTime(double time, int iteration, int order) = 0; @@ -87,11 +99,16 @@ namespace MEDCoupling MEDCOUPLING_EXPORT virtual bool areStrictlyCompatibleForMul(const MEDCouplingTimeDiscretizationTemplate *other) const; MEDCOUPLING_EXPORT virtual bool areStrictlyCompatibleForDiv(const MEDCouplingTimeDiscretizationTemplate *other) const; MEDCOUPLING_EXPORT virtual ~MEDCouplingTimeDiscretizationTemplate(); + MEDCOUPLING_EXPORT virtual void getTinySerializationIntInformation(std::vector& tinyInfo) const; + MEDCOUPLING_EXPORT virtual void getTinySerializationDbleInformation(std::vector& tinyInfo) const; + MEDCOUPLING_EXPORT virtual void getTinySerializationStrInformation(std::vector& tinyInfo) const; + MEDCOUPLING_EXPORT virtual void resizeForUnserialization(const std::vector& tinyInfoI, std::vector::ArrayType *>& arrays); + MEDCOUPLING_EXPORT virtual void checkForUnserialization(const std::vector& tinyInfoI, const std::vector::ArrayType *>& arrays); + MEDCOUPLING_EXPORT virtual void finishUnserialization(const std::vector& tinyInfoI, const std::vector& tinyInfoD, const std::vector& tinyInfoS); protected: MEDCOUPLING_EXPORT MEDCouplingTimeDiscretizationTemplate(); MEDCOUPLING_EXPORT MEDCouplingTimeDiscretizationTemplate(const MEDCouplingTimeDiscretizationTemplate& other, bool deepCopy); protected: - std::string _time_unit; double _time_tolerance; typename Traits::ArrayType *_array; protected: @@ -150,12 +167,6 @@ namespace MEDCoupling MEDCOUPLING_EXPORT virtual void divideEqual(const MEDCouplingTimeDiscretization *other) = 0; MEDCOUPLING_EXPORT virtual MEDCouplingTimeDiscretization *pow(const MEDCouplingTimeDiscretization *other) const = 0; MEDCOUPLING_EXPORT virtual void powEqual(const MEDCouplingTimeDiscretization *other) = 0; - MEDCOUPLING_EXPORT virtual void getTinySerializationIntInformation(std::vector& tinyInfo) const; - MEDCOUPLING_EXPORT virtual void getTinySerializationDbleInformation(std::vector& tinyInfo) const; - MEDCOUPLING_EXPORT virtual void getTinySerializationStrInformation(std::vector& tinyInfo) const; - MEDCOUPLING_EXPORT virtual void resizeForUnserialization(const std::vector& tinyInfoI, std::vector& arrays); - MEDCOUPLING_EXPORT virtual void checkForUnserialization(const std::vector& tinyInfoI, const std::vector& arrays); - MEDCOUPLING_EXPORT virtual void finishUnserialization(const std::vector& tinyInfoI, const std::vector& tinyInfoD, const std::vector& tinyInfoS); MEDCOUPLING_EXPORT virtual void getTinySerializationIntInformation2(std::vector& tinyInfo) const = 0; MEDCOUPLING_EXPORT virtual void getTinySerializationDbleInformation2(std::vector& tinyInfo) const = 0; MEDCOUPLING_EXPORT virtual void finishUnserialization2(const std::vector& tinyInfoI, const std::vector& tinyInfoD) = 0; @@ -199,13 +210,12 @@ namespace MEDCoupling MEDCOUPLING_EXPORT virtual void fillFromAnalyticCompo(const DataArrayDouble *loc, int nbOfComp, const std::string& func); MEDCOUPLING_EXPORT virtual void fillFromAnalyticNamedCompo(const DataArrayDouble *loc, int nbOfComp, const std::vector& varsOrder, const std::string& func); }; - - class MEDCouplingTimeDiscretizationInt : public MEDCouplingTimeDiscretizationTemplate + + template + class MEDCouplingTimeDiscretizationSimple : public MEDCouplingTimeDiscretizationTemplate { public: - MEDCouplingTimeDiscretizationInt(); - MEDCouplingTimeDiscretizationInt(const MEDCouplingTimeDiscretizationInt& other, bool deepCopy); - static MEDCouplingTimeDiscretizationInt *New(TypeOfTimeDiscretization type); + std::string getStringRepr() const; double getStartTime(int& iteration, int& order) const { return _tk.getAllInfo(iteration,order); } void setStartIteration(int it) { _tk.setIteration(it); } void setStartOrder(int order) { _tk.setOrder(order); } @@ -216,16 +226,40 @@ namespace MEDCoupling void setEndOrder(int order); void setEndTimeValue(double time); void setEndTime(double time, int iteration, int order); - std::string getStringRepr() const; TypeOfTimeDiscretization getEnum() const { return DISCRETIZATION; } + protected: + MEDCouplingTimeDiscretizationSimple(const MEDCouplingTimeDiscretizationSimple& other, bool deepCopy); + MEDCouplingTimeDiscretizationSimple() { } + protected: + MEDCouplingTimeKeeper _tk; + private: + MEDCOUPLING_EXPORT static const char REPR[]; + protected: + static const TypeOfTimeDiscretization DISCRETIZATION=ONE_TIME; + }; + + class MEDCouplingTimeDiscretizationInt : public MEDCouplingTimeDiscretizationSimple + { + public: + MEDCouplingTimeDiscretizationInt() { } + MEDCouplingTimeDiscretizationInt(const MEDCouplingTimeDiscretizationInt& other, bool deepCopy); + static MEDCouplingTimeDiscretizationInt *New(TypeOfTimeDiscretization type); MEDCouplingTimeDiscretizationInt *performCopyOrIncrRef(bool deepCopy) const; bool isEqualIfNotWhy(const MEDCouplingTimeDiscretizationTemplate *other, int prec, std::string& reason) const; bool isEqualWithoutConsideringStr(const MEDCouplingTimeDiscretizationTemplate *other, int prec) const; + }; + + class MEDCouplingTimeDiscretizationFloat : public MEDCouplingTimeDiscretizationSimple + { + public: + MEDCouplingTimeDiscretizationFloat() { } + MEDCouplingTimeDiscretizationFloat(const MEDCouplingTimeDiscretizationFloat& other, bool deepCopy); + static MEDCouplingTimeDiscretizationFloat *New(TypeOfTimeDiscretization type); + MEDCouplingTimeDiscretizationFloat *performCopyOrIncrRef(bool deepCopy) const; + bool isEqualIfNotWhy(const MEDCouplingTimeDiscretizationTemplate *other, float prec, std::string& reason) const; + bool isEqualWithoutConsideringStr(const MEDCouplingTimeDiscretizationTemplate *other, float prec) const; private: static const TypeOfTimeDiscretization DISCRETIZATION=ONE_TIME; - MEDCOUPLING_EXPORT static const char REPR[]; - protected: - MEDCouplingTimeKeeper _tk; }; class MEDCouplingNoTimeLabel : public MEDCouplingTimeDiscretization