the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 107 lines 4.4 kB view raw
1#ifndef BOOST_SERIALIZATION_VERSION_HPP 2#define BOOST_SERIALIZATION_VERSION_HPP 3 4// MS compatible compilers support #pragma once 5#if defined(_MSC_VER) && (_MSC_VER >= 1020) 6# pragma once 7#endif 8 9/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 10// version.hpp: 11 12// (C) Copyright 2002 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 19#include <boost/config.hpp> 20#include <boost/mpl/assert.hpp> 21#include <boost/mpl/int.hpp> 22#include <boost/mpl/eval_if.hpp> 23#include <boost/mpl/identity.hpp> 24#include <boost/mpl/integral_c_tag.hpp> 25 26#include <boost/type_traits/is_base_and_derived.hpp> 27 28namespace boost { 29namespace serialization { 30 31struct basic_traits; 32 33// default version number is 0. Override with higher version 34// when class definition changes. 35template<class T> 36struct version 37{ 38 template<class U> 39 struct traits_class_version { 40 typedef BOOST_DEDUCED_TYPENAME U::version type; 41 }; 42 43 typedef mpl::integral_c_tag tag; 44 // note: at least one compiler complained w/o the full qualification 45 // on basic traits below 46 typedef 47 BOOST_DEDUCED_TYPENAME mpl::eval_if< 48 is_base_and_derived<boost::serialization::basic_traits,T>, 49 traits_class_version< T >, 50 mpl::int_<0> 51 >::type type; 52 BOOST_STATIC_CONSTANT(int, value = version::type::value); 53}; 54 55#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION 56template<class T> 57const int version<T>::value; 58#endif 59 60} // namespace serialization 61} // namespace boost 62 63/* note: at first it seemed that this would be a good place to trap 64 * as an error an attempt to set a version # for a class which doesn't 65 * save its class information (including version #) in the archive. 66 * However, this imposes a requirement that the version be set after 67 * the implemention level which would be pretty confusing. If this 68 * is to be done, do this check in the input or output operators when 69 * ALL the serialization traits are available. Included the implementation 70 * here with this comment as a reminder not to do this! 71 */ 72//#include <boost/serialization/level.hpp> 73//#include <boost/mpl/equal_to.hpp> 74 75#include <boost/mpl/less.hpp> 76#include <boost/mpl/comparison.hpp> 77 78// specify the current version number for the class 79// version numbers limited to 8 bits !!! 80#define BOOST_CLASS_VERSION(T, N) \ 81namespace boost { \ 82namespace serialization { \ 83template<> \ 84struct version<T > \ 85{ \ 86 typedef mpl::int_<N> type; \ 87 typedef mpl::integral_c_tag tag; \ 88 BOOST_STATIC_CONSTANT(int, value = version::type::value); \ 89 BOOST_MPL_ASSERT(( \ 90 boost::mpl::less< \ 91 boost::mpl::int_<N>, \ 92 boost::mpl::int_<256> \ 93 > \ 94 )); \ 95 /* \ 96 BOOST_MPL_ASSERT(( \ 97 mpl::equal_to< \ 98 :implementation_level<T >, \ 99 mpl::int_<object_class_info> \ 100 >::value \ 101 )); \ 102 */ \ 103}; \ 104} \ 105} 106 107#endif // BOOST_SERIALIZATION_VERSION_HPP