/****************************************************************************** * Icinga 2 * * Copyright (C) 2012 Icinga Development Team (http://www.icinga.org/) * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License * * as published by the Free Software Foundation; either version 2 * * of the License, or (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the Free Software Foundation * * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ******************************************************************************/ #ifndef I2BASE_H #define I2BASE_H /** * @mainpage Icinga Documentation * * Icinga implements a framework for run-time-loadable components which can * pass messages between each other. These components can either be hosted in * the same process or in several host processes (either on the same machine or * on different machines). * * The framework's code critically depends on the following patterns: * * * Smart pointers * * The shared_ptr and weak_ptr template classes are used to simplify memory * management and to avoid accidental memory leaks and use-after-free * bugs. * * Observer pattern * * Framework classes expose events which other objects can subscribe to. This * is used to decouple clients of a class from the class' internal * implementation. * */ /** * @defgroup base Base class library * * The base class library implements commonly-used functionality like * event handling for sockets and timers. */ #ifdef _MSC_VER # define HAVE_STDCXX_0X # pragma warning(disable:4251) # define _CRT_SECURE_NO_DEPRECATE # define _CRT_SECURE_NO_WARNINGS #else /* _MSC_VER */ # include "config.h" #endif /* _MSC_VER */ #define PLATFORM_WINDOWS 1 #define PLATFORM_UNIX 2 #ifdef _WIN32 # define I2_PLATFORM PLATFORM_WINDOWS # include "win32.h" #else # define I2_PLATFORM PLATFORM_UNIX # include "unix.h" #endif #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; using std::exception; #ifdef HAVE_STDCXX_0X # include # include using namespace std::placeholders; #else /* HAVE_STDCXX_0X */ # ifdef HAVE_BOOST # include # include # include # include using namespace boost; # else /* HAVE_BOOST */ # include # include # include "cxx11-compat.h" using namespace std::tr1; using namespace std::tr1::placeholders; #endif /* HAVE_BOOST */ #endif /* HAVE_STDCXX_0X */ #if defined(__APPLE__) && defined(__MACH__) # pragma GCC diagnostic ignored "-Wdeprecated-declarations" #endif #include #include #include #ifdef HAVE_GCC_ABI_DEMANGLE # include #endif /* HAVE_GCC_ABI_DEMANGLE */ #ifdef I2_BASE_BUILD # define I2_BASE_API I2_EXPORT #else /* I2_BASE_BUILD */ # define I2_BASE_API I2_IMPORT #endif /* I2_BASE_BUILD */ #include "utility.h" #include "object.h" #include "exception.h" #include "memory.h" #include "delegate.h" #include "observable.h" #include "variant.h" #include "dictionary.h" #include "timer.h" #include "fifo.h" #include "socket.h" #include "tcpsocket.h" #include "tcpclient.h" #include "tcpserver.h" #include "tlsclient.h" #include "configobject.h" #include "configcollection.h" #include "confighive.h" #include "application.h" #include "component.h" #endif /* I2BASE_H */