-
Notifications
You must be signed in to change notification settings - Fork 53
/
utils.hpp
61 lines (50 loc) · 1.56 KB
/
utils.hpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#if !defined LIBFACE_UTILS_HPP
#define LIBFACE_UTILS_HPP
#include <iostream>
#include <vector>
#include <utility>
#include <ostream>
#include <assert.h>
#include <stdio.h>
#include <include/types.hpp>
#if defined DEBUG
#define DCERR(X) std::cerr<<X;
#define DPRINTF(ARGS...) fprintf(stderr, ARGS);
#else
#define DCERR(X)
#define DPRINTF(ARGS...)
#endif
#define assert_lt(X,Y) if (!((X)<(Y))) { fprintf(stderr, "%d < %d FAILED\n", (X), (Y)); assert((X)<(Y)); }
#define assert_gt(X,Y) if (!((X)>(Y))) { fprintf(stderr, "%d > %d FAILED\n", (X), (Y)); assert((X)>(Y)); }
#define assert_le(X,Y) if (!((X)<=(Y))) { fprintf(stderr, "%d <= %d FAILED\n", (X), (Y)); assert((X)<=(Y)); }
#define assert_eq(X,Y) if (!((X)==(Y))) { fprintf(stderr, "%d == %d FAILED\n", (X), (Y)); assert((X)==(Y)); }
#define assert_ne(X,Y) if (!((X)!=(Y))) { fprintf(stderr, "%d != %d FAILED\n", (X), (Y)); assert((X)!=(Y)); }
inline uint_t log2(uint_t n) {
uint_t lg2 = 0;
while (n > 1) {
n /= 2;
++lg2;
}
return lg2;
}
const uint_t minus_one = (uint_t)0 - 1;
template <typename T>
std::ostream&
operator<<(std::ostream& out, std::vector<T> const& vec) {
for (size_t i = 0; i < vec.size(); ++i) {
out<<vec[i]<<std::endl;
}
return out;
}
template <typename T, typename U>
std::ostream&
operator<<(std::ostream& out, std::pair<T, U> const& p) {
out<<"("<<p.first<<", "<<p.second<<")";
return out;
}
inline std::ostream&
operator<<(std::ostream& out, phrase_t const& p) {
out<<"("<<p.phrase<<", "<<p.weight<<")";
return out;
}
#endif // LIBFACE_UTILS_HPP