Page Menu
Home
Xreate
Search
Configure Global Search
Log In
Docs
Questions
Repository
Issues
Patches
Internal API
Files
F3998952
passmanager.h
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Subscribers
None
File Metadata
Details
File Info
Storage
Attached
Created
Thu, Jul 9, 1:07 AM
Size
991 B
Mime Type
text/x-c++
Expires
Sat, Jul 11, 1:07 AM (1 d, 7 h)
Engine
blob
Format
Raw Data
Handle
273012
Attached To
rXR Xreate
passmanager.h
View Options
#ifndef PASSMANAGER_H
#define PASSMANAGER_H
#include "Scanner.h"
#include <string>
#include <map>
namespace xreate {
class AbstractPassBase;
class ClaspLayer;
class LLVMLayer;
class AST;
enum class PassId {
CFGPass,
CompilePass,
DFGPass,
EnvironmentTestsPass,
LoggerPass,
AdhocPass,
RulesPass
};
class PassManager
{
public:
~PassManager();
void*run();
void runWithoutCompilation();
void registerPass(AbstractPassBase* pass, const PassId& id, AbstractPassBase* prerequisite=nullptr);
AbstractPassBase* getPassById(const PassId& id);
static PassManager* prepareForCode(std::string&& code);
static PassManager* prepareForCode(Scanner& scanner);
ClaspLayer* clasp;
LLVMLayer* llvm;
AST* root;
private:
//typedef std::multimap<PassFilter, ASTPass*> FILTERS_STORAGE;
//FILTERS_STORAGE __filters;
std::map<PassId, AbstractPassBase*> __passes;
std::multimap<AbstractPassBase*, AbstractPassBase*> __passDependencies;
}; }
#endif
Event Timeline
Log In to Comment