diff --git a/eo/src/eoFixedLength.h b/eo/src/eoFixedLength.h index 1a00d376..0754a6c3 100644 --- a/eo/src/eoFixedLength.h +++ b/eo/src/eoFixedLength.h @@ -40,7 +40,7 @@ class eoFixedLength : public EO, public std::vector { public : - typedef typename GeneType Type; + typedef GeneType Type; /// to avoid conflicts between EO::operator< and vector::operator< bool operator<(const eoFixedLength& _eo) const @@ -48,6 +48,31 @@ class eoFixedLength : public EO, public std::vector return EO::operator<(_eo); } + /// printing... + void printOn(ostream& os) const + { + EO::printOn(os); + os << ' '; + + os << size() << ' '; + + std::copy(begin(), end(), ostream_iterator(os)); + } + + /// reading... + void readFrom(istream& is) + { + EO::readFrom(is); + + unsigned sz; + is >> sz; + + resize(sz); + unsigned i; + + for (i = 0; i < sz; ++i) + is >> operator[](i); + } }; /// to avoid conflicts between EO::operator< and vector::operator< diff --git a/eo/src/es/eoEsFull.h b/eo/src/es/eoEsFull.h index 67ba3290..9328f19b 100644 --- a/eo/src/es/eoEsFull.h +++ b/eo/src/es/eoEsFull.h @@ -40,6 +40,7 @@ template class eoEsFull : public eoFixedLength { public : + typedef double Type; eoEsFull(void) : eoFixedLength() {} @@ -47,10 +48,8 @@ class eoEsFull : public eoFixedLength void printOn(std::ostream& os) const { - os << size() << ' '; + eoFixedLength::printOn(os); - std::copy(begin(), end(), std::ostream_iterator(os)); - os << ' '; std::copy(stdevs.begin(), stdevs.end(), std::ostream_iterator(os)); @@ -63,21 +62,15 @@ class eoEsFull : public eoFixedLength void readFrom(istream& is) { - unsigned sz; - is >> sz; + eoFixedLength::readFrom(is); + + stdevs.resize(size()); - resize(sz); unsigned i; - - for (i = 0; i < sz; ++i) - is >> operator[](i); - - stdevs.resize(sz); - - for (i = 0; i < sz; ++i) + for (i = 0; i < size(); ++i) is >> stdevs[i]; - correlations.resize(sz*(sz - 1) / 2); + correlations.resize(size()*(size() - 1) / 2); for (i = 0; i < correlations.size(); ++i) is >> correlations[i]; diff --git a/eo/src/es/eoEsSimple.h b/eo/src/es/eoEsSimple.h index 8516dcf0..2f337fb0 100644 --- a/eo/src/es/eoEsSimple.h +++ b/eo/src/es/eoEsSimple.h @@ -48,29 +48,22 @@ class eoEsSimple : public eoFixedLength { public : + typedef double Type; + eoEsSimple(void) : eoFixedLength() {} std::string className(void) const { return "eoEsSimple"; } - void printOn(ostream& os) const + void printOn(std::ostream& os) const { - os << size() << ' '; + eoFixedLength::printOn(os); - std::copy(begin(), end(), ostream_iterator(os)); - os << ' ' << stdev << ' '; } void readFrom(istream& is) { - unsigned sz; - is >> sz; - - resize(sz); - unsigned i; - - for (i = 0; i < sz; ++i) - is >> operator[](i); + eoFixedLength::readFrom(is); is >> stdev; } diff --git a/eo/src/es/eoEsStdev.h b/eo/src/es/eoEsStdev.h index 9c998ffd..4d38c502 100644 --- a/eo/src/es/eoEsStdev.h +++ b/eo/src/es/eoEsStdev.h @@ -40,16 +40,16 @@ template class eoEsStdev : public eoFixedLength { public : - + + typedef double Type; + eoEsStdev(void) : eoFixedLength() {} std::string className(void) const { return "eoEsStdev"; } void printOn(std::ostream& os) const { - os << size() << ' '; - - std::copy(begin(), end(), std::ostream_iterator(os)); + eoFixedLength::printOn(os); os << ' '; std::copy(stdevs.begin(), stdevs.end(), std::ostream_iterator(os)); @@ -59,18 +59,11 @@ class eoEsStdev : public eoFixedLength void readFrom(istream& is) { - unsigned sz; - is >> sz; + eoFixedLength::readFrom(is); + stdevs.resize(size()); - resize(sz); unsigned i; - - for (i = 0; i < sz; ++i) - is >> operator[](i); - - stdevs.resize(sz); - - for (i = 0; i < sz; ++i) + for (i = 0; i < size(); ++i) is >> stdevs[i]; }