14 #include <unordered_map>
17 #pragma GCC diagnostic push
18 #pragma GCC diagnostic ignored "-Wunused-parameter"
19 #include <boost/multiprecision/cpp_int.hpp>
21 #pragma GCC diagnostic pop
27 #define DEV_IGNORE_EXCEPTIONS(X) \
33 #define DEV_IF_THROWS(X) \
39 using namespace boost::multiprecision::literals;
46 using bytes = std::vector<::byte>;
63 if (&_c ==
this)
return *
this;
80 size_t size()
const {
return m_data.size(); }
81 bool empty()
const {
return m_data.empty(); }
92 using bigint = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<>>;
93 using u64 = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<
94 64, 64, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked,
void>>;
95 using u128 = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<
96 128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked,
void>>;
97 using u256 = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<
98 256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked,
void>>;
99 using s256 = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<
100 256, 256, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked,
void>>;
101 using u160 = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<
102 160, 160, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked,
void>>;
103 using s160 = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<
104 160, 160, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked,
void>>;
105 using u512 = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<
106 512, 512, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked,
void>>;
107 using s512 = boost::multiprecision::number<boost::multiprecision::cpp_int_backend<
108 512, 512, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked,
void>>;
134 if (boost::multiprecision::bit_test(_u, 255))
135 return s256(-(c_end - _u));
146 return u256(c_end + _u);
152 for (ret = 0; _x >>= 1; ++ret) {
169 inline N
diff(N
const& _a, N
const& _b) {
170 return std::max(_a, _b) - std::min(_a, _b);
180 std::function<void(
void)>
m_f;
186 TimerHelper(std::string
const& _id,
unsigned _msReportWhenGreater = 0)
187 : m_t(
std::chrono::high_resolution_clock::now()), m_id(_id), m_ms(_msReportWhenGreater) {}
200 std::chrono::high_resolution_clock::duration
duration()
const {
201 return std::chrono::high_resolution_clock::now() - m_t;
204 return std::chrono::duration_cast<std::chrono::microseconds>(duration()).count() / 1000000.0;
206 void restart() { m_t = std::chrono::high_resolution_clock::now(); }
212 #define DEV_TIMED(S) \
213 for (::std::pair<::dev::TimerHelper, bool> __eth_t(S, true); __eth_t.second; __eth_t.second = false)
214 #define DEV_TIMED_SCOPE(S) ::dev::TimerHelper __eth_t(S)
216 #define DEV_TIMED_FUNCTION DEV_TIMED_SCOPE(__FUNCSIG__)
218 #define DEV_TIMED_FUNCTION DEV_TIMED_SCOPE(__PRETTY_FUNCTION__)
221 #define DEV_TIMED_ABOVE(S, MS) \
222 for (::std::pair<::dev::TimerHelper, bool> __eth_t(::dev::TimerHelper(S, MS), true); __eth_t.second; \
223 __eth_t.second = false)
224 #define DEV_TIMED_SCOPE_ABOVE(S, MS) ::dev::TimerHelper __eth_t(S, MS)
226 #define DEV_TIMED_FUNCTION_ABOVE(MS) DEV_TIMED_SCOPE_ABOVE(__FUNCSIG__, MS)
228 #define DEV_TIMED_FUNCTION_ABOVE(MS) DEV_TIMED_SCOPE_ABOVE(__PRETTY_FUNCTION__, MS)
231 #define DEV_UNUSED __attribute__((unused))
RAII utility class whose destructor calls a given function.
Definition: Common.h:174
ScopeGuard(std::function< void(void)> _f)
Definition: Common.h:176
std::function< void(void)> m_f
Definition: Common.h:180
~ScopeGuard()
Definition: Common.h:177
Simple scope-based timer helper.
Definition: Common.h:184
std::chrono::high_resolution_clock::time_point m_t
Definition: Common.h:191
TimerHelper(std::string const &_id, unsigned _msReportWhenGreater=0)
Definition: Common.h:186
std::string m_id
Definition: Common.h:192
unsigned m_ms
Definition: Common.h:193
Timer()
Definition: Common.h:198
double elapsed() const
Definition: Common.h:203
std::chrono::high_resolution_clock::duration duration() const
Definition: Common.h:200
std::chrono::high_resolution_clock::time_point m_t
Definition: Common.h:209
void restart()
Definition: Common.h:206
secure_vector(size_t _size)
Definition: Common.h:55
secure_vector< T > & operator=(secure_vector< T > const &_c)
Definition: Common.h:62
bool empty() const
Definition: Common.h:81
secure_vector(size_t _size, T _item)
Definition: Common.h:56
void swap(secure_vector< T > &io_other)
Definition: Common.h:83
void clear()
Definition: Common.h:75
std::vector< T > m_data
Definition: Common.h:86
vector_ref< T > ref()
Definition: Common.h:77
secure_vector(secure_vector< T > const &)=default
vector_ref< T const > ref() const
Definition: Common.h:78
secure_vector(std::vector< T > const &_c)
Definition: Common.h:57
secure_vector(vector_ref< T > _c)
Definition: Common.h:58
secure_vector()
Definition: Common.h:53
std::vector< T > const & makeInsecure() const
Definition: Common.h:73
size_t size() const
Definition: Common.h:80
std::vector< T > & writable()
Definition: Common.h:69
secure_vector(vector_ref< const T > _c)
Definition: Common.h:59
~secure_vector()
Definition: Common.h:60
Definition: vector_ref.h:23
u256 exp10< 0 >()
Definition: Common.h:163
std::vector< std::string > strings
Definition: Common.h:125
std::map< bytes, bytes > BytesMap
Definition: Common.h:116
std::map< u256, u256 > u256Map
Definition: Common.h:117
std::set< u256 > u256Set
Definition: Common.h:111
boost::multiprecision::number< boost::multiprecision::cpp_int_backend< 128, 128, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void > > u128
Definition: Common.h:96
boost::multiprecision::number< boost::multiprecision::cpp_int_backend< 512, 512, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked, void > > s512
Definition: Common.h:108
std::map< std::string, std::string > StringMap
Definition: Common.h:115
vector_ref< _T const > ref(_T const &_t)
Definition: vector_ref.h:188
std::string const EmptyString
Definition: Common.cpp:17
std::vector<::byte > bytes
Definition: Common.h:46
std::unordered_map< u256, u256 > u256HashMap
Definition: Common.h:122
s256 u2s(u256 _u)
Definition: Common.h:132
std::set< u160 > u160Set
Definition: Common.h:112
std::vector< u256 > u256s
Definition: Common.h:109
boost::multiprecision::number< boost::multiprecision::cpp_int_backend< 256, 256, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked, void > > s256
Definition: Common.h:100
std::map< bytes, bytes > HexMap
Definition: Common.h:118
boost::multiprecision::number< boost::multiprecision::cpp_int_backend<> > bigint
Definition: Common.h:92
int64_t utcTime()
Get the current time in seconds since the epoch in UTC.
Definition: Common.cpp:25
std::vector< u160 > u160s
Definition: Common.h:110
boost::multiprecision::number< boost::multiprecision::cpp_int_backend< 64, 64, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void > > u64
Definition: Common.h:94
boost::multiprecision::number< boost::multiprecision::cpp_int_backend< 256, 256, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void > > u256
Definition: Common.h:98
u256 exp10()
Definition: Common.h:158
boost::multiprecision::number< boost::multiprecision::cpp_int_backend< 160, 160, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void > > u160
Definition: Common.h:102
std::unordered_map< std::string, std::string > StringHashMap
Definition: Common.h:121
boost::multiprecision::number< boost::multiprecision::cpp_int_backend< 512, 512, boost::multiprecision::unsigned_magnitude, boost::multiprecision::unchecked, void > > u512
Definition: Common.h:106
unsigned int toLog2(u256 _x)
Definition: Common.h:150
boost::multiprecision::number< boost::multiprecision::cpp_int_backend< 160, 160, boost::multiprecision::signed_magnitude, boost::multiprecision::unchecked, void > > s160
Definition: Common.h:104
N diff(N const &_a, N const &_b)
Definition: Common.h:169
u256 s2u(s256 _u)
Definition: Common.h:141
static const auto c_steadyClockMin
Definition: Common.h:236
bytes const NullBytes
Definition: Common.cpp:16
std::hash for asio::adress
Definition: FixedHash.h:483
std::chrono::system_clock::time_point time_point
Definition: watches.hpp:12