RSContext::RSContext(clang::Preprocessor &PP, clang::ASTContext &Ctx, const clang::TargetInfo &Target, PragmaList *Pragmas, unsigned int TargetAPI, std::vector<std::string> *GeneratedFileNames) : mPP(PP), mCtx(Ctx), mTarget(Target), mPragmas(Pragmas), mTargetAPI(TargetAPI), mGeneratedFileNames(GeneratedFileNames), mTargetData(NULL), mLLVMContext(llvm::getGlobalContext()), mLicenseNote(NULL), mRSPackageName("android.renderscript"), version(0), mMangleCtx(Ctx.createMangleContext()) { slangAssert(mGeneratedFileNames && "Must supply GeneratedFileNames"); // For #pragma rs export_type PP.AddPragmaHandler( "rs", RSPragmaHandler::CreatePragmaExportTypeHandler(this)); // For #pragma rs java_package_name PP.AddPragmaHandler( "rs", RSPragmaHandler::CreatePragmaJavaPackageNameHandler(this)); // For #pragma rs set_reflect_license PP.AddPragmaHandler( "rs", RSPragmaHandler::CreatePragmaReflectLicenseHandler(this)); // For #pragma version PP.AddPragmaHandler(RSPragmaHandler::CreatePragmaVersionHandler(this)); // Prepare target data mTargetData = new llvm::TargetData(Target.getTargetDescription()); return; }
RSContext::RSContext(clang::Preprocessor &PP, clang::ASTContext &Ctx, const clang::TargetInfo &Target, PragmaList *Pragmas, unsigned int TargetAPI, bool Verbose) : mPP(PP), mCtx(Ctx), mPragmas(Pragmas), mTargetAPI(TargetAPI), mVerbose(Verbose), mDataLayout(NULL), mLLVMContext(llvm::getGlobalContext()), mLicenseNote(NULL), mRSPackageName("android.renderscript"), version(0), mMangleCtx(Ctx.createMangleContext()), mIs64Bit(Target.getPointerWidth(0) == 64) { AddPragmaHandlers(PP, this); // Prepare target data mDataLayout = new llvm::DataLayout(Target.getTargetDescription()); }
virtual void Initialize(clang::ASTContext& Ctx) override { annotator.setSourceMgr(Ctx.getSourceManager(), Ctx.getLangOpts()); annotator.setMangleContext(Ctx.createMangleContext()); ci.getPreprocessor().addPPCallbacks(maybe_unique(new PreprocessorCallback(annotator, ci.getPreprocessor()))); ci.getDiagnostics().setClient(new BrowserDiagnosticClient(annotator), true); }