blob: d4e6e15d49799178499bc26579802333fc66c2b4 [file] [log] [blame]
#ifndef _SLANG_COMPILER_RS_BACKEND_H
#define _SLANG_COMPILER_RENDER_SCRIPT_BACKEND_H
#include "libslang.h"
#include "slang_backend.h"
#include "slang_pragma_recorder.h"
namespace llvm {
class NamedMDNode;
}
namespace clang {
class ASTConsumer;
class Diagnostic;
class TargetOptions;
class PragmaList;
class CodeGenerator;
class ASTContext;
class DeclGroupRef;
}
namespace slang {
class RSContext;
class RSBackend : public Backend {
private:
RSContext *mContext;
llvm::NamedMDNode *mExportVarMetadata;
llvm::NamedMDNode *mExportFuncMetadata;
llvm::NamedMDNode *mExportTypeMetadata;
llvm::NamedMDNode *mExportElementMetadata;
virtual void HandleTranslationUnitEx(clang::ASTContext &Ctx);
public:
RSBackend(RSContext *Context,
clang::Diagnostic &Diags,
const clang::CodeGenOptions &CodeGenOpts,
const clang::TargetOptions &TargetOpts,
const PragmaList &Pragmas,
llvm::raw_ostream *OS,
SlangCompilerOutputTy OutputType,
clang::SourceManager &SourceMgr,
bool AllowRSPrefix);
virtual void HandleTopLevelDecl(clang::DeclGroupRef D);
virtual ~RSBackend();
};
}
#endif // _SLANG_COMPILER_BACKEND_H