#ifndef CONTS_H
#define CONTS_H

#define CONTS_JOIN2(a, b) a##_##b
#define CONTS_JOIN(a, b) CONTS_JOIN2(a, b)

#define CONTAINER_OF(ptr, type, member) \
	(type *)((char *)(ptr) - offsetof(type, member))

#define foreach(name, i, s)\
	for (CONTS_JOIN(name, iter) i = CONTS_JOIN(name, begin)(s);\
			!CONTS_JOIN(name, end)(s, i);\
			i = CONTS_JOIN(name, next)(s, i))
#endif /* CONTS_H */
