00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _SWORD_TIME_CALENDARGREGORIAN_
00020 #define _SWORD_TIME_CALENDARGREGORIAN_
00021
00022 #include "sword/time.CalendarWestern.h"
00023 #include "sword.private/time.CalendarWesternImpl.h"
00024 #include "sword.private/time.CalendarGregorianImpl.inl"
00025
00026 namespace sword {
00027
00029
00043 class SWORDDECL CalendarGregorian : public CalendarWestern {
00044 public:
00045
00046 virtual bool isValid(word day, word month, word year, word hour, word minute, word second, word millisecond) const;
00047
00048
00049 virtual bool isLeapYear(word year) const;
00050 virtual int64 daysInMonth(word month, word year) const;
00051 virtual int64 daysInYear(word year) const;
00052 virtual int64 daysWithinYear(word day, word month, word year) const;
00053 virtual int64 daysBeforeYear(word year) const;
00054 virtual word weekDay(Time time) const;
00055 virtual Time easter(word year) const;
00056 virtual int64 dmy2days_(word day, word month, word year) const;
00057 virtual void days2dmy_(int64 days, word &day, word &month, word &year) const;
00058 private:
00059
00060
00061
00062 typedef CalendarWesternImpl<CalendarGregorianImpl> IMPL;
00063 };
00064
00065
00066 extern SWORDDECL CalendarGregorian TheCalendarGregorian;
00067
00068 }
00069
00070 #include "sword.private/time.CalendarGregorian.inl"
00071
00072 #endif // _SWORD_TIME_CALENDARGREGORIAN_