summaryrefslogtreecommitdiffstats
path: root/clang/lib/Frontend/MultiplexConsumer.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/Frontend/MultiplexConsumer.cpp')
-rw-r--r--clang/lib/Frontend/MultiplexConsumer.cpp111
1 files changed, 58 insertions, 53 deletions
diff --git a/clang/lib/Frontend/MultiplexConsumer.cpp b/clang/lib/Frontend/MultiplexConsumer.cpp
index 2930cb3952c..0e933a3f165 100644
--- a/clang/lib/Frontend/MultiplexConsumer.cpp
+++ b/clang/lib/Frontend/MultiplexConsumer.cpp
@@ -183,113 +183,118 @@ void MultiplexASTMutationListener::DeclarationMarkedUsed(const Decl *D) {
} // end namespace clang
-MultiplexConsumer::MultiplexConsumer(
- std::vector<std::unique_ptr<ASTConsumer>> C)
- : Consumers(std::move(C)), MutationListener(), DeserializationListener() {
+MultiplexConsumer::MultiplexConsumer(ArrayRef<ASTConsumer *> C)
+ : Consumers(C.begin(), C.end()), MutationListener(),
+ DeserializationListener() {
// Collect the mutation listeners and deserialization listeners of all
// children, and create a multiplex listener each if so.
std::vector<ASTMutationListener*> mutationListeners;
std::vector<ASTDeserializationListener*> serializationListeners;
- for (auto &Consumer : Consumers) {
- if (auto *mutationListener = Consumer->GetASTMutationListener())
+ for (size_t i = 0, e = Consumers.size(); i != e; ++i) {
+ ASTMutationListener* mutationListener =
+ Consumers[i]->GetASTMutationListener();
+ if (mutationListener)
mutationListeners.push_back(mutationListener);
- if (auto *serializationListener = Consumer->GetASTDeserializationListener())
+ ASTDeserializationListener* serializationListener =
+ Consumers[i]->GetASTDeserializationListener();
+ if (serializationListener)
serializationListeners.push_back(serializationListener);
}
- if (!mutationListeners.empty()) {
- MutationListener =
- llvm::make_unique<MultiplexASTMutationListener>(mutationListeners);
+ if (mutationListeners.size()) {
+ MutationListener.reset(new MultiplexASTMutationListener(mutationListeners));
}
- if (!serializationListeners.empty()) {
- DeserializationListener =
- llvm::make_unique<MultiplexASTDeserializationListener>(
- serializationListeners);
+ if (serializationListeners.size()) {
+ DeserializationListener.reset(
+ new MultiplexASTDeserializationListener(serializationListeners));
}
}
-MultiplexConsumer::~MultiplexConsumer() {}
+MultiplexConsumer::~MultiplexConsumer() {
+ for (size_t i = 0, e = Consumers.size(); i != e; ++i)
+ delete Consumers[i];
+}
void MultiplexConsumer::Initialize(ASTContext &Context) {
- for (auto &Consumer : Consumers)
- Consumer->Initialize(Context);
+ for (size_t i = 0, e = Consumers.size(); i != e; ++i)
+ Consumers[i]->Initialize(Context);
}
bool MultiplexConsumer::HandleTopLevelDecl(DeclGroupRef D) {
bool Continue = true;
- for (auto &Consumer : Consumers)
- Continue = Continue && Consumer->HandleTopLevelDecl(D);
+ for (size_t i = 0, e = Consumers.size(); i != e; ++i)
+ Continue = Continue && Consumers[i]->HandleTopLevelDecl(D);
return Continue;
}
void MultiplexConsumer::HandleInlineMethodDefinition(CXXMethodDecl *D) {
- for (auto &Consumer : Consumers)
- Consumer->HandleInlineMethodDefinition(D);
+ for (size_t i = 0, e = Consumers.size(); i != e; ++i)
+ Consumers[i]->HandleInlineMethodDefinition(D);
}
-void MultiplexConsumer::HandleCXXStaticMemberVarInstantiation(VarDecl *VD) {
- for (auto &Consumer : Consumers)
- Consumer->HandleCXXStaticMemberVarInstantiation(VD);
+void MultiplexConsumer::HandleCXXStaticMemberVarInstantiation(VarDecl *VD) {
+ for (size_t i = 0, e = Consumers.size(); i != e; ++i)
+ Consumers[i]->HandleCXXStaticMemberVarInstantiation(VD);
}
void MultiplexConsumer::HandleInterestingDecl(DeclGroupRef D) {
- for (auto &Consumer : Consumers)
- Consumer->HandleInterestingDecl(D);
+ for (size_t i = 0, e = Consumers.size(); i != e; ++i)
+ Consumers[i]->HandleInterestingDecl(D);
}
void MultiplexConsumer::HandleTranslationUnit(ASTContext &Ctx) {
- for (auto &Consumer : Consumers)
- Consumer->HandleTranslationUnit(Ctx);
+ for (size_t i = 0, e = Consumers.size(); i != e; ++i)
+ Consumers[i]->HandleTranslationUnit(Ctx);
}
void MultiplexConsumer::HandleTagDeclDefinition(TagDecl *D) {
- for (auto &Consumer : Consumers)
- Consumer->HandleTagDeclDefinition(D);
+ for (size_t i = 0, e = Consumers.size(); i != e; ++i)
+ Consumers[i]->HandleTagDeclDefinition(D);
}
void MultiplexConsumer::HandleTagDeclRequiredDefinition(const TagDecl *D) {
- for (auto &Consumer : Consumers)
- Consumer->HandleTagDeclRequiredDefinition(D);
+ for (size_t i = 0, e = Consumers.size(); i != e; ++i)
+ Consumers[i]->HandleTagDeclRequiredDefinition(D);
}
void MultiplexConsumer::HandleCXXImplicitFunctionInstantiation(FunctionDecl *D){
- for (auto &Consumer : Consumers)
- Consumer->HandleCXXImplicitFunctionInstantiation(D);
+ for (size_t i = 0, e = Consumers.size(); i != e; ++i)
+ Consumers[i]->HandleCXXImplicitFunctionInstantiation(D);
}
void MultiplexConsumer::HandleTopLevelDeclInObjCContainer(DeclGroupRef D) {
- for (auto &Consumer : Consumers)
- Consumer->HandleTopLevelDeclInObjCContainer(D);
+ for (size_t i = 0, e = Consumers.size(); i != e; ++i)
+ Consumers[i]->HandleTopLevelDeclInObjCContainer(D);
}
void MultiplexConsumer::HandleImplicitImportDecl(ImportDecl *D) {
- for (auto &Consumer : Consumers)
- Consumer->HandleImplicitImportDecl(D);
+ for (size_t i = 0, e = Consumers.size(); i != e; ++i)
+ Consumers[i]->HandleImplicitImportDecl(D);
}
void MultiplexConsumer::HandleLinkerOptionPragma(llvm::StringRef Opts) {
- for (auto &Consumer : Consumers)
- Consumer->HandleLinkerOptionPragma(Opts);
+ for (size_t i = 0, e = Consumers.size(); i != e; ++i)
+ Consumers[i]->HandleLinkerOptionPragma(Opts);
}
void MultiplexConsumer::HandleDetectMismatch(llvm::StringRef Name, llvm::StringRef Value) {
- for (auto &Consumer : Consumers)
- Consumer->HandleDetectMismatch(Name, Value);
+ for (size_t i = 0, e = Consumers.size(); i != e; ++i)
+ Consumers[i]->HandleDetectMismatch(Name, Value);
}
void MultiplexConsumer::HandleDependentLibrary(llvm::StringRef Lib) {
- for (auto &Consumer : Consumers)
- Consumer->HandleDependentLibrary(Lib);
+ for (size_t i = 0, e = Consumers.size(); i != e; ++i)
+ Consumers[i]->HandleDependentLibrary(Lib);
}
void MultiplexConsumer::CompleteTentativeDefinition(VarDecl *D) {
- for (auto &Consumer : Consumers)
- Consumer->CompleteTentativeDefinition(D);
+ for (size_t i = 0, e = Consumers.size(); i != e; ++i)
+ Consumers[i]->CompleteTentativeDefinition(D);
}
void MultiplexConsumer::HandleVTable(
CXXRecordDecl *RD, bool DefinitionRequired) {
- for (auto &Consumer : Consumers)
- Consumer->HandleVTable(RD, DefinitionRequired);
+ for (size_t i = 0, e = Consumers.size(); i != e; ++i)
+ Consumers[i]->HandleVTable(RD, DefinitionRequired);
}
ASTMutationListener *MultiplexConsumer::GetASTMutationListener() {
@@ -301,18 +306,18 @@ ASTDeserializationListener *MultiplexConsumer::GetASTDeserializationListener() {
}
void MultiplexConsumer::PrintStats() {
- for (auto &Consumer : Consumers)
- Consumer->PrintStats();
+ for (size_t i = 0, e = Consumers.size(); i != e; ++i)
+ Consumers[i]->PrintStats();
}
void MultiplexConsumer::InitializeSema(Sema &S) {
- for (auto &Consumer : Consumers)
- if (SemaConsumer *SC = dyn_cast<SemaConsumer>(Consumer.get()))
+ for (size_t i = 0, e = Consumers.size(); i != e; ++i)
+ if (SemaConsumer *SC = dyn_cast<SemaConsumer>(Consumers[i]))
SC->InitializeSema(S);
}
void MultiplexConsumer::ForgetSema() {
- for (auto &Consumer : Consumers)
- if (SemaConsumer *SC = dyn_cast<SemaConsumer>(Consumer.get()))
+ for (size_t i = 0, e = Consumers.size(); i != e; ++i)
+ if (SemaConsumer *SC = dyn_cast<SemaConsumer>(Consumers[i]))
SC->ForgetSema();
}
OpenPOWER on IntegriCloud