#ifndef LOG_H
#define LOG_H

#include <boost/log/core.hpp>
#include <boost/log/trivial.hpp>

#ifdef DEBUG
#define D BOOST_LOG_TRIVIAL(debug)
#define I BOOST_LOG_TRIVIAL(info)
#define W BOOST_LOG_TRIVIAL(warning)

#define DF BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ": "
#define IF BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": "
#define WF BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << ": "
#else
#define D if (false) BOOST_LOG_TRIVIAL(debug)
#define I if (false) BOOST_LOG_TRIVIAL(info)
#define W if (false) BOOST_LOG_TRIVIAL(warning)

#define DF if (false) BOOST_LOG_TRIVIAL(debug) << __FUNCTION__ << ": "
#define IF if (false) BOOST_LOG_TRIVIAL(info) << __FUNCTION__ << ": "
#define WF if (false) BOOST_LOG_TRIVIAL(warning) << __FUNCTION__ << ": "
#endif

#endif