mirror of
https://github.com/USCiLab/cereal.git
synced 2025-09-22 21:09:33 +02:00
Changed size_t to cereal::size_type everywhere.
This is to ensure binary compatability between machines of different bit persuasions. cereal::size_type is typedef'd to uint64_t in helpers.hpp for now, but as soon as our 128 bit machines arrive we can change this with a one liner. closes #10.
This commit is contained in:
parent
8f367b6502
commit
bfe2289636
@ -36,6 +36,13 @@
|
||||
|
||||
namespace cereal
|
||||
{
|
||||
|
||||
//! The size type used by cereal
|
||||
/*! To ensure compatability between 32, 64, etc bit machines, we need to use
|
||||
* a fixed size type instead of size_t, which may vary from machine to
|
||||
* machine. */
|
||||
typedef uint64_t size_type;
|
||||
|
||||
// forward decls
|
||||
class BinaryOutputArchive;
|
||||
class BinaryInputArchive;
|
||||
|
@ -39,7 +39,7 @@ namespace cereal
|
||||
template <class Archive, class T, class A> inline
|
||||
void save( Archive & ar, std::deque<T, A> const & deque )
|
||||
{
|
||||
ar( make_size_tag( deque.size() ) );
|
||||
ar( make_size_tag( static_cast<size_type>(deque.size()) ) );
|
||||
|
||||
for( auto const & i : deque )
|
||||
ar( i );
|
||||
@ -49,7 +49,7 @@ namespace cereal
|
||||
template <class Archive, class T, class A> inline
|
||||
void load( Archive & ar, std::deque<T, A> & deque )
|
||||
{
|
||||
size_t size;
|
||||
size_type size;
|
||||
ar( make_size_tag( size ) );
|
||||
|
||||
deque.resize( size );
|
||||
|
@ -42,7 +42,7 @@ namespace cereal
|
||||
// write the size - note that this is slow because we need to traverse
|
||||
// the entire list. there are ways we could avoid this but this was chosen
|
||||
// since it works in the most general fashion with any archive type
|
||||
const size_t size = std::distance( forward_list.begin(), forward_list.end() );
|
||||
size_type const size = std::distance( forward_list.begin(), forward_list.end() );
|
||||
|
||||
ar( make_size_tag( size ) );
|
||||
|
||||
@ -55,7 +55,7 @@ namespace cereal
|
||||
template <class Archive, class T, class A>
|
||||
void load( Archive & ar, std::forward_list<T, A> & forward_list )
|
||||
{
|
||||
size_t size;
|
||||
size_type size;
|
||||
ar( make_size_tag( size ) );
|
||||
|
||||
forward_list.resize( size );
|
||||
|
@ -39,7 +39,7 @@ namespace cereal
|
||||
template <class Archive, class T, class A> inline
|
||||
void save( Archive & ar, std::list<T, A> const & list )
|
||||
{
|
||||
ar( make_size_tag( list.size() ) );
|
||||
ar( make_size_tag( static_cast<size_type>(list.size()) ) );
|
||||
|
||||
for( auto const & i : list )
|
||||
ar( i );
|
||||
@ -49,7 +49,7 @@ namespace cereal
|
||||
template <class Archive, class T, class A> inline
|
||||
void load( Archive & ar, std::list<T, A> & list )
|
||||
{
|
||||
size_t size;
|
||||
size_type size;
|
||||
ar( make_size_tag( size ) );
|
||||
|
||||
list.resize( size );
|
||||
|
@ -41,7 +41,7 @@ namespace cereal
|
||||
template <class Archive, class MapT> inline
|
||||
void save( Archive & ar, MapT const & map )
|
||||
{
|
||||
ar( make_size_tag( map.size() ) );
|
||||
ar( make_size_tag( static_cast<size_type>(map.size()) ) );
|
||||
|
||||
for( const auto & i : map )
|
||||
{
|
||||
@ -53,7 +53,7 @@ namespace cereal
|
||||
template <class Archive, class MapT> inline
|
||||
void load( Archive & ar, MapT & map )
|
||||
{
|
||||
size_t size;
|
||||
size_type size;
|
||||
ar( make_size_tag( size ) );
|
||||
|
||||
map.clear();
|
||||
|
@ -41,7 +41,7 @@ namespace cereal
|
||||
template <class Archive, class SetT> inline
|
||||
void save( Archive & ar, SetT const & set )
|
||||
{
|
||||
ar( make_size_tag( set.size() ) );
|
||||
ar( make_size_tag( static_cast<size_type>(set.size()) ) );
|
||||
|
||||
for( const auto & i : set )
|
||||
ar( i );
|
||||
@ -51,13 +51,13 @@ namespace cereal
|
||||
template <class Archive, class SetT> inline
|
||||
void load( Archive & ar, SetT & set )
|
||||
{
|
||||
size_t size;
|
||||
size_type size;
|
||||
ar( make_size_tag( size ) );
|
||||
|
||||
set.clear();
|
||||
|
||||
auto hint = set.begin();
|
||||
for( size_t i = 0; i < size; ++i )
|
||||
for( size_type i = 0; i < size; ++i )
|
||||
{
|
||||
typename SetT::key_type key;
|
||||
|
||||
|
@ -41,7 +41,7 @@ namespace cereal
|
||||
save(Archive & ar, std::basic_string<CharT, Traits, Alloc> const & str)
|
||||
{
|
||||
// Save number of chars + the data
|
||||
ar( make_size_tag( str.size() ) );
|
||||
ar( make_size_tag( static_cast<size_type>(str.size()) ) );
|
||||
ar( binary_data( str.data(), str.size() * sizeof(CharT) ) );
|
||||
}
|
||||
|
||||
@ -50,7 +50,7 @@ namespace cereal
|
||||
typename std::enable_if<traits::is_input_serializable<BinaryData<CharT>, Archive>(), void>::type
|
||||
load(Archive & ar, std::basic_string<CharT, Traits, Alloc> & str)
|
||||
{
|
||||
size_t size;
|
||||
size_type size;
|
||||
ar( make_size_tag( size ) );
|
||||
str.resize(size);
|
||||
ar( binary_data( &(*str.begin()), size * sizeof(CharT) ) );
|
||||
|
@ -41,7 +41,7 @@ namespace cereal
|
||||
template <class Archive, class MapT> inline
|
||||
void save( Archive & ar, MapT const & map )
|
||||
{
|
||||
ar( make_size_tag( map.size() ) );
|
||||
ar( make_size_tag( static_cast<size_type>(map.size()) ) );
|
||||
|
||||
for( const auto & i : map )
|
||||
ar( make_map_item(i.first, i.second) );
|
||||
@ -51,13 +51,13 @@ namespace cereal
|
||||
template <class Archive, class MapT> inline
|
||||
void load( Archive & ar, MapT & map )
|
||||
{
|
||||
size_t size;
|
||||
size_type size;
|
||||
ar( make_size_tag( size ) );
|
||||
|
||||
map.clear();
|
||||
map.reserve( size );
|
||||
|
||||
for( size_t i = 0; i < size; ++i )
|
||||
for( size_type i = 0; i < size; ++i )
|
||||
{
|
||||
typename MapT::key_type key;
|
||||
typename MapT::mapped_type value;
|
||||
|
@ -41,7 +41,7 @@ namespace cereal
|
||||
template <class Archive, class SetT> inline
|
||||
void save( Archive & ar, SetT const & set )
|
||||
{
|
||||
ar( make_size_tag( set.size() ) );
|
||||
ar( make_size_tag( static_cast<size_type>(set.size()) ) );
|
||||
|
||||
for( const auto & i : set )
|
||||
ar( i );
|
||||
@ -51,13 +51,13 @@ namespace cereal
|
||||
template <class Archive, class SetT> inline
|
||||
void load( Archive & ar, SetT & set )
|
||||
{
|
||||
size_t size;
|
||||
size_type size;
|
||||
ar( make_size_tag( size ) );
|
||||
|
||||
set.clear();
|
||||
set.reserve( size );
|
||||
|
||||
for( size_t i = 0; i < size; ++i )
|
||||
for( size_type i = 0; i < size; ++i )
|
||||
{
|
||||
typename SetT::key_type key;
|
||||
|
||||
|
@ -41,7 +41,7 @@ namespace cereal
|
||||
&& std::is_arithmetic<T>::value && !std::is_same<T, bool>::value, void>::type
|
||||
save( Archive & ar, std::vector<T, A> const & vector )
|
||||
{
|
||||
ar( make_size_tag( vector.size() ) ); // number of elements
|
||||
ar( make_size_tag( static_cast<size_type>(vector.size()) ) ); // number of elements
|
||||
ar( binary_data( vector.data(), vector.size() * sizeof(T) ) );
|
||||
}
|
||||
|
||||
@ -51,7 +51,7 @@ namespace cereal
|
||||
&& std::is_arithmetic<T>::value && !std::is_same<T, bool>::value, void>::type
|
||||
load( Archive & ar, std::vector<T, A> & vector )
|
||||
{
|
||||
size_t vectorSize;
|
||||
size_type vectorSize;
|
||||
ar( make_size_tag( vectorSize ) );
|
||||
|
||||
vector.resize( vectorSize );
|
||||
@ -65,7 +65,7 @@ namespace cereal
|
||||
|| std::is_same<T, bool>::value, void>::type
|
||||
save( Archive & ar, std::vector<T, A> const & vector )
|
||||
{
|
||||
ar( make_size_tag( vector.size() ) ); // number of elements
|
||||
ar( make_size_tag( static_cast<size_type>(vector.size()) ) ); // number of elements
|
||||
for( auto it = vector.begin(), end = vector.end(); it != end; ++it )
|
||||
ar( *it );
|
||||
}
|
||||
@ -77,7 +77,7 @@ namespace cereal
|
||||
|| std::is_same<T, bool>::value, void>::type
|
||||
load( Archive & ar, std::vector<T, A> & vector )
|
||||
{
|
||||
size_t size;
|
||||
size_type size;
|
||||
ar( make_size_tag( size ) );
|
||||
|
||||
vector.resize( size );
|
||||
|
Loading…
x
Reference in New Issue
Block a user