Merge branch 'master' into syncad_master
This commit is contained in:
commit
541118d89d
5 changed files with 93 additions and 8 deletions
49
include/fc/container/deque.hpp
Normal file
49
include/fc/container/deque.hpp
Normal file
|
|
@ -0,0 +1,49 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <deque>
|
||||||
|
|
||||||
|
namespace fc {
|
||||||
|
namespace raw {
|
||||||
|
|
||||||
|
template<typename Stream, typename T>
|
||||||
|
inline void pack( Stream& s, const std::deque<T>& value ) {
|
||||||
|
pack( s, unsigned_int((uint32_t)value.size()) );
|
||||||
|
auto itr = value.begin();
|
||||||
|
auto end = value.end();
|
||||||
|
while( itr != end ) {
|
||||||
|
fc::raw::pack( s, *itr );
|
||||||
|
++itr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename Stream, typename T>
|
||||||
|
inline void unpack( Stream& s, std::deque<T>& value ) {
|
||||||
|
unsigned_int size; unpack( s, size );
|
||||||
|
FC_ASSERT( size.value*sizeof(T) < MAX_ARRAY_ALLOC_SIZE );
|
||||||
|
value.resize(size.value);
|
||||||
|
auto itr = value.begin();
|
||||||
|
auto end = value.end();
|
||||||
|
while( itr != end ) {
|
||||||
|
fc::raw::unpack( s, *itr );
|
||||||
|
++itr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace raw
|
||||||
|
|
||||||
|
template<typename T>
|
||||||
|
void to_variant( const std::deque<T>& var, variant& vo )
|
||||||
|
{
|
||||||
|
std::vector<variant> vars;
|
||||||
|
vars.reserve(var.size());
|
||||||
|
std::transform(var.begin(), var.end(), std::back_inserter(vars), [](const T& t) { return variant(t); });
|
||||||
|
vo = vars;
|
||||||
|
}
|
||||||
|
template<typename T>
|
||||||
|
void from_variant( const variant& var, std::deque<T>& vo )
|
||||||
|
{
|
||||||
|
const variants& vars = var.get_array();
|
||||||
|
vo.clear();
|
||||||
|
std::transform(vars.begin(), vars.end(), std::back_inserter(vo), [](const variant& t) { return t.template as<T>(); });
|
||||||
|
}
|
||||||
|
} // namespace fc
|
||||||
13
include/fc/container/deque_fwd.hpp
Normal file
13
include/fc/container/deque_fwd.hpp
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <deque>
|
||||||
|
|
||||||
|
namespace fc {
|
||||||
|
|
||||||
|
namespace raw {
|
||||||
|
template<typename Stream, typename T>
|
||||||
|
void pack( Stream& s, const std::deque<T>& value );
|
||||||
|
template<typename Stream, typename T>
|
||||||
|
void unpack( Stream& s, std::deque<T>& value );
|
||||||
|
}
|
||||||
|
} // namespace fc
|
||||||
|
|
@ -1,8 +1,10 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
#include <fc/container/flat_fwd.hpp>
|
#include <fc/container/flat_fwd.hpp>
|
||||||
|
#include <fc/container/deque_fwd.hpp>
|
||||||
#include <fc/io/varint.hpp>
|
#include <fc/io/varint.hpp>
|
||||||
#include <fc/array.hpp>
|
#include <fc/array.hpp>
|
||||||
#include <fc/safe.hpp>
|
#include <fc/safe.hpp>
|
||||||
|
#include <deque>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <string>
|
#include <string>
|
||||||
#include <unordered_set>
|
#include <unordered_set>
|
||||||
|
|
@ -40,6 +42,9 @@ namespace fc {
|
||||||
template<typename Stream, typename T> inline void pack( Stream& s, const flat_set<T>& value );
|
template<typename Stream, typename T> inline void pack( Stream& s, const flat_set<T>& value );
|
||||||
template<typename Stream, typename T> inline void unpack( Stream& s, flat_set<T>& value );
|
template<typename Stream, typename T> inline void unpack( Stream& s, flat_set<T>& value );
|
||||||
|
|
||||||
|
template<typename Stream, typename T> inline void pack( Stream& s, const std::deque<T>& value );
|
||||||
|
template<typename Stream, typename T> inline void unpack( Stream& s, std::deque<T>& value );
|
||||||
|
|
||||||
template<typename Stream, typename K, typename V> inline void pack( Stream& s, const std::unordered_map<K,V>& value );
|
template<typename Stream, typename K, typename V> inline void pack( Stream& s, const std::unordered_map<K,V>& value );
|
||||||
template<typename Stream, typename K, typename V> inline void unpack( Stream& s, std::unordered_map<K,V>& value );
|
template<typename Stream, typename K, typename V> inline void unpack( Stream& s, std::unordered_map<K,V>& value );
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,9 +1,14 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <deque>
|
||||||
|
#include <map>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
#include <fc/string.hpp>
|
#include <fc/string.hpp>
|
||||||
#include <fc/optional.hpp>
|
#include <fc/optional.hpp>
|
||||||
#include <vector>
|
|
||||||
#include <map>
|
|
||||||
#include <fc/container/flat_fwd.hpp>
|
#include <fc/container/flat_fwd.hpp>
|
||||||
|
#include <fc/container/deque_fwd.hpp>
|
||||||
|
|
||||||
namespace fc {
|
namespace fc {
|
||||||
class value;
|
class value;
|
||||||
|
|
@ -42,6 +47,14 @@ namespace fc {
|
||||||
return n.c_str();
|
return n.c_str();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
template<typename T> struct get_typename< std::deque<T> >
|
||||||
|
{
|
||||||
|
static const char* name()
|
||||||
|
{
|
||||||
|
static std::string n = std::string("std::deque<") + get_typename<T>::name() + ">";
|
||||||
|
return n.c_str();
|
||||||
|
}
|
||||||
|
};
|
||||||
template<typename T> struct get_typename<optional<T>>
|
template<typename T> struct get_typename<optional<T>>
|
||||||
{
|
{
|
||||||
static const char* name() {
|
static const char* name() {
|
||||||
|
|
|
||||||
|
|
@ -1,13 +1,18 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include <deque>
|
||||||
|
#include <map>
|
||||||
|
#include <memory>
|
||||||
|
#include <set>
|
||||||
|
#include <unordered_map>
|
||||||
|
#include <unordered_set>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
#include <string.h> // memset
|
||||||
|
|
||||||
#include <fc/optional.hpp>
|
#include <fc/optional.hpp>
|
||||||
#include <fc/string.hpp>
|
#include <fc/string.hpp>
|
||||||
#include <memory>
|
#include <fc/container/deque_fwd.hpp>
|
||||||
#include <string.h> // memset
|
|
||||||
#include <unordered_set>
|
|
||||||
#include <unordered_map>
|
|
||||||
#include <map>
|
|
||||||
#include <set>
|
|
||||||
#include <fc/container/flat_fwd.hpp>
|
#include <fc/container/flat_fwd.hpp>
|
||||||
|
|
||||||
namespace fc
|
namespace fc
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue