[visitors] ported llvm asm generator
[ozulis.git] / src / ozulis / plugin.hh
blobfa686b8ea8774d3c8ac3ef1837c1422a13eb97b6
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 ozulis_plugin;
12 namespace ozulis
14 class Plugin
16 public:
17 enum PluginType {
18 Abstract,
19 Language,
22 /** @brief this function is called when the plugin is loaded */
23 virtual void loaded() const {}
24 virtual PluginType type() const { return Abstract; }
25 virtual const std::string & name() const = 0;
26 virtual const std::string & version() const = 0;
28 void * handle;
31 class LanguagePlugin : public Plugin
33 public:
34 virtual PluginType type() const { return Language; }
35 virtual const std::string & languageName() const = 0;
36 virtual const std::vector<std::string> & extensions() const = 0;
37 virtual Parser * createParser() = 0;
41 #endif /* !PLUGIN_HH */