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