#pragma once #include #include #include #include #include #include #include #include #include #include #include #define MAX_ARRAY_ALLOC_SIZE (1024*1024*10) namespace fc { class time_point; class time_point_sec; class variant; class variant_object; class path; template class static_variant; template class enum_type; namespace ip { class endpoint; } namespace ecc { class public_key; class private_key; } template class fixed_string; namespace raw { template inline size_t pack_size( const T& v ); template inline void pack( Stream& s, const fc::fixed_string& u ); template inline void unpack( Stream& s, fc::fixed_string& u ); template inline void pack( Stream& s, const fc::enum_type& tp ); template inline void unpack( Stream& s, fc::enum_type& tp ); template inline void pack( Stream& s, const std::set& value ); template inline void unpack( Stream& s, std::set& value ); template inline void pack( Stream& s, const std::unordered_set& value ); template inline void unpack( Stream& s, std::unordered_set& value ); template void pack( Stream& s, const static_variant& sv ); template void unpack( Stream& s, static_variant& sv ); template inline void pack( Stream& s, const flat_set& value ); template inline void unpack( Stream& s, flat_set& value ); template inline void pack( Stream& s, const std::deque& value ); template inline void unpack( Stream& s, std::deque& value ); template inline void pack( Stream& s, const std::unordered_map& value ); template inline void unpack( Stream& s, std::unordered_map& value ); template inline void pack( Stream& s, const std::map& value ); template inline void unpack( Stream& s, std::map& value ); template inline void pack( Stream& s, const flat_map& value ); template inline void unpack( Stream& s, flat_map& value ); template inline void pack( Stream& s, const std::pair& value ); template inline void unpack( Stream& s, std::pair& value ); template inline void pack( Stream& s, const variant_object& v ); template inline void unpack( Stream& s, variant_object& v ); template inline void pack( Stream& s, const variant& v ); template inline void unpack( Stream& s, variant& v ); template inline void pack( Stream& s, const path& v ); template inline void unpack( Stream& s, path& v ); template inline void pack( Stream& s, const ip::endpoint& v ); template inline void unpack( Stream& s, ip::endpoint& v ); template void unpack( Stream& s, fc::optional& v ); template void unpack( Stream& s, const T& v ); template void pack( Stream& s, const fc::optional& v ); template void pack( Stream& s, const safe& v ); template void unpack( Stream& s, fc::safe& v ); template void unpack( Stream& s, time_point& ); template void pack( Stream& s, const time_point& ); template void unpack( Stream& s, time_point_sec& ); template void pack( Stream& s, const time_point_sec& ); template void unpack( Stream& s, std::string& ); template void pack( Stream& s, const std::string& ); template void unpack( Stream& s, fc::ecc::public_key& ); template void pack( Stream& s, const fc::ecc::public_key& ); template void unpack( Stream& s, fc::ecc::private_key& ); template void pack( Stream& s, const fc::ecc::private_key& ); template inline void pack( Stream& s, const T& v ); template inline void unpack( Stream& s, T& v ); template inline void pack( Stream& s, const std::vector& v ); template inline void unpack( Stream& s, std::vector& v ); template inline void pack( Stream& s, const signed_int& v ); template inline void unpack( Stream& s, signed_int& vi ); template inline void pack( Stream& s, const unsigned_int& v ); template inline void unpack( Stream& s, unsigned_int& vi ); template inline void pack( Stream& s, const char* v ); template inline void pack( Stream& s, const std::vector& value ); template inline void unpack( Stream& s, std::vector& value ); template inline void pack( Stream& s, const fc::array& v); template inline void unpack( Stream& s, fc::array& v); template inline void pack( Stream& s, const bool& v ); template inline void unpack( Stream& s, bool& v ); template inline std::vector pack( const T& v ); template inline T unpack( const std::vector& s ); template inline T unpack( const char* d, uint32_t s ); template inline void unpack( const char* d, uint32_t s, T& v ); } }