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

Last change on this file since 131 was 131, checked in by hozdoba, 14 years ago

Début Interface c<->fortran

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