From 61377c582e0f2675baa5f5e6e30a35d1a4164b33 Mon Sep 17 00:00:00 2001 From: Karen Arutyunov Date: Mon, 1 May 2017 16:08:43 +0300 Subject: Add hxx extension for headers and lib prefix for library dir --- libbutl/standard-version.ixx | 100 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 100 insertions(+) create mode 100644 libbutl/standard-version.ixx (limited to 'libbutl/standard-version.ixx') diff --git a/libbutl/standard-version.ixx b/libbutl/standard-version.ixx new file mode 100644 index 0000000..5f656fa --- /dev/null +++ b/libbutl/standard-version.ixx @@ -0,0 +1,100 @@ +// file : libbutl/standard-version.ixx -*- C++ -*- +// copyright : Copyright (c) 2014-2017 Code Synthesis Ltd +// license : MIT; see accompanying LICENSE file + +namespace butl +{ + inline std::uint16_t standard_version:: + major () const noexcept + { + std::uint64_t e (version % 10); + std::uint64_t v (version / 10); + std::uint64_t ab (v % 1000); + if (ab != 0 || e == 1) + v += 1000 - ab; + + return static_cast (v / 1000000000 % 1000); + } + + inline std::uint16_t standard_version:: + minor () const noexcept + { + std::uint64_t e (version % 10); + std::uint64_t v (version / 10); + std::uint64_t ab (v % 1000); + if (ab != 0 || e == 1) + v += 1000 - ab; + + return static_cast (v / 1000000 % 1000); + } + + inline std::uint16_t standard_version:: + patch () const noexcept + { + std::uint64_t e (version % 10); + std::uint64_t v (version / 10); + std::uint64_t ab (v % 1000); + if (ab != 0 || e == 1) + v += 1000 - ab; + + return static_cast (v / 1000 % 1000); + } + + inline std::uint16_t standard_version:: + pre_release () const noexcept + { + std::uint64_t ab (version / 10 % 1000); + if (ab > 500) + ab -= 500; + + return static_cast (ab); + } + + inline bool standard_version:: + alpha () const noexcept + { + std::uint64_t abe (version % 10000); + return abe > 0 && abe < 5000 && !stub (); + } + + inline bool standard_version:: + beta () const noexcept + { + std::uint64_t abe (version % 10000); + return abe > 5000 && !stub (); + } + + inline bool standard_version:: + earliest () const noexcept + { + return version % 10000 == 1 && !snapshot () && !stub (); + } + + inline standard_version::flags + operator& (standard_version::flags x, standard_version::flags y) + { + return x &= y; + } + + inline standard_version::flags + operator| (standard_version::flags x, standard_version::flags y) + { + return x |= y; + } + + inline standard_version::flags + operator&= (standard_version::flags& x, standard_version::flags y) + { + return x = static_cast ( + static_cast (x) & + static_cast (y)); + } + + inline standard_version::flags + operator|= (standard_version::flags& x, standard_version::flags y) + { + return x = static_cast ( + static_cast (x) | + static_cast (y)); + } +} -- cgit v1.1