slang_rs_backend.h revision 9ef2f785e0cc490af678dfd685995dec787321ff
1462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao#ifndef _SLANG_COMPILER_RS_BACKEND_HPP
2462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao#   define _SLANG_COMPILER_RENDER_SCRIPT_BACKEND_HPP
3462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
4462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao#include "libslang.h"
5462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao#include "slang_backend.hpp"
6462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao#include "slang_pragma_recorder.hpp"
7462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
8462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaonamespace llvm {
9462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaoclass NamedMDNode;
109ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao}
11462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
12462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaonamespace clang {
13462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaoclass ASTConsumer;
14462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaoclass Diagnostic;
15462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaoclass TargetOptions;
16462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaoclass PragmaList;
17462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaoclass CodeGenerator;
18462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaoclass ASTContext;
19462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaoclass DeclGroupRef;
209ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao}
21462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
22462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaonamespace slang {
23462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
24462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaoclass RSContext;
25462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
26462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaoclass RSBackend : public Backend {
279ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao private:
289ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao  RSContext *mContext;
29462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
309ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao  llvm::NamedMDNode *mExportVarMetadata;
319ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao  llvm::NamedMDNode *mExportFuncMetadata;
329ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao  llvm::NamedMDNode *mExportTypeMetadata;
339ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao  llvm::NamedMDNode *mExportElementMetadata;
34462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
359ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao  virtual void HandleTranslationUnitEx(clang::ASTContext &Ctx);
36462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
379ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao public:
389ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao  RSBackend(RSContext *Context,
399ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao            clang::Diagnostic &Diags,
409ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao            const clang::CodeGenOptions &CodeGenOpts,
419ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao            const clang::TargetOptions &TargetOpts,
429ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao            const PragmaList &Pragmas,
439ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao            llvm::raw_ostream *OS,
449ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao            SlangCompilerOutputTy OutputType,
459ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao            clang::SourceManager &SourceMgr,
469ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao            bool AllowRSPrefix);
47462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
489ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao  virtual void HandleTopLevelDecl(clang::DeclGroupRef D);
49462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
509ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao  virtual ~RSBackend();
519ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao};
52462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
539ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao}
54462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
559ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao#endif  // _SLANG_COMPILER_BACKEND_HPP
56