[PPL-devel] [GIT] ppl/ppl(master): Declare pure virtual methods in abstract base classes.
Enea Zaffanella
zaffanella at cs.unipr.it
Wed Feb 22 09:26:20 CET 2012
Module: ppl/ppl
Branch: master
Commit: 7214979d8337182cd1592292abdaabc772c0f94c
URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=7214979d8337182cd1592292abdaabc772c0f94c
Author: Enea Zaffanella <zaffanella at cs.unipr.it>
Date: Wed Feb 22 09:21:44 2012 +0100
Declare pure virtual methods in abstract base classes.
Override them only once in derived classes.
Detected by ECLAIR service ovrdonce.
---
src/PIP_Tree.cc | 16 ++++++++--------
src/PIP_Tree.defs.hh | 14 ++++++++++----
2 files changed, 18 insertions(+), 12 deletions(-)
diff --git a/src/PIP_Tree.cc b/src/PIP_Tree.cc
index 77bd698..f4b2f28 100644
--- a/src/PIP_Tree.cc
+++ b/src/PIP_Tree.cc
@@ -1051,23 +1051,23 @@ PIP_Decision_Node::check_ownership(const PIP_Problem* owner) const {
&& (true_child == 0 || true_child->check_ownership(owner));
}
-const PIP_Solution_Node*
-PIP_Tree_Node::as_solution() const {
- return 0;
+const PIP_Decision_Node*
+PIP_Decision_Node::as_decision() const {
+ return this;
}
const PIP_Decision_Node*
-PIP_Tree_Node::as_decision() const {
+PIP_Solution_Node::as_decision() const {
return 0;
}
const PIP_Solution_Node*
-PIP_Solution_Node::as_solution() const {
- return this;
+PIP_Decision_Node::as_solution() const {
+ return 0;
}
-const PIP_Decision_Node*
-PIP_Decision_Node::as_decision() const {
+const PIP_Solution_Node*
+PIP_Solution_Node::as_solution() const {
return this;
}
diff --git a/src/PIP_Tree.defs.hh b/src/PIP_Tree.defs.hh
index 043895b..226d439 100644
--- a/src/PIP_Tree.defs.hh
+++ b/src/PIP_Tree.defs.hh
@@ -74,13 +74,13 @@ public:
virtual ~PIP_Tree_Node();
//! Returns \c true if and only if \p *this is well formed.
- virtual bool OK() const;
+ virtual bool OK() const = 0;
//! Returns \p this if \p *this is a solution node, 0 otherwise.
- virtual const PIP_Solution_Node* as_solution() const;
+ virtual const PIP_Solution_Node* as_solution() const = 0;
//! Returns \p this if \p *this is a decision node, 0 otherwise.
- virtual const PIP_Decision_Node* as_decision() const;
+ virtual const PIP_Decision_Node* as_decision() const = 0;
/*! \brief
Returns the system of parameter constraints controlling \p *this.
@@ -242,7 +242,7 @@ protected:
virtual void print_tree(std::ostream& s,
unsigned indent,
const std::vector<bool>& pip_dim_is_param,
- dimension_type first_art_dim) const;
+ dimension_type first_art_dim) const = 0;
//! A helper function used when printing PIP trees.
static void
@@ -368,6 +368,9 @@ public:
//! Returns \p this.
virtual const PIP_Solution_Node* as_solution() const;
+ //! Returns 0, since \p this is not a decision node.
+ virtual const PIP_Decision_Node* as_decision() const;
+
/*! \brief
Returns a parametric expression for the values of problem variable \p var.
@@ -708,6 +711,9 @@ public:
//! Returns \p this.
virtual const PIP_Decision_Node* as_decision() const;
+ //! Returns 0, since \p this is not a solution node.
+ virtual const PIP_Solution_Node* as_solution() const;
+
//! Returns a const pointer to the \p b (true or false) branch of \p *this.
const PIP_Tree_Node* child_node(bool b) const;
More information about the PPL-devel
mailing list