adhocpass.h
No OneTemporary

File Metadata

Created
Tue, Jul 7, 1:34 PM

adhocpass.h

/*
* adhoc.h
*
* Created on: Nov 28, 2015
* Author: pgess
*/
//SECTIONTAG adhoc pass
#ifndef SRC_INSTRUCTIONS_ADHOC_H_
#define SRC_INSTRUCTIONS_ADHOC_H_
#include "abstractpass.h"
#ifndef FRIEND_ADHOC_UNITTESTS
#define FRIEND_ADHOC_UNITTESTS
#endif
namespace xreate {
class ContextQuery;
class AdhocScheme {
public:
AdhocScheme(const Expression& scheme);
CodeScope* getImplementationForCommand(const std::string& comm);
const TypeAnnotation& getResultType();
const std::string& getContext();
private:
TypeAnnotation __resultType;
std::string __context;
std::map<std::string, CodeScope*> __commands;
};
class AdhocPass: public AbstractPass<void> {
FRIEND_ADHOC_UNITTESTS
public:
AdhocPass(PassManager* manager): AbstractPass(manager) {}
AdhocScheme* determineForScope(CodeScope* entry);
// virtual void process(const Expression& expression, PassContext context, const std::string& varDecl="");
void run() override;
private:
std::map<std::string, AdhocScheme*> __schemes;
ContextQuery* queryContext;
};
}
#endif /* SRC_INSTRUCTIONS_ADHOC_H_ */

Event Timeline