#ifndef CURRENT_FUNCTION_HPP_INCLUDED
#define CURRENT_FUNCTION_HPP_INCLUDED

// MS compatible compilers support #pragma once

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
# pragma once
#endif

//  Local copy of Boost's BOOST_CURRENT_FUNCTION wrapper
//
//  current_function.hpp - SC_CURRENT_FUNCTION
//
//  Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
//
// Distributed under the Boost Software License, Version 1.0. (See
// accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt)
//
//  http://www.boost.org/libs/utility/current_function.html
//

#if defined(__GNUC__) || (defined(__MWERKS__) && (__MWERKS__ >= 0x3000)) || (defined(__ICC) && (__ICC >= 600)) || defined(__ghs__)

# define SC_CURRENT_FUNCTION __PRETTY_FUNCTION__

#elif defined(__DMC__) && (__DMC__ >= 0x810)

# define SC_CURRENT_FUNCTION __PRETTY_FUNCTION__

#elif defined(_MSC_VER) && _MSC_VER < 1900

# define SC_CURRENT_FUNCTION __FUNCTION__

#elif (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 600)) || (defined(__IBMCPP__) && (__IBMCPP__ >= 500))

# define SC_CURRENT_FUNCTION __FUNCTION__

#else // STDC

# define SC_CURRENT_FUNCTION __func__

#endif

#endif // #ifndef CURRENT_FUNCTION_HPP_INCLUDED

