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