From db301b68d3a8f9d95a73087b415ffafca30fca37 Mon Sep 17 00:00:00 2001 From: Daniel Burrows Date: Sat, 30 Jan 2010 18:54:30 -0800 Subject: Write the code to dump a tier operation to an ostream. --- src/generic/problemresolver/tier_operation.cc | 29 +++++++++++++++++++++++++++ src/generic/problemresolver/tier_operation.h | 8 ++++++++ 2 files changed, 37 insertions(+) (limited to 'src/generic/problemresolver') diff --git a/src/generic/problemresolver/tier_operation.cc b/src/generic/problemresolver/tier_operation.cc index 4b619ccf..786c2a9a 100644 --- a/src/generic/problemresolver/tier_operation.cc +++ b/src/generic/problemresolver/tier_operation.cc @@ -20,6 +20,8 @@ #include "tier_operation.h" +#include + tier tier_operation::levelwise_maximum(const tier &t1, const tier &t2) { const int out_structural_level = @@ -123,3 +125,30 @@ tier tier_operation::apply(const tier &t) const const tier increased = levelwise_maximum(t, increase_levels); return levelwise_add(t, add_levels); } + +void tier_operation::dump(std::ostream &out) const +{ + out << "("; + + bool first = true; + + if(increase_levels != tier()) + { + out << "increase: " << increase_levels; + first = false; + } + + if(add_levels != tier(0)) + { + if(first) + out << ", "; + out << "add: " << add_levels; + } +} + +std::ostream &operator<<(std::ostream &out, const tier_operation &t) +{ + t.dump(out); + + return out; +} diff --git a/src/generic/problemresolver/tier_operation.h b/src/generic/problemresolver/tier_operation.h index 57be296c..8ad5dc67 100644 --- a/src/generic/problemresolver/tier_operation.h +++ b/src/generic/problemresolver/tier_operation.h @@ -23,6 +23,8 @@ #include "exceptions.h" #include "tier.h" +#include + /** \brief A tier operation describes how any solution's tier will * change as a result of adding a choice. * @@ -149,6 +151,12 @@ public: * \param t The tier that this operation should modify. */ tier apply(const tier &t) const; + + /** \brief Write a description of a tier operation to an ostream. + */ + void dump(std::ostream &out) const; }; +std::ostream &operator<<(std::ostream &out, const tier_operation &t); + #endif // TIER_OPERATION_H -- cgit v1.2.3