32 #include <boost/thread.hpp> 33 #include <boost/utility/value_init.hpp> 36 #define STD_TRY_BEGIN() try { 38 #define STD_TRY_CATCH(where_, ret_val) \ 40 catch (const std::exception &e) \ 42 LOG_ERROR("EXCEPTION: " << where_ << ", mes: "<< e.what()); \ 47 LOG_ERROR("EXCEPTION: " << where_ ); \ 53 #define AUTO_VAL_INIT(v) boost::value_initialized<decltype(v)>() 57 template<
typename t_type>
60 return (std::numeric_limits<t_type>::max)();
64 template<
typename t_iterator>
72 template<
typename t_iterator>
84 :
public std::binary_function<_Ty, _Ty, bool>
86 bool operator()(
const _Ty& _Left,
const _Ty& _Right)
const 88 return memcmp(&_Left, &_Right,
sizeof(_Left)) < 0;
95 return memcmp(&_Left, &_Right,
sizeof(_Left)) < 0;
102 boost::this_thread::sleep(
103 boost::get_system_time() +
104 boost::posix_time::milliseconds( std::max<long>(ms,0) ) );
109 template<
class type_vec_type>
110 type_vec_type
median(std::vector<type_vec_type> &v)
113 return boost::value_initialized<type_vec_type>();
117 size_t n = (v.size()) / 2;
118 std::sort(v.begin(), v.end());
125 return (v[n-1] + v[n])/2;
142 template<
class t_scope_leave_handler>
155 template<
class t_scope_leave_handler>
t_iterator move_it_forward(t_iterator it, size_t count)
call_befor_die(t_scope_leave_handler f)
auto_scope_leave_caller create_scope_leave_handler(t_scope_leave_handler f)
bool is_less_as_pod(const _Ty &_Left, const _Ty &_Right)
mdb_size_t count(MDB_cursor *cur)
t_type get_max_t_val(t_type t)
boost::shared_ptr< call_befor_die_base > auto_scope_leave_caller
type_vec_type median(std::vector< type_vec_type > &v)
bool operator()(const _Ty &_Left, const _Ty &_Right) const
t_scope_leave_handler m_func
t_iterator move_it_backward(t_iterator it, size_t count)
virtual ~call_befor_die_base()