[refractoring] removed the lang namespace
[ozulis.git] / src / ozulis / plugin.hh
blobf8d14c2f618184113a82565321d24ab5e565cb1d
1 #ifndef PLUGIN_HH
2 # define PLUGIN_HH
4 # include <string>
5 # include <vector>
7 # include <ozulis/parser.hh>
9 # define EXPORT_PLUGIN(Class) \
10 Class plugin;
12 namespace ozulis
14 class Plugin
16 public:
17 enum PluginType {
18 Abstract,
19 Language,
22 virtual PluginType type() const { return Abstract; }
23 virtual const std::string & name() const = 0;
24 virtual const std::string & version() const = 0;
27 class LanguagePlugin : public Plugin
29 public:
30 virtual PluginType type() const { return Language; }
31 virtual const std::string & languageName() const = 0;
32 virtual const std::vector<std::string> & extensions() const = 0;
33 virtual Parser * createParser() = 0;
37 #endif /* !PLUGIN_HH */