summaryrefslogtreecommitdiff
path: root/plugins/HistoryStats/src/_langext.h
blob: ffe1626643a42aa02d10ad3b0aad6788083df6d1 (plain)
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
#if !defined(HISTORYSTATS_GUARD__LANGEXT_H)
#define HISTORYSTATS_GUARD__LANGEXT_H

/*
 * language "enhancements" - people will hate me for this
 */

#define bool_(c_bool) \
	((c_bool) ? true : false)

#define BOOL_(cpp_bool) \
	((cpp_bool) ? TRUE : FALSE)

#define array_len(array_var) \
	(sizeof(array_var) / sizeof((array_var)[0]))

#define range_each_(index_var, lo_bound, up_bound) \
	for (int index_var = (lo_bound); index_var < (up_bound); ++index_var)

#define upto_each_(index_var, up_bound) \
	range_each_(index_var, 0, (up_bound))

#define array_each_(index_var, array_var) \
	range_each_(index_var, 0, array_len(array_var))

#define vector_each_(index_var, vector_var) \
	for (int index_var = 0; index_var != (vector_var).size(); ++index_var)

#define iter_each_(cont_type, iter_var, cont_var) \
	for (cont_type::iterator iter_var = (cont_var).begin(); iter_var != (cont_var).end(); ++iter_var)

#define citer_each_(cont_type, iter_var, cont_var) \
	for (cont_type::const_iterator iter_var = (cont_var).begin(); iter_var != (cont_var).end(); ++iter_var)

#endif // HISTORYSTATS_GUARD__LANGEXT_H