|
@@ -33,11 +33,14 @@ public:
|
|
void ReaderInitialized(ASTReader *Reader) override;
|
|
void ReaderInitialized(ASTReader *Reader) override;
|
|
void IdentifierRead(serialization::IdentID ID,
|
|
void IdentifierRead(serialization::IdentID ID,
|
|
IdentifierInfo *II) override;
|
|
IdentifierInfo *II) override;
|
|
|
|
+ void MacroRead(serialization::MacroID ID, MacroInfo *MI) override;
|
|
void TypeRead(serialization::TypeIdx Idx, QualType T) override;
|
|
void TypeRead(serialization::TypeIdx Idx, QualType T) override;
|
|
void DeclRead(serialization::DeclID ID, const Decl *D) override;
|
|
void DeclRead(serialization::DeclID ID, const Decl *D) override;
|
|
void SelectorRead(serialization::SelectorID iD, Selector Sel) override;
|
|
void SelectorRead(serialization::SelectorID iD, Selector Sel) override;
|
|
void MacroDefinitionRead(serialization::PreprocessedEntityID,
|
|
void MacroDefinitionRead(serialization::PreprocessedEntityID,
|
|
MacroDefinition *MD) override;
|
|
MacroDefinition *MD) override;
|
|
|
|
+ void ModuleRead(serialization::SubmoduleID ID, Module *Mod) override;
|
|
|
|
+
|
|
private:
|
|
private:
|
|
std::vector<ASTDeserializationListener*> Listeners;
|
|
std::vector<ASTDeserializationListener*> Listeners;
|
|
};
|
|
};
|
|
@@ -59,6 +62,12 @@ void MultiplexASTDeserializationListener::IdentifierRead(
|
|
Listeners[i]->IdentifierRead(ID, II);
|
|
Listeners[i]->IdentifierRead(ID, II);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void MultiplexASTDeserializationListener::MacroRead(
|
|
|
|
+ serialization::MacroID ID, MacroInfo *MI) {
|
|
|
|
+ for (auto &Listener : Listeners)
|
|
|
|
+ Listener->MacroRead(ID, MI);
|
|
|
|
+}
|
|
|
|
+
|
|
void MultiplexASTDeserializationListener::TypeRead(
|
|
void MultiplexASTDeserializationListener::TypeRead(
|
|
serialization::TypeIdx Idx, QualType T) {
|
|
serialization::TypeIdx Idx, QualType T) {
|
|
for (size_t i = 0, e = Listeners.size(); i != e; ++i)
|
|
for (size_t i = 0, e = Listeners.size(); i != e; ++i)
|
|
@@ -83,6 +92,12 @@ void MultiplexASTDeserializationListener::MacroDefinitionRead(
|
|
Listeners[i]->MacroDefinitionRead(ID, MD);
|
|
Listeners[i]->MacroDefinitionRead(ID, MD);
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+void MultiplexASTDeserializationListener::ModuleRead(
|
|
|
|
+ serialization::SubmoduleID ID, Module *Mod) {
|
|
|
|
+ for (auto &Listener : Listeners)
|
|
|
|
+ Listener->ModuleRead(ID, Mod);
|
|
|
|
+}
|
|
|
|
+
|
|
// This ASTMutationListener forwards its notifications to a set of
|
|
// This ASTMutationListener forwards its notifications to a set of
|
|
// child listeners.
|
|
// child listeners.
|
|
class MultiplexASTMutationListener : public ASTMutationListener {
|
|
class MultiplexASTMutationListener : public ASTMutationListener {
|
|
@@ -98,11 +113,13 @@ public:
|
|
const VarTemplateSpecializationDecl *D) override;
|
|
const VarTemplateSpecializationDecl *D) override;
|
|
void AddedCXXTemplateSpecialization(const FunctionTemplateDecl *TD,
|
|
void AddedCXXTemplateSpecialization(const FunctionTemplateDecl *TD,
|
|
const FunctionDecl *D) override;
|
|
const FunctionDecl *D) override;
|
|
|
|
+ void ResolvedExceptionSpec(const FunctionDecl *FD) override;
|
|
void DeducedReturnType(const FunctionDecl *FD, QualType ReturnType) override;
|
|
void DeducedReturnType(const FunctionDecl *FD, QualType ReturnType) override;
|
|
void CompletedImplicitDefinition(const FunctionDecl *D) override;
|
|
void CompletedImplicitDefinition(const FunctionDecl *D) override;
|
|
void StaticDataMemberInstantiated(const VarDecl *D) override;
|
|
void StaticDataMemberInstantiated(const VarDecl *D) override;
|
|
void AddedObjCCategoryToInterface(const ObjCCategoryDecl *CatD,
|
|
void AddedObjCCategoryToInterface(const ObjCCategoryDecl *CatD,
|
|
const ObjCInterfaceDecl *IFD) override;
|
|
const ObjCInterfaceDecl *IFD) override;
|
|
|
|
+ void FunctionDefinitionInstantiated(const FunctionDecl *D) override;
|
|
void AddedObjCPropertyInClassExtension(const ObjCPropertyDecl *Prop,
|
|
void AddedObjCPropertyInClassExtension(const ObjCPropertyDecl *Prop,
|
|
const ObjCPropertyDecl *OrigProp,
|
|
const ObjCPropertyDecl *OrigProp,
|
|
const ObjCCategoryDecl *ClassExt) override;
|
|
const ObjCCategoryDecl *ClassExt) override;
|
|
@@ -149,6 +166,11 @@ void MultiplexASTMutationListener::AddedCXXTemplateSpecialization(
|
|
for (size_t i = 0, e = Listeners.size(); i != e; ++i)
|
|
for (size_t i = 0, e = Listeners.size(); i != e; ++i)
|
|
Listeners[i]->AddedCXXTemplateSpecialization(TD, D);
|
|
Listeners[i]->AddedCXXTemplateSpecialization(TD, D);
|
|
}
|
|
}
|
|
|
|
+void MultiplexASTMutationListener::ResolvedExceptionSpec(
|
|
|
|
+ const FunctionDecl *FD) {
|
|
|
|
+ for (auto &Listener : Listeners)
|
|
|
|
+ Listener->ResolvedExceptionSpec(FD);
|
|
|
|
+}
|
|
void MultiplexASTMutationListener::DeducedReturnType(const FunctionDecl *FD,
|
|
void MultiplexASTMutationListener::DeducedReturnType(const FunctionDecl *FD,
|
|
QualType ReturnType) {
|
|
QualType ReturnType) {
|
|
for (size_t i = 0, e = Listeners.size(); i != e; ++i)
|
|
for (size_t i = 0, e = Listeners.size(); i != e; ++i)
|
|
@@ -170,6 +192,11 @@ void MultiplexASTMutationListener::AddedObjCCategoryToInterface(
|
|
for (size_t i = 0, e = Listeners.size(); i != e; ++i)
|
|
for (size_t i = 0, e = Listeners.size(); i != e; ++i)
|
|
Listeners[i]->AddedObjCCategoryToInterface(CatD, IFD);
|
|
Listeners[i]->AddedObjCCategoryToInterface(CatD, IFD);
|
|
}
|
|
}
|
|
|
|
+void MultiplexASTMutationListener::FunctionDefinitionInstantiated(
|
|
|
|
+ const FunctionDecl *D) {
|
|
|
|
+ for (auto &Listener : Listeners)
|
|
|
|
+ Listener->FunctionDefinitionInstantiated(D);
|
|
|
|
+}
|
|
void MultiplexASTMutationListener::AddedObjCPropertyInClassExtension(
|
|
void MultiplexASTMutationListener::AddedObjCPropertyInClassExtension(
|
|
const ObjCPropertyDecl *Prop,
|
|
const ObjCPropertyDecl *Prop,
|
|
const ObjCPropertyDecl *OrigProp,
|
|
const ObjCPropertyDecl *OrigProp,
|