00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017 #ifndef _SCHEME_TABLE_H_
00018 #define _SCHEME_TABLE_H_
00019
00020 #include <oasys/util/Singleton.h>
00021 #include <oasys/util/StringUtils.h>
00022
00023 namespace dtn {
00024
00025 class Scheme;
00026
00030 class SchemeTable : public oasys::Singleton<SchemeTable> {
00031 private:
00032 friend class oasys::Singleton<SchemeTable>;
00033
00039 SchemeTable();
00040
00045 virtual ~SchemeTable();
00046
00047 public:
00051 void register_scheme(const std::string& scheme_str, Scheme* scheme);
00052
00059 Scheme* lookup(const std::string& scheme_str);
00060
00061 protected:
00062 static SchemeTable* instance_;
00063 typedef oasys::StringHashMap<Scheme*> SchemeMap;
00064 SchemeMap table_;
00065 };
00066
00067 }
00068
00069 #endif