From 73caec68f1e8dc2bd2b9a045bdecdc2cc4f25348 Mon Sep 17 00:00:00 2001 From: Constantin Michael Date: Mon, 10 Oct 2011 14:14:49 +0200 Subject: Correct oracle_version comparison operations --- odb/option-types.hxx | 63 ++++++++++++++++++++++++++-------------------------- 1 file changed, 32 insertions(+), 31 deletions(-) (limited to 'odb/option-types.hxx') diff --git a/odb/option-types.hxx b/odb/option-types.hxx index 9d1d98c..42737f3 100644 --- a/odb/option-types.hxx +++ b/odb/option-types.hxx @@ -69,7 +69,10 @@ operator<< (std::ostream&, schema_format); // struct oracle_version { - oracle_version () {} + oracle_version (): major_ (0), minor_ (0) + { + } + oracle_version (unsigned short major, unsigned short minor) : major_ (major), minor_ (minor) { @@ -87,51 +90,49 @@ struct oracle_version return minor_; } - bool - equal (const oracle_version& x) const - { - return major_ == x.major_ && minor_ == x.minor_; - } - - bool - less (const oracle_version& x) const - { - return major_ < x.major_ || (major_ == x.major_ && minor_ < x.minor_); - } - - bool - greater (const oracle_version& x) const - { - return major_ > x.major_ || (major_ == x.major_ && minor_ > x.minor_); - } - private: unsigned short major_; unsigned short minor_; }; -bool -inline operator< (const oracle_version& x, const oracle_version& y) +inline bool +operator== (const oracle_version& x, const oracle_version& y) +{ + return x.ver_major () == y.ver_major (); +} + +inline bool +operator!= (const oracle_version& x, const oracle_version& y) +{ + return !(x == y); +} + +inline bool +operator< (const oracle_version& x, const oracle_version& y) { - return x.less (y); + return x.ver_major () < y.ver_major () || + (x.ver_major () == y.ver_major () && + x.ver_minor () < y.ver_minor ()); } -bool -inline operator> (const oracle_version& x, const oracle_version& y) +inline bool +operator> (const oracle_version& x, const oracle_version& y) { - return x.greater (y); + return x.ver_major () > y.ver_major () || + (x.ver_major () == y.ver_major () && + x.ver_minor () > y.ver_minor ()); } -bool -inline operator<= (const oracle_version& x, const oracle_version& y) +inline bool +operator<= (const oracle_version& x, const oracle_version& y) { - return !x.greater (y); + return !(x > y); } -bool -inline operator>= (const oracle_version& x, const oracle_version& y) +inline bool +operator>= (const oracle_version& x, const oracle_version& y) { - return !x.less (y); + return !(x < y); } std::istream& -- cgit v1.1