00001
00002
00003
00004
00005
00006
00007 #ifndef XMLI_BUILDFAC_H
00008 #define XMLI_BUILDFAC_H
00009 #include <string>
00010 #include <map>
00011
00012 namespace xmli {
00013 class Builder;
00015 class BuilderFac {
00016 public:
00017 static BuilderFac& Instance();
00018
00019 void Register(const char* name, xmli::Builder* b);
00020 Builder* Get(const char* name);
00021 Builder* Get(const std::string& name);
00022
00023 private:
00024 BuilderFac();
00025 static BuilderFac* fInstance;
00026 private:
00027 std::map<std::string,xmli::Builder*> fBuilders;
00028 };
00029 }
00030 #endif // XMLIBUILDFAC_H
00031