#ifndef BOOST_SERIALIZATION_ARRAY_HPP #define BOOST_SERIALIZATION_ARRAY_HPP // (C) Copyright 2005 Matthias Troyer and Dave Abrahams // Use, modification and distribution is subject to the Boost Software // License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at // http://www.boost.org/LICENSE_1_0.txt) #include #include #include #include #include #include #include namespace boost { namespace serialization { template class array : public wrapper_traits > { public: typedef T value_type; array(value_type* t, std::size_t s) : m_t(t), m_element_count(s) {} // default implementation template void serialize(Archive &ar, const unsigned int) const { // default implemention does the loop std::size_t c = count(); value_type * t = address(); while(0 < c--) ar & make_nvp("item", *t++); } value_type* address() const { return m_t; } std::size_t count() const { return m_element_count; } private: value_type* m_t; std::size_t const m_element_count; }; template inline #ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING const #endif array make_array( T* t, std::size_t s){ return array(t, s); } /////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8 // T[N] /* template void save( Archive & ar, U const (& t)[N], const unsigned int file_version ) { const serialization::collection_size_type count(N); ar << BOOST_SERIALIZATION_NVP(count); if (N) ar << serialization::make_array(&t[0],N); } template void load( Archive & ar, U (& t)[N], const unsigned int file_version ) { serialization::collection_size_type count; ar >> BOOST_SERIALIZATION_NVP(count); if(count > N) boost::throw_exception(archive::archive_exception( boost::archive::archive_exception::array_size_too_short )); if (N) ar >> serialization::make_array(&t[0],count); } // split non-intrusive serialization function member into separate // non intrusive save/load member functions template inline void serialize( Archive & ar, U (& t)[N], const unsigned int file_version) { boost::serialization::split_free(ar, t, file_version); } */ } } // end namespace boost::serialization #endif //BOOST_SERIALIZATION_ARRAY_HPP