
Module: ppl/ppl Branch: pip Commit: da5f1817645d61f8b0f89d474d4006f8d244e1c2 URL: http://www.cs.unipr.it/git/gitweb.cgi?p=ppl/ppl.git;a=commit;h=da5f1817645d6...
Author: François Galea francois.galea@uvsq.fr Date: Tue Nov 10 16:07:17 2009 +0100
Made use of virtual methods in PIP_Tree_Node::clone().
---
src/PIP_Tree.cc | 13 +------------ src/PIP_Tree.defs.hh | 6 +++--- 2 files changed, 4 insertions(+), 15 deletions(-)
diff --git a/src/PIP_Tree.cc b/src/PIP_Tree.cc index 24cc78b..cd985bf 100644 --- a/src/PIP_Tree.cc +++ b/src/PIP_Tree.cc @@ -624,22 +624,11 @@ PIP_Tree_Node::ascii_load(std::istream& s) { }
PIP_Tree_Node* -PIP_Tree_Node::clone() const { - const PIP_Solution_Node* as_s = as_solution(); - if (as_s != 0) - return as_s->clone(); - const PIP_Decision_Node* as_d = as_decision(); - if (as_d != 0) - return as_d->clone(); - return 0; -} - -PIP_Solution_Node* PIP_Solution_Node::clone() const { return new PIP_Solution_Node(*this); }
-PIP_Decision_Node* +PIP_Tree_Node* PIP_Decision_Node::clone() const { return new PIP_Decision_Node(*this); } diff --git a/src/PIP_Tree.defs.hh b/src/PIP_Tree.defs.hh index 5711c8f..f0b4046 100644 --- a/src/PIP_Tree.defs.hh +++ b/src/PIP_Tree.defs.hh @@ -132,7 +132,7 @@ public: bool ascii_load(std::istream& s);
//! Returns a pointer to a dynamically-allocated copy of \p *this. - PIP_Tree_Node* clone() const; + virtual PIP_Tree_Node* clone() const = 0;
protected: //! Default constructor. @@ -245,7 +245,7 @@ public: bool ascii_load(std::istream& s);
//! Returns a pointer to a dynamically-allocated copy of \p *this. - PIP_Solution_Node* clone() const; + virtual PIP_Tree_Node* clone() const;
bool OK() const;
@@ -475,7 +475,7 @@ public: PIP_Tree_Node* child_node(bool v);
//! Returns a pointer to a dynamically-allocated copy of \p *this. - PIP_Decision_Node* clone() const; + virtual PIP_Tree_Node* clone() const;
bool OK() const;