00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _SWORD_TIME_HOLIDAYREPOSITORY_
00020 #define _SWORD_TIME_HOLIDAYREPOSITORY_
00021
00022 #include "sword/base.SmartPtr.h"
00023 #include "sword/time.Time.h"
00024 #include "sword/time.HolidayRule.h"
00025 #include <vector>
00026
00027 namespace sword {
00028
00029 class SWORDDECL HolidayRepository {
00030 public:
00031 HolidayRepository(const std::string &name, bool haveWeekEnds, word cacheYearFrom, word cacheYearTo);
00032
00033 void addRule(const HolidayRule &rule);
00034 void addToCache(const sword::Time& time);
00035 void addToCache(int integer1900);
00036
00037 const std::string &name() const;
00038 bool isHoliday(const Time &time) const;
00039 bool isHoliday(const Date &date) const;
00040
00041 typedef std::vector<HolidayRule> Rules;
00042 const Rules &rules() const;
00043
00044 private:
00045 std::string name_;
00046 Rules rules_;
00047 int cacheFrom_;
00048 int cacheTo_;
00049 word cacheYearFrom_;
00050 word cacheYearTo_;
00051 word8 *cache_;
00052 };
00053 typedef SmartPtr<HolidayRepository> PHolidayRepository;
00054
00055 }
00056
00057 #include "sword.private/time.HolidayRepository.inl"
00058
00059 #endif // _SWORD_TIME_HOLIDAYREPOSITORY_