Aikido
util.hpp
Go to the documentation of this file.
1 #ifndef AIKIDO_COMMON_UTIL_HPP_
2 #define AIKIDO_COMMON_UTIL_HPP_
3 
4 #include <cmath>
5 #include <future>
6 
7 namespace aikido {
8 namespace common {
9 
11 template <typename T>
12 inline std::future<T> make_exceptional_future(std::string error_message)
13 {
14  auto promise = std::promise<T>();
15  promise.set_exception(
16  std::make_exception_ptr(std::runtime_error(error_message)));
17  return promise.get_future();
18 }
19 
21 template <typename T>
22 inline std::future<T> make_ready_future(T obj)
23 {
24  auto promise = std::promise<T>();
25  promise.set_value(obj);
26  return promise.get_future();
27 }
28 
29 inline std::future<void> make_ready_future()
30 {
31  auto promise = std::promise<void>();
32  promise.set_value();
33  return promise.get_future();
34 }
35 
37 #ifndef AIKIDO_COMMON_NEARZERO
38 #define AIKIDO_COMMON_NEARZERO 1E-8
39 #endif
40 
41 inline bool FuzzyZero(double value, double tol = AIKIDO_COMMON_NEARZERO)
42 {
43  return (abs(value) <= tol);
44 }
45 
46 } // namespace common
47 } // namespace aikido
48 
49 #endif // AIKIDO_COMMON_UTIL_HPP_
AIKIDO_COMMON_NEARZERO
#define AIKIDO_COMMON_NEARZERO
Check for a value near-zero.
Definition: util.hpp:38
aikido
Format of serialized trajectory in YAML.
Definition: algorithm.hpp:4
aikido::common::make_ready_future
std::future< T > make_ready_future(T obj)
Make a pre-made ready std::future.
Definition: util.hpp:22
aikido::common::make_exceptional_future
std::future< T > make_exceptional_future(std::string error_message)
Make a pre-made exceptional std::future.
Definition: util.hpp:12
aikido::common::FuzzyZero
bool FuzzyZero(double value, double tol=1E-8)
Definition: util.hpp:41