mirror of
https://github.com/saitohirga/WSJT-X.git
synced 2024-11-09 02:26:06 -05:00
4ebe6417a5
git-subtree-dir: boost git-subtree-split: b4feb19f287ee92d87a9624b5d36b7cf46aeadeb
82 lines
3.5 KiB
C++
82 lines
3.5 KiB
C++
// (C) Copyright Gennadiy Rozental 2001.
|
|
// 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)
|
|
|
|
// See http://www.boost.org/libs/test for the library home page.
|
|
//
|
|
/// @file
|
|
/// @brief Entry point for the end user into the Program Execution Monitor.
|
|
///
|
|
/// Use this header to forward declare function prg_exec_monitor_main and to automatically define a main
|
|
/// function for you. If you prefer to use your own main you are free to do so, but you need to define
|
|
/// BOOST_TEST_NO_MAIN before incuding this header. To initiate your main program body execution you
|
|
/// would use statement like this:
|
|
/// @code ::boost::prg_exec_monitor_main( &my_main, argc, argv ); @endcode
|
|
/// Also this header facilitate auto linking with the Program Execution Monitor library if this feature
|
|
/// is supported
|
|
// ***************************************************************************
|
|
|
|
#ifndef BOOST_PRG_EXEC_MONITOR_HPP_071894GER
|
|
#define BOOST_PRG_EXEC_MONITOR_HPP_071894GER
|
|
|
|
#include <boost/test/detail/config.hpp>
|
|
|
|
//____________________________________________________________________________//
|
|
|
|
// ************************************************************************** //
|
|
// ************** Auto Linking ************** //
|
|
// ************************************************************************** //
|
|
|
|
// Automatically link to the correct build variant where possible.
|
|
#if !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_TEST_NO_LIB) && \
|
|
!defined(BOOST_TEST_SOURCE) && !defined(BOOST_TEST_INCLUDED)
|
|
# define BOOST_LIB_NAME boost_prg_exec_monitor
|
|
|
|
// If we're importing code from a dll, then tell auto_link.hpp about it:
|
|
# if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_TEST_DYN_LINK)
|
|
# define BOOST_DYN_LINK
|
|
# endif
|
|
|
|
# include <boost/config/auto_link.hpp>
|
|
|
|
#endif // auto-linking disabled
|
|
|
|
// ************************************************************************** //
|
|
// ************** prg_exec_monitor_main ************** //
|
|
// ************************************************************************** //
|
|
|
|
namespace boost {
|
|
|
|
/// @brief Wrapper around the main function
|
|
///
|
|
/// Call this routine instead of your own main body implementation directly. This routine impements all the monitoring
|
|
/// functionality. THe monitor behavior is configurable by using the environment variable BOOST_TEST_CATCH_SYSTEM_ERRORS.
|
|
/// If set to string value "no", the monitor will not attempt to catch system errors (signals)
|
|
/// @param[in] cpp_main main function body. Should have the same signature as regular main function
|
|
/// @param[in] argc, argv command line arguments
|
|
int BOOST_TEST_DECL prg_exec_monitor_main( int (*cpp_main)( int argc, char* argv[] ), int argc, char* argv[] );
|
|
|
|
} // boost
|
|
|
|
#if defined(BOOST_TEST_DYN_LINK) && !defined(BOOST_TEST_NO_MAIN)
|
|
|
|
// ************************************************************************** //
|
|
// ************** main function for tests using dll ************** //
|
|
// ************************************************************************** //
|
|
|
|
// prototype for user's cpp_main()
|
|
int cpp_main( int argc, char* argv[] );
|
|
|
|
int BOOST_TEST_CALL_DECL
|
|
main( int argc, char* argv[] )
|
|
{
|
|
return ::boost::prg_exec_monitor_main( &cpp_main, argc, argv );
|
|
}
|
|
|
|
//____________________________________________________________________________//
|
|
|
|
#endif // BOOST_TEST_DYN_LINK && !BOOST_TEST_NO_MAIN
|
|
|
|
#endif // BOOST_PRG_EXEC_MONITOR_HPP_071894GER
|