From a9515f06d9570cb22565c1c80132aabed416d3f5 Mon Sep 17 00:00:00 2001 From: Constantin Michael Date: Thu, 6 Oct 2011 12:15:06 +0200 Subject: Implement oracle_version comparison operators and initializing constructor --- odb/option-types.hxx | 49 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 47 insertions(+), 2 deletions(-) (limited to 'odb/option-types.hxx') diff --git a/odb/option-types.hxx b/odb/option-types.hxx index 642c149..9d1d98c 100644 --- a/odb/option-types.hxx +++ b/odb/option-types.hxx @@ -69,6 +69,12 @@ operator<< (std::ostream&, schema_format); // struct oracle_version { + oracle_version () {} + oracle_version (unsigned short major, unsigned short minor) + : major_ (major), minor_ (minor) + { + } + unsigned short ver_major () const { @@ -81,14 +87,53 @@ struct oracle_version return minor_; } - friend std::istream& operator>> (std::istream&, oracle_version&); - friend std::ostream& operator<< (std::ostream&, oracle_version); + 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) +{ + return x.less (y); +} + +bool +inline operator> (const oracle_version& x, const oracle_version& y) +{ + return x.greater (y); +} + +bool +inline operator<= (const oracle_version& x, const oracle_version& y) +{ + return !x.greater (y); +} + +bool +inline operator>= (const oracle_version& x, const oracle_version& y) +{ + return !x.less (y); +} + std::istream& operator>> (std::istream&, oracle_version&); -- cgit v1.1