slang_rs_backend.h revision fcda2352b9e140529f8f3c89f05b10a70c0048b2
1c383a500aa59423264811be3874461bf8adbfea0Zonr Chang/* 2c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * Copyright 2010, The Android Open Source Project 3c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * 4c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * Licensed under the Apache License, Version 2.0 (the "License"); 5c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * you may not use this file except in compliance with the License. 6c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * You may obtain a copy of the License at 7c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * 8c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * http://www.apache.org/licenses/LICENSE-2.0 9c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * 10c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * Unless required by applicable law or agreed to in writing, software 11c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * distributed under the License is distributed on an "AS IS" BASIS, 12c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * See the License for the specific language governing permissions and 14c383a500aa59423264811be3874461bf8adbfea0Zonr Chang * limitations under the License. 15c383a500aa59423264811be3874461bf8adbfea0Zonr Chang */ 16c383a500aa59423264811be3874461bf8adbfea0Zonr Chang 176315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr#ifndef _SLANG_COMPILER_RS_BACKEND_H 186315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr#define _SLANG_COMPILER_RENDER_SCRIPT_BACKEND_H 19462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao 206315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr#include "slang_backend.h" 216315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr#include "slang_pragma_recorder.h" 22462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao 23462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaonamespace llvm { 246315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr class NamedMDNode; 259ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao} 26462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao 27462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaonamespace clang { 286315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr class ASTConsumer; 296315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr class Diagnostic; 306315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr class TargetOptions; 316315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr class PragmaList; 326315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr class CodeGenerator; 336315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr class ASTContext; 346315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr class DeclGroupRef; 359ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao} 36462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao 37462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaonamespace slang { 38462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao 39462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaoclass RSContext; 40462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao 41462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liaoclass RSBackend : public Backend { 429ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao private: 439ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao RSContext *mContext; 44462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao 453a9ca1f0d6bd8f12c2bb2adea51f95c255996180Zonr Chang clang::SourceManager &mSourceMgr; 463a9ca1f0d6bd8f12c2bb2adea51f95c255996180Zonr Chang 473a9ca1f0d6bd8f12c2bb2adea51f95c255996180Zonr Chang bool mAllowRSPrefix; 483a9ca1f0d6bd8f12c2bb2adea51f95c255996180Zonr Chang 499ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao llvm::NamedMDNode *mExportVarMetadata; 509ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao llvm::NamedMDNode *mExportFuncMetadata; 519ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao llvm::NamedMDNode *mExportTypeMetadata; 529ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao llvm::NamedMDNode *mExportElementMetadata; 53462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao 5468fc02ca4a7235e2981be5eee4ad968a9d3928c0Zonr Chang protected: 5568fc02ca4a7235e2981be5eee4ad968a9d3928c0Zonr Chang virtual void HandleTopLevelDecl(clang::DeclGroupRef D); 5668fc02ca4a7235e2981be5eee4ad968a9d3928c0Zonr Chang 57fcda2352b9e140529f8f3c89f05b10a70c0048b2Stephen Hines virtual void HandleTranslationUnitPre(clang::ASTContext& C); 58fcda2352b9e140529f8f3c89f05b10a70c0048b2Stephen Hines 5968fc02ca4a7235e2981be5eee4ad968a9d3928c0Zonr Chang virtual void HandleTranslationUnitPost(llvm::Module *M); 60462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao 619ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao public: 629ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao RSBackend(RSContext *Context, 639ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao clang::Diagnostic &Diags, 649ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao const clang::CodeGenOptions &CodeGenOpts, 659ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao const clang::TargetOptions &TargetOpts, 669ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao const PragmaList &Pragmas, 679ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao llvm::raw_ostream *OS, 683a9ca1f0d6bd8f12c2bb2adea51f95c255996180Zonr Chang Slang::OutputType OT, 699ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao clang::SourceManager &SourceMgr, 709ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao bool AllowRSPrefix); 71462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao 729ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao virtual ~RSBackend(); 739ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao}; 749ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao} 75462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao 766315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr#endif // _SLANG_COMPILER_BACKEND_H 77