diff options
Diffstat (limited to 'include/clang/Frontend/MultiplexConsumer.h')
-rw-r--r-- | include/clang/Frontend/MultiplexConsumer.h | 23 |
1 files changed, 22 insertions, 1 deletions
diff --git a/include/clang/Frontend/MultiplexConsumer.h b/include/clang/Frontend/MultiplexConsumer.h index d13565c27bc3..214fefb219cd 100644 --- a/include/clang/Frontend/MultiplexConsumer.h +++ b/include/clang/Frontend/MultiplexConsumer.h @@ -17,13 +17,34 @@ #include "clang/Basic/LLVM.h" #include "clang/Sema/SemaConsumer.h" +#include "clang/Serialization/ASTDeserializationListener.h" #include <memory> #include <vector> namespace clang { class MultiplexASTMutationListener; -class MultiplexASTDeserializationListener; + +// This ASTDeserializationListener forwards its notifications to a set of +// child listeners. +class MultiplexASTDeserializationListener : public ASTDeserializationListener { +public: + // Does NOT take ownership of the elements in L. + MultiplexASTDeserializationListener( + const std::vector<ASTDeserializationListener *> &L); + void ReaderInitialized(ASTReader *Reader) override; + void IdentifierRead(serialization::IdentID ID, IdentifierInfo *II) override; + void MacroRead(serialization::MacroID ID, MacroInfo *MI) override; + void TypeRead(serialization::TypeIdx Idx, QualType T) override; + void DeclRead(serialization::DeclID ID, const Decl *D) override; + void SelectorRead(serialization::SelectorID iD, Selector Sel) override; + void MacroDefinitionRead(serialization::PreprocessedEntityID, + MacroDefinitionRecord *MD) override; + void ModuleRead(serialization::SubmoduleID ID, Module *Mod) override; + +private: + std::vector<ASTDeserializationListener *> Listeners; +}; // Has a list of ASTConsumers and calls each of them. Owns its children. class MultiplexConsumer : public SemaConsumer { |