duration.hpp 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #ifndef __XIOS_CDuration__
  2. #define __XIOS_CDuration__
  3. /// XIOS headers ///
  4. #include "xios_spl.hpp"
  5. #include "exception.hpp"
  6. namespace xios
  7. {
  8. /// ////////////////////// Déclarations ////////////////////// ///
  9. typedef long long int Time;
  10. class CCalendar;
  11. ///---------------------------------------------------------------
  12. struct CDuration
  13. {
  14. public: /* static */
  15. static CDuration FromString(const StdString& str);
  16. public:
  17. CDuration(double year=0.0, double month=0.0, double day=0.0, double hour=0.0, double minute=0.0, double second=0.0, double timestep=0.0);
  18. /// Opérateurs ///
  19. CDuration& operator=(const CDuration& duration);
  20. bool operator==(const CDuration& duration);
  21. friend StdOStream& operator<<(StdOStream& out, const CDuration& duration);
  22. friend StdIStream& operator>>(StdIStream& in , CDuration& duration);
  23. /// Test ///
  24. bool isNone(void) const;
  25. /// Traitement ///
  26. CDuration& resolve(const CCalendar& calendar, bool noNegativeTime = false);
  27. CDuration& solveTimeStep(const CCalendar& c);
  28. /// Autres ///
  29. StdString toString(void) const;
  30. StdString toStringUDUnits(void) const;
  31. /// Propriétés publiques ///
  32. double year, month, day, hour, minute, second, timestep;
  33. };
  34. ///---------------------------------------------------------------
  35. const extern CDuration Year, Month, Week, Day,
  36. Hour, Minute, Second, TimeStep, NoneDu;
  37. } // namespace xios
  38. #endif // __XIOS_CDuration__