/usr/include/boost/log/detail/event.hpp is in libboost1.54-dev 1.54.0-4ubuntu3.
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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 | /*
* Copyright Andrey Semashev 2007 - 2013.
* 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)
*/
/*!
* \file detail/event.hpp
* \author Andrey Semashev
* \date 24.07.2011
*/
#ifndef BOOST_LOG_DETAIL_EVENT_HPP_INCLUDED_
#define BOOST_LOG_DETAIL_EVENT_HPP_INCLUDED_
#include <boost/log/detail/config.hpp>
#ifdef BOOST_LOG_HAS_PRAGMA_ONCE
#pragma once
#endif
#ifndef BOOST_LOG_NO_THREADS
#if defined(BOOST_THREAD_PLATFORM_PTHREAD)
# if defined(_POSIX_SEMAPHORES) && (_POSIX_SEMAPHORES + 0) > 0
# if defined(__GNUC__) && defined(__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4)
# include <semaphore.h>
# include <boost/cstdint.hpp>
# define BOOST_LOG_EVENT_USE_POSIX_SEMAPHORE
# endif
# endif
#elif defined(BOOST_THREAD_PLATFORM_WIN32)
# include <boost/cstdint.hpp>
# define BOOST_LOG_EVENT_USE_WINAPI
#endif
#if !defined(BOOST_LOG_EVENT_USE_POSIX_SEMAPHORE) && !defined(BOOST_LOG_EVENT_USE_WINAPI)
# include <boost/thread/mutex.hpp>
# include <boost/thread/condition_variable.hpp>
# define BOOST_LOG_EVENT_USE_BOOST_CONDITION
#endif
#include <boost/log/detail/header.hpp>
namespace boost {
BOOST_LOG_OPEN_NAMESPACE
namespace aux {
#if defined(BOOST_LOG_EVENT_USE_POSIX_SEMAPHORE)
class sem_based_event
{
private:
boost::uint32_t m_state;
sem_t m_semaphore;
public:
//! Default constructor
BOOST_LOG_API sem_based_event();
//! Destructor
BOOST_LOG_API ~sem_based_event();
//! Waits for the object to become signalled
BOOST_LOG_API void wait();
//! Sets the object to a signalled state
BOOST_LOG_API void set_signalled();
private:
// Copying prohibited
sem_based_event(sem_based_event const&);
sem_based_event& operator= (sem_based_event const&);
};
typedef sem_based_event event;
#elif defined(BOOST_LOG_EVENT_USE_WINAPI)
class winapi_based_event
{
private:
boost::uint32_t m_state;
void* m_event;
public:
//! Default constructor
BOOST_LOG_API winapi_based_event();
//! Destructor
BOOST_LOG_API ~winapi_based_event();
//! Waits for the object to become signalled
BOOST_LOG_API void wait();
//! Sets the object to a signalled state
BOOST_LOG_API void set_signalled();
private:
// Copying prohibited
winapi_based_event(winapi_based_event const&);
winapi_based_event& operator= (winapi_based_event const&);
};
typedef winapi_based_event event;
#else
class generic_event
{
private:
boost::mutex m_mutex;
boost::condition_variable m_cond;
bool m_state;
public:
//! Default constructor
BOOST_LOG_API generic_event();
//! Destructor
BOOST_LOG_API ~generic_event();
//! Waits for the object to become signalled
BOOST_LOG_API void wait();
//! Sets the object to a signalled state
BOOST_LOG_API void set_signalled();
private:
// Copying prohibited
generic_event(generic_event const&);
generic_event& operator= (generic_event const&);
};
typedef generic_event event;
#endif
} // namespace aux
BOOST_LOG_CLOSE_NAMESPACE // namespace log
} // namespace boost
#include <boost/log/detail/footer.hpp>
#endif // BOOST_LOG_NO_THREADS
#endif // BOOST_LOG_DETAIL_EVENT_HPP_INCLUDED_
|