/usr/include/dune/common/stdthread.hh is in libdune-common-dev 2.5.1-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | // -*- tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
// vi: set et ts=4 sw=2 sts=2:
#ifndef DUNE_COMMON_STDTHREAD_HH
#define DUNE_COMMON_STDTHREAD_HH
#include <dune/common/unused.hh>
namespace Dune
{
// used internally by assertCallOnce for the actual check
void doAssertCallOnce(const char *file, int line, const char *function);
//! \brief Make sure call_once() works and provide a helpful error message
//! otherwise.
/**
* For call_once() to work, certain versions of libstdc++ need to be
* _linked_ with -pthread or similar flags. If that is not the case,
* call_once() will throw an exception. This function checks that
* call_once() can indeed be used, i.e. that it does not throw an exception
* when it should not, and that the code does indeed get executed. If
* call_once() cannot be used, assertCallOnce() aborts the program with a
* helpful error message.
*
* The check is only actually executed the first time assertCallOnce() is
* called.
*
* The arguments \c file and \c line specify the filename and line number
* that should appear in the error message. They are ignored if \c file is
* 0. The argument \c function specifies the name of the function to appear
* in the error message. It is ignored if \c function is 0.
*/
inline void assertCallOnce(const char *file = nullptr, int line = -1,
const char *function = nullptr)
{
// make sure to call this only the first time this function is invoked
static const bool DUNE_UNUSED works
= (doAssertCallOnce(file, line, function), true);
}
//! \brief Make sure call_once() works and provide a helpful error message
//! otherwise.
/**
* This calls assertCallOnce() and automatically provides information about
* the caller in the error message.
*/
#define DUNE_ASSERT_CALL_ONCE() \
::Dune::assertCallOnce(__FILE__, __LINE__, __func__)
} // namespace Dune
#endif // DUNE_COMMON_STDTHREAD_HH
|