20 #ifndef T_GENERATOR_REGISTRY_H
21 #define T_GENERATOR_REGISTRY_H
35 const std::string& long_name,
36 const std::string& documentation);
44 const std::map<std::string, std::string>& parsed_options,
46 const std::string& option_string)
61 template <
typename generator>
65 const std::string& long_name,
66 const std::string& documentation)
72 const std::map<std::string, std::string>& parsed_options,
73 const std::string& option_string) {
74 return new generator(program, parsed_options, option_string);
78 return generator::is_valid_namespace(sub_namespace);
89 typedef std::map<std::string, t_generator_factory*>
gen_map_t;
97 #define THRIFT_REGISTER_GENERATOR(language, long_name, doc) \
98 class t_##language##_generator_factory_impl \
99 : public t_generator_factory_impl<t_##language##_generator> \
102 t_##language##_generator_factory_impl() \
103 : t_generator_factory_impl<t_##language##_generator>( \
104 #language, long_name, doc) \
107 static t_##language##_generator_factory_impl _registerer;
t_generator_factory_impl(const std::string &short_name, const std::string &long_name, const std::string &documentation)
virtual ~t_generator_factory()
t_generator_factory(const std::string &short_name, const std::string &long_name, const std::string &documentation)
virtual bool is_valid_namespace(const std::string &sub_namespace)=0
static void register_generator(t_generator_factory *factory)
std::map< std::string, t_generator_factory * > gen_map_t
static gen_map_t & get_generator_map()
virtual t_generator * get_generator(t_program *program, const std::map< std::string, std::string > &parsed_options, const std::string &option_string)=0
std::string get_short_name()
std::string get_documentation()
virtual t_generator * get_generator(t_program *program, const std::map< std::string, std::string > &parsed_options, const std::string &option_string)
static t_generator * get_generator(t_program *program, const std::string &options)
virtual bool is_valid_namespace(const std::string &sub_namespace)
std::string get_long_name()
std::string documentation_