source: XMLIO_V2/dev/dev_rv/src/XMLIO/calendar.hpp @ 130

Last change on this file since 130 was 130, checked in by hozdoba, 14 years ago
File size: 4.2 KB
RevLine 
[115]1#ifndef __XMLIO_CALENDAR__
2#define __XMLIO_CALENDAR__
3
4namespace XMLIOSERVER
5{
6   class JulianCalendar : public AbstractCalendar
7   {
8      public :
[127]9
[115]10         JulianCalendar() : AbstractCalendar("Julian")
11         {/* Ne rien faire de plus */}
[120]12         JulianCalendar(const string& _dateStr) : AbstractCalendar("Julian", _dateStr)
[119]13         {/* Ne rien faire de plus */}
[115]14
[127]15      public : /* virtual */
16
[120]17         virtual int getYearTotalLength(const Date& _d) const
[117]18         { // Retourne la durée d'une année en seconde.
[120]19            if (_d.getYear()%4 == 0) return (366 * 86400);
[116]20            return (365 * 86400);
21         }
22
[120]23         virtual int getMonthLength(const Date& _d) const
[117]24         { // Retourne la durée du mois en jour.
[120]25            if (_d.getMonth() == 2)
26            { if (_d.getYear()%4 == 0) return 29; return 28; }
27            return (AbstractCalendar::getMonthLength(_d));
[115]28         }
29
[130]30         virtual string getType(void) const { return (string("julian")); }
31
[115]32         virtual ~JulianCalendar()
33         {/* Ne rien faire de plus */}
34
35   }; // class JulianCalendar
36
37   class GregorianCalendar : public AbstractCalendar
38   {
39      public :
[127]40
[115]41         GregorianCalendar() : AbstractCalendar("Gregorian")
42         {/* Ne rien faire de plus */}
[119]43         GregorianCalendar(const string& dateStr) : AbstractCalendar("Gregorian", dateStr)
44         {/* Ne rien faire de plus */}
[115]45
[127]46      public : /* virtual */
47
[116]48         virtual int getYearTotalLength(const Date& d) const
[117]49         { // Retourne la durée d'une année en seconde.
[116]50            if ((d.getYear() % 4 == 0) && (d.getYear() % 100 != 0 || d.getYear() % 400 == 0)) return (366 * 86400);
51            return (365 * 86400);
52         }
53
[115]54         virtual int getMonthLength(const Date& d) const
[117]55         { // Retourne la durée du mois en jour.
[115]56            if (d.getMonth() == 2)
57            { // Traitement du cas particulier en Février.
[127]58               if ((d.getYear() % 4   == 0) &&
59                  ((d.getYear() % 100 != 0) ||
60                   (d.getYear() % 400 == 0) ))
[120]61                  return (29);
62               return (28);
[115]63            }
[120]64            return (AbstractCalendar::getMonthLength(d));
[115]65         }
66
[130]67         virtual string getType(void) const { return (string("gregorian")); }
68
[115]69         virtual ~GregorianCalendar()
70         {/* Ne rien faire de plus */}
71
72   }; // class GregorianCalendar
73
74   class NoLeapCalendar : public AbstractCalendar
75   {
76      public :
[127]77
[115]78         NoLeapCalendar() : AbstractCalendar("NoLeap")
79         {/* Ne rien faire de plus */}
[119]80         NoLeapCalendar(const string& dateStr) : AbstractCalendar("NoLeap", dateStr)
81         {/* Ne rien faire de plus */}
82
[130]83         virtual string getType(void) const { return (string("noleap")); }
84
[115]85         virtual ~NoLeapCalendar()
86         {/* Ne rien faire de plus */}
87
88   }; // class NoLeapCalendar
89
90   class AllLeapCalendar : public AbstractCalendar
91   {
92      public :
[127]93
[115]94         AllLeapCalendar() : AbstractCalendar("AllLeap")
95         {/* Ne rien faire de plus */}
[119]96         AllLeapCalendar(const string& dateStr) : AbstractCalendar("AllLeap", dateStr)
97         {/* Ne rien faire de plus */}
[115]98
[127]99      public : /* virtual */
100
[115]101         virtual int getMonthLength(const Date& d) const
[120]102         { if (d.getMonth() == 2) return (29); return (AbstractCalendar::getMonthLength(d)); }
[115]103
[118]104         virtual int getYearTotalLength(const Date& d) const { return (366 * 86400); }
[116]105
[130]106         virtual string getType(void) const { return (string("allleap")); }
107
[115]108         virtual ~AllLeapCalendar()
109         {/* Ne rien faire de plus */}
110
111   }; // class NoLeapCalendar
112
[116]113   class D360Calendar : public AbstractCalendar
[115]114   {
115      public :
[127]116
[116]117         D360Calendar() : AbstractCalendar("D360")
[115]118         {/* Ne rien faire de plus */}
[119]119         D360Calendar(const string& dateStr) : AbstractCalendar("D360", dateStr)
120         {/* Ne rien faire de plus */}
[115]121
[127]122      public : /* virtual */
123
[118]124         virtual int getYearTotalLength(const Date& d) const { return (360 * 86400); }
[115]125         virtual int getMonthLength(const Date& d) const { return (30); }
126
[130]127         virtual string getType(void) const { return (string("360d")); }
128
[116]129         virtual ~D360Calendar()
[115]130         {/* Ne rien faire de plus */}
131
[116]132   }; // class D360Calendar
[115]133
134} // namespace XMLIOSERVER
135
136#endif // __XMLIO_CALENDAR__
Note: See TracBrowser for help on using the repository browser.