Skip to content

Commit 46448bc

Browse files
arhagheifner
authored andcommitted
clean up (de)serialization of std::map
1 parent d93c04b commit 46448bc

File tree

1 file changed

+35
-36
lines changed

1 file changed

+35
-36
lines changed

contracts/eosiolib/datastream.hpp

+35-36
Original file line numberDiff line numberDiff line change
@@ -469,28 +469,6 @@ DataStream& operator >> ( DataStream& ds, std::array<T,N>& v ) {
469469
return ds;
470470
}
471471

472-
template<typename DataStream, typename K, typename V>
473-
DataStream& operator<<( DataStream& ds, const boost::container::flat_map<K,V>& m ) {
474-
ds << unsigned_int( m.size() );
475-
for( const auto& i : m )
476-
ds << i.first << i.second;
477-
return ds;
478-
}
479-
template<typename DataStream, typename K, typename V>
480-
DataStream& operator>>( DataStream& ds, boost::container::flat_map<K,V>& m ) {
481-
m.clear();
482-
unsigned_int s; ds >> s;
483-
484-
for( uint32_t i = 0; i < s.value; ++i ) {
485-
K k; V v;
486-
ds >> k >> v;
487-
m.emplace( std::move(k), std::move(v) );
488-
}
489-
return ds;
490-
}
491-
492-
493-
494472
template<typename DataStream, typename T>
495473
DataStream& operator << ( DataStream& ds, const vector<T>& v ) {
496474
ds << unsigned_int( v.size() );
@@ -509,24 +487,45 @@ DataStream& operator >> ( DataStream& ds, vector<T>& v ) {
509487
return ds;
510488
}
511489

512-
template<typename DataStream, typename T, typename U>
513-
DataStream& operator << ( DataStream& ds, const std::map<T,U>& v ) {
514-
ds << unsigned_int( v.size() );
515-
for( const auto& i : v ) {
516-
ds << i.first;
517-
ds << i.second;
490+
template<typename DataStream, typename K, typename V>
491+
DataStream& operator << ( DataStream& ds, const std::map<K,V>& m ) {
492+
ds << unsigned_int( m.size() );
493+
for( const auto& i : m ) {
494+
ds << i.first << i.second;
518495
}
519496
return ds;
520497
}
521498

522-
template<typename DataStream, typename T, typename U>
523-
DataStream& operator >> ( DataStream& ds, std::map<T,U>& v ) {
524-
unsigned_int s;
525-
ds >> s;
526-
for (uint32_t i = 0; i < s; ++i) {
527-
T t;
528-
ds >> t;
529-
ds >> v[t];
499+
template<typename DataStream, typename K, typename V>
500+
DataStream& operator >> ( DataStream& ds, std::map<K,V>& m ) {
501+
m.clear();
502+
unsigned_int s; ds >> s;
503+
504+
for (uint32_t i = 0; i < s.value; ++i) {
505+
K k; V v;
506+
ds >> k >> v;
507+
m.emplace( std::move(k), std::move(v) );
508+
}
509+
return ds;
510+
}
511+
512+
template<typename DataStream, typename K, typename V>
513+
DataStream& operator<<( DataStream& ds, const boost::container::flat_map<K,V>& m ) {
514+
ds << unsigned_int( m.size() );
515+
for( const auto& i : m )
516+
ds << i.first << i.second;
517+
return ds;
518+
}
519+
520+
template<typename DataStream, typename K, typename V>
521+
DataStream& operator>>( DataStream& ds, boost::container::flat_map<K,V>& m ) {
522+
m.clear();
523+
unsigned_int s; ds >> s;
524+
525+
for( uint32_t i = 0; i < s.value; ++i ) {
526+
K k; V v;
527+
ds >> k >> v;
528+
m.emplace( std::move(k), std::move(v) );
530529
}
531530
return ds;
532531
}

0 commit comments

Comments
 (0)