return false;
}
- if (CheckDependencyCycle(node, stack, err))
+ if (CheckDependencyCycle(node, *stack, err))
return false;
if (edge->outputs_ready())
return true;
}
-bool Plan::CheckDependencyCycle(Node* node, vector<Node*>* stack, string* err) {
- vector<Node*>::reverse_iterator ri =
- find(stack->rbegin(), stack->rend(), node);
- if (ri == stack->rend())
+bool Plan::CheckDependencyCycle(Node* node, const vector<Node*>& stack,
+ string* err) {
+ vector<Node*>::const_reverse_iterator ri =
+ find(stack.rbegin(), stack.rend(), node);
+ if (ri == stack.rend())
return false;
- vector<Node*>::iterator start = find(stack->begin(), stack->end(), node);
+ vector<Node*>::const_iterator start = find(stack.begin(), stack.end(), node);
*err = "dependency cycle: ";
- for (vector<Node*>::iterator i = start; i != stack->end(); ++i) {
+ for (vector<Node*>::const_iterator i = start; i != stack.end(); ++i) {
err->append((*i)->path());
err->append(" -> ");
}
private:
bool AddSubTarget(Node* node, vector<Node*>* stack, string* err);
- bool CheckDependencyCycle(Node* node, vector<Node*>* stack, string* err);
+ bool CheckDependencyCycle(Node* node, const vector<Node*>& stack,
+ string* err);
void NodeFinished(Node* node);
/// Submits a ready edge as a candidate for execution.