slang_rs_backend.h revision c383a500aa59423264811be3874461bf8adbfea0
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 549ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao virtual void HandleTranslationUnitEx(clang::ASTContext &Ctx); 55462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao 569ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao public: 579ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao RSBackend(RSContext *Context, 589ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao clang::Diagnostic &Diags, 599ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao const clang::CodeGenOptions &CodeGenOpts, 609ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao const clang::TargetOptions &TargetOpts, 619ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao const PragmaList &Pragmas, 629ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao llvm::raw_ostream *OS, 633a9ca1f0d6bd8f12c2bb2adea51f95c255996180Zonr Chang Slang::OutputType OT, 649ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao clang::SourceManager &SourceMgr, 659ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao bool AllowRSPrefix); 66462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao 679ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao virtual void HandleTopLevelDecl(clang::DeclGroupRef D); 68462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao 699ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao virtual ~RSBackend(); 709ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao}; 719ef2f785e0cc490af678dfd685995dec787321ffShih-wei Liao} 72462aefd62cc646d2ff753c1d003ef3cd7bbea26Shih-wei Liao 736315f76e3cc6ff2d012d1183a0b030d4ff0dc808zonr#endif // _SLANG_COMPILER_BACKEND_H 74