00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef _SWORD_TIME_HOLIDAYMANAGER_
00020 #define _SWORD_TIME_HOLIDAYMANAGER_
00021
00022 #include "ace/Singleton.h"
00023 #include "sword/time.HolidayRepository.h"
00024 #include <map>
00025
00026 namespace sword {
00027
00028 class SWORDDECL HolidayManager {
00029 public:
00030 HolidayManager();
00031
00032 PHolidayRepository get(const std::string &name);
00033
00035 void insert(PHolidayRepository hr);
00036
00038 void alias(const std::string& oldName, const std::string& newName);
00039
00040 class UnknownHolidayException : public Exception {};
00041
00042 private:
00043 typedef std::map<std::string, PHolidayRepository> Repositories;
00044 typedef std::map<std::string, std::string> Aliases;
00045 Repositories repositories_;
00046 Aliases aliases_;
00047
00048 PHolidayRepository get_(const std::string &name) const;
00049 };
00050 typedef ACE_Singleton<HolidayManager, ACE_Thread_Mutex> TheHolidayManager;
00051
00052 }
00053
00054 #include "sword.private/time.HolidayManager.inl"
00055
00056 #endif // _SWORD_TIME_HOLIDAYMANAGER_