slang_rs_backend.h revision 6315f76e3cc6ff2d012d1183a0b030d4ff0dc808
16315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr#ifndef _SLANG_COMPILER_RS_BACKEND_H
26315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr#define _SLANG_COMPILER_RENDER_SCRIPT_BACKEND_H
3462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
4462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao#include "libslang.h"
56315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr#include "slang_backend.h"
66315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr#include "slang_pragma_recorder.h"
7462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
8462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaonamespace llvm {
96315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr  class NamedMDNode;
109ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao}
11462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
12462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaonamespace clang {
136315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr  class ASTConsumer;
146315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr  class Diagnostic;
156315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr  class TargetOptions;
166315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr  class PragmaList;
176315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr  class CodeGenerator;
186315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr  class ASTContext;
196315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr  class 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};
529ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao}
53462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao
546315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr#endif  // _SLANG_COMPILER_BACKEND_H
55