Added helper functions in utils.hpp
This commit is contained in:
parent
8803ac9921
commit
5fb5764379
1 changed files with 16 additions and 0 deletions
16
utils.hpp
16
utils.hpp
|
|
@ -2,12 +2,17 @@
|
||||||
#define DEF_utils
|
#define DEF_utils
|
||||||
|
|
||||||
#include <ostream>
|
#include <ostream>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
#define PRINT_VAR(x) std::cout << #x << "\t= " << (x) << "\n"
|
#define PRINT_VAR(x) std::cout << #x << "\t= " << (x) << "\n"
|
||||||
#define PRINT_VEC(x); {std::cout << #x << "\t= "; \
|
#define PRINT_VEC(x); {std::cout << #x << "\t= "; \
|
||||||
for(unsigned int i_print_vec = 0 ; i_print_vec < (x).size() ; i_print_vec++) \
|
for(unsigned int i_print_vec = 0 ; i_print_vec < (x).size() ; i_print_vec++) \
|
||||||
std::cout << (x)[i_print_vec] << "\t"; \
|
std::cout << (x)[i_print_vec] << "\t"; \
|
||||||
std::cout << "\n";}
|
std::cout << "\n";}
|
||||||
|
#define PRINT_STR(x) std::cout << (x) << "\n"
|
||||||
|
|
||||||
|
template<typename T, typename T2> auto min(const T & a, const T2 & b) -> decltype(a | b) { return (a < b) ? T(a) : T(b); }
|
||||||
|
template<typename T, typename T2> auto max(const T & a, const T2 & b) -> decltype(a | b) { return (a < b) ? T(b) : T(a); }
|
||||||
|
|
||||||
template<typename T, template<class,class...> class C, class... Args>
|
template<typename T, template<class,class...> class C, class... Args>
|
||||||
std::ostream& operator<<(std::ostream& os, const C<T,Args...>& objs)
|
std::ostream& operator<<(std::ostream& os, const C<T,Args...>& objs)
|
||||||
|
|
@ -17,4 +22,15 @@ std::ostream& operator<<(std::ostream& os, const C<T,Args...>& objs)
|
||||||
return os;
|
return os;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Convenience template class to do StdPairValueCatcher(a, b) = someFunctionThatReturnsAnStdPair<A,B>()
|
||||||
|
/// Instead of doing a = std::get<0>(result_from_function), b = std::get<1>(result_from_function)
|
||||||
|
template<typename A, typename B>
|
||||||
|
struct StdPairValueCatcher
|
||||||
|
{
|
||||||
|
A & a;
|
||||||
|
B & b;
|
||||||
|
StdPairValueCatcher(A & a_, B & b_) : a(a_), b(b_) {}
|
||||||
|
std::pair<A, B> const& operator=(std::pair<A, B> const& p) {a = std::get<0>(p); b = std::get<1>(p); return p; }
|
||||||
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue