1 #ifndef BOOST_SERIALIZATION_LIBRARY_VERSION_TYPE_HPP 2 #define BOOST_SERIALIZATION_LIBRARY_VERSION_TYPE_HPP 3 4 // MS compatible compilers support #pragma once 5 #if defined(_MSC_VER) 6 # pragma once 7 #endif 8 9 /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 10 // library_version_type.hpp: 11 12 // (C) Copyright 2002-2020 Robert Ramey - http://www.rrsd.com . 13 // Use, modification and distribution is subject to the Boost Software 14 // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at 15 // http://www.boost.org/LICENSE_1_0.txt) 16 17 // See http://www.boost.org for updates, documentation, and revision history. 18 #include <cstring> // count 19 #include <boost/cstdint.hpp> // uint_least16_t 20 #include <boost/assert.hpp> 21 #include <boost/config.hpp> 22 #include <boost/integer_traits.hpp> 23 24 namespace boost { 25 namespace serialization { 26 27 #if defined(_MSC_VER) 28 #pragma warning( push ) 29 #pragma warning( disable : 4244 4267 ) 30 #endif 31 32 /* NOTE : Warning : Warning : Warning : Warning : Warning 33 * Don't ever changes this. If you do, they previously created 34 * binary archives won't be readable !!! 35 */ 36 class library_version_type { 37 private: 38 typedef uint_least16_t base_type; 39 base_type t; 40 public: library_version_type()41 library_version_type(): t(0) {} library_version_type(const unsigned int & t_)42 explicit library_version_type(const unsigned int & t_) : t(t_){ 43 BOOST_ASSERT(t_ <= boost::integer_traits<base_type>::const_max); 44 } library_version_type(const library_version_type & t_)45 library_version_type(const library_version_type & t_) : 46 t(t_.t) 47 {} operator =(const library_version_type & rhs)48 library_version_type & operator=(const library_version_type & rhs){ 49 t = rhs.t; 50 return *this; 51 } 52 // used for text output operator base_type() const53 operator base_type () const { 54 return t; 55 } 56 // used for text input operator base_type&()57 operator base_type & (){ 58 return t; 59 } operator ==(const library_version_type & rhs) const60 bool operator==(const library_version_type & rhs) const { 61 return t == rhs.t; 62 } operator <(const library_version_type & rhs) const63 bool operator<(const library_version_type & rhs) const { 64 return t < rhs.t; 65 } 66 }; 67 68 } // serialization 69 } // boost 70 71 #endif // BOOST_SERIALIZATION_LIBRARY_VERSION_TYPE_HPP 72