diff --git a/eo/src/gp/eoParseTree.h b/eo/src/gp/eoParseTree.h index ce9c656f..af684acf 100644 --- a/eo/src/gp/eoParseTree.h +++ b/eo/src/gp/eoParseTree.h @@ -108,15 +108,12 @@ public : */ void printOn(std::ostream& os) const { - EO::printOn(os); - /* - * old code which caused problems for paradisEO - * now we use EO::readFrom(is) - * - os << fitness() << ' '; - */ - std::copy(ebegin(), eend(), ostream_iterator(os)); + os << ' '; + + os << size() << ' '; + + std::copy(ebegin(), eend(), std::ostream_iterator(os, " ")); } /** @@ -125,20 +122,42 @@ public : */ void readFrom(std::istream& is) { - EO::readFrom(is); + + + EO::readFrom(is); + + unsigned sz; + is >> sz; + + vector v(sz); + + unsigned i; + + for (i = 0; i < sz; ++i) + { + Node node; + is >> node; + v[i] = node; + } + parse_tree tmp(v.begin(), v.end()); + swap(tmp); /* * old code which caused problems for paradisEO - * now we use EO::readFrom(is) * + * this can be removed once it has proved itself + EO::readFrom(is); + + // even older code FType fit; is >> fit; fitness(fit); - */ + std::copy(istream_iterator(is), istream_iterator(), back_inserter(*this)); + */ } };