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