diff --git a/src/constraint_solver/constraint_solver.h b/src/constraint_solver/constraint_solver.h index 17435e08fb..24b99db808 100644 --- a/src/constraint_solver/constraint_solver.h +++ b/src/constraint_solver/constraint_solver.h @@ -3828,6 +3828,8 @@ class SolutionCollector : public SearchMonitor { void Add(const std::vector& vars); void Add(IntervalVar* const var); void Add(const std::vector& vars); + void Add(SequenceVar* const var); + void Add(const std::vector& vars); void AddObjective(IntVar* const objective); // Beginning of the search. @@ -3867,6 +3869,19 @@ class SolutionCollector : public SearchMonitor { // This is a short-cut to get the PerformedValue of 'var' in the nth solution. int64 PerformedValue(int n, IntervalVar* const var) const; +#if !defined(SWIG) + // This is a short-cut to get the ForwardSequence of 'var' in the + // nth solution. + const std::vector& ForwardSequence(int n, SequenceVar* const v) const; + // This is a short-cut to get the BackwardSequence of 'var' in the + // nth solution. + const std::vector& BackwardSequence(int n, SequenceVar* const v) const; + // This is a short-cut to get the list of unperformed of 'var' in the + // nth solution. + const std::vector& Unperformed(int n, SequenceVar* const v) const; +#endif + + protected: // Push the current state as a new solution. void PushSolution(); diff --git a/src/constraint_solver/search.cc b/src/constraint_solver/search.cc index 82385b8f8b..0936ec7712 100644 --- a/src/constraint_solver/search.cc +++ b/src/constraint_solver/search.cc @@ -2285,6 +2285,18 @@ void SolutionCollector::Add(const std::vector& vars) { } } +void SolutionCollector::Add(SequenceVar* const var) { + if (prototype_.get() != NULL) { + prototype_->Add(var); + } +} + +void SolutionCollector::Add(const std::vector& vars) { + if (prototype_.get() != NULL) { + prototype_->Add(vars); + } +} + void SolutionCollector::AddObjective(IntVar* const objective) { if (prototype_.get() != NULL && objective != NULL) { prototype_->AddObjective(objective); @@ -2399,6 +2411,21 @@ int64 SolutionCollector::PerformedValue(int n, IntervalVar* const var) const { return solutions_[n]->PerformedValue(var); } +const std::vector& SolutionCollector::ForwardSequence( + int n, SequenceVar* const v) const { + return solutions_[n]->ForwardSequence(v); +} + +const std::vector& SolutionCollector::BackwardSequence( + int n, SequenceVar* const v) const { + return solutions_[n]->BackwardSequence(v); +} + +const std::vector& SolutionCollector::Unperformed( + int n, SequenceVar* const v) const { + return solutions_[n]->Unperformed(v); +} + namespace { // ----- First Solution Collector -----