forked from boostorg/smart_ptr
Fix lwm_win32_cs.hpp for Clang
This commit is contained in:
@@ -21,7 +21,13 @@
|
|||||||
#include <boost/predef.h>
|
#include <boost/predef.h>
|
||||||
|
|
||||||
#ifdef BOOST_USE_WINDOWS_H
|
#ifdef BOOST_USE_WINDOWS_H
|
||||||
# include <windows.h>
|
|
||||||
|
#include <windows.h>
|
||||||
|
|
||||||
|
#else
|
||||||
|
|
||||||
|
struct _RTL_CRITICAL_SECTION;
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace boost
|
namespace boost
|
||||||
@@ -47,13 +53,13 @@ struct critical_section
|
|||||||
};
|
};
|
||||||
|
|
||||||
#if BOOST_PLAT_WINDOWS_RUNTIME
|
#if BOOST_PLAT_WINDOWS_RUNTIME
|
||||||
extern "C" __declspec(dllimport) void __stdcall InitializeCriticalSectionEx(critical_section *, unsigned long, unsigned long);
|
extern "C" __declspec(dllimport) void __stdcall InitializeCriticalSectionEx(::_RTL_CRITICAL_SECTION *, unsigned long, unsigned long);
|
||||||
#else
|
#else
|
||||||
extern "C" __declspec(dllimport) void __stdcall InitializeCriticalSection(critical_section *);
|
extern "C" __declspec(dllimport) void __stdcall InitializeCriticalSection(::_RTL_CRITICAL_SECTION *);
|
||||||
#endif
|
#endif
|
||||||
extern "C" __declspec(dllimport) void __stdcall EnterCriticalSection(critical_section *);
|
extern "C" __declspec(dllimport) void __stdcall EnterCriticalSection(::_RTL_CRITICAL_SECTION *);
|
||||||
extern "C" __declspec(dllimport) void __stdcall LeaveCriticalSection(critical_section *);
|
extern "C" __declspec(dllimport) void __stdcall LeaveCriticalSection(::_RTL_CRITICAL_SECTION *);
|
||||||
extern "C" __declspec(dllimport) void __stdcall DeleteCriticalSection(critical_section *);
|
extern "C" __declspec(dllimport) void __stdcall DeleteCriticalSection(::_RTL_CRITICAL_SECTION *);
|
||||||
|
|
||||||
#else
|
#else
|
||||||
|
|
||||||
@@ -75,15 +81,15 @@ public:
|
|||||||
lightweight_mutex()
|
lightweight_mutex()
|
||||||
{
|
{
|
||||||
#if BOOST_PLAT_WINDOWS_RUNTIME
|
#if BOOST_PLAT_WINDOWS_RUNTIME
|
||||||
InitializeCriticalSectionEx(&cs_, 4000, 0);
|
boost::detail::InitializeCriticalSectionEx(reinterpret_cast< ::_RTL_CRITICAL_SECTION* >(&cs_), 4000, 0);
|
||||||
#else
|
#else
|
||||||
InitializeCriticalSection(&cs_);
|
boost::detail::InitializeCriticalSection(reinterpret_cast< ::_RTL_CRITICAL_SECTION* >(&cs_));
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
~lightweight_mutex()
|
~lightweight_mutex()
|
||||||
{
|
{
|
||||||
DeleteCriticalSection(&cs_);
|
boost::detail::DeleteCriticalSection(reinterpret_cast< ::_RTL_CRITICAL_SECTION* >(&cs_));
|
||||||
}
|
}
|
||||||
|
|
||||||
class scoped_lock;
|
class scoped_lock;
|
||||||
@@ -102,12 +108,12 @@ public:
|
|||||||
|
|
||||||
explicit scoped_lock(lightweight_mutex & m): m_(m)
|
explicit scoped_lock(lightweight_mutex & m): m_(m)
|
||||||
{
|
{
|
||||||
EnterCriticalSection(&m_.cs_);
|
boost::detail::EnterCriticalSection(reinterpret_cast< ::_RTL_CRITICAL_SECTION* >(&m_.cs_));
|
||||||
}
|
}
|
||||||
|
|
||||||
~scoped_lock()
|
~scoped_lock()
|
||||||
{
|
{
|
||||||
LeaveCriticalSection(&m_.cs_);
|
boost::detail::LeaveCriticalSection(reinterpret_cast< ::_RTL_CRITICAL_SECTION* >(&m_.cs_));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
Reference in New Issue
Block a user