mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2026-04-26 12:20:42 +00:00
Convert llvmc2 plugins to use llvm/Support/Registry.h machinery.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@56467 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -14,6 +14,8 @@
|
||||
#ifndef LLVM_TOOLS_LLVMC2_PLUGIN_H
|
||||
#define LLVM_TOOLS_LLVMC2_PLUGIN_H
|
||||
|
||||
#include "llvm/Support/Registry.h"
|
||||
|
||||
namespace llvmc {
|
||||
|
||||
class LanguageMap;
|
||||
@@ -31,26 +33,39 @@ namespace llvmc {
|
||||
virtual void PopulateCompilationGraph(CompilationGraph&) const = 0;
|
||||
};
|
||||
|
||||
// Helper class for RegisterPlugin.
|
||||
class RegisterPluginImpl {
|
||||
protected:
|
||||
RegisterPluginImpl(BasePlugin*);
|
||||
typedef llvm::Registry<BasePlugin> PluginRegistry;
|
||||
|
||||
template <class P>
|
||||
struct RegisterPlugin
|
||||
: public PluginRegistry::Add<P> {
|
||||
typedef PluginRegistry::Add<P> Base;
|
||||
|
||||
RegisterPlugin(const char* Name = "Nameless",
|
||||
const char* Desc = "Auto-generated plugin")
|
||||
: Base(Name, Desc) {}
|
||||
};
|
||||
|
||||
/// RegisterPlugin<T> template - Used to register LLVMC plugins.
|
||||
template <class T>
|
||||
struct RegisterPlugin : RegisterPluginImpl {
|
||||
RegisterPlugin() : RegisterPluginImpl (new T()) {}
|
||||
|
||||
/// PluginLoader - Helper class used by the main program for
|
||||
/// lifetime management.
|
||||
struct PluginLoader {
|
||||
PluginLoader();
|
||||
~PluginLoader();
|
||||
|
||||
/// PopulateLanguageMap - Fills in the language map by calling
|
||||
/// PopulateLanguageMap methods of all plugins.
|
||||
void PopulateLanguageMap(LanguageMap& langMap);
|
||||
|
||||
/// PopulateCompilationGraph - Populates the compilation graph by
|
||||
/// calling PopulateCompilationGraph methods of all plugins.
|
||||
void PopulateCompilationGraph(CompilationGraph& tools);
|
||||
|
||||
private:
|
||||
// noncopyable
|
||||
PluginLoader(const PluginLoader& other);
|
||||
const PluginLoader& operator=(const PluginLoader& other);
|
||||
};
|
||||
|
||||
/// PopulateLanguageMap - Fills in the language map by calling
|
||||
/// PopulateLanguageMap methods of all plugins.
|
||||
void PopulateLanguageMap(LanguageMap& langMap);
|
||||
|
||||
/// PopulateCompilationGraph - Populates the compilation graph by
|
||||
/// calling PopulateCompilationGraph methods of all plugins.
|
||||
void PopulateCompilationGraph(CompilationGraph& tools);
|
||||
|
||||
}
|
||||
|
||||
#endif // LLVM_TOOLS_LLVMC2_PLUGIN_H
|
||||
|
||||
Reference in New Issue
Block a user