1 /* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */
7 * @mainpage Icinga Documentation
9 * Icinga implements a framework for run-time-loadable components which can
10 * pass messages between each other. These components can either be hosted in
11 * the same process or in several host processes (either on the same machine or
12 * on different machines).
14 * The framework's code critically depends on the following patterns:
16 * <list type="bullet">
17 * <item>Smart pointers
19 * The shared_ptr and weak_ptr template classes are used to simplify memory
20 * management and to avoid accidental memory leaks and use-after-free
23 * <item>Observer pattern
25 * Framework classes expose events which other objects can subscribe to. This
26 * is used to decouple clients of a class from the class' internal
27 * implementation.</item>
32 * @defgroup base Base class library
34 * The base class library implements commonly-used functionality like
35 * event handling for sockets and timers.
38 #include <boost/config.hpp>
40 #if defined(__clang__) && __cplusplus >= 201103L
41 # undef BOOST_NO_CXX11_HDR_TUPLE
45 # pragma warning(disable:4251)
46 # pragma warning(disable:4275)
47 # pragma warning(disable:4345)
53 # include "base/win32.hpp"
55 # include "base/unix.hpp"
64 #include <sys/types.h>
71 #if defined(__APPLE__) && defined(__MACH__)
72 # pragma GCC diagnostic ignored "-Wdeprecated-declarations"
76 # define likely(x) __builtin_expect(!!(x), 1)
77 # define unlikely(x) __builtin_expect(!!(x), 0)
79 # define likely(x) (x)
80 # define unlikely(x) (x)
83 #define BOOST_BIND_NO_PLACEHOLDERS
87 using namespace std::placeholders;