GCC 4.2 fixes
git-svn-id: svn://svn.code.sf.net/p/loki-lib/code/trunk@895 7ec92016-0320-0410-acc4-a06ded1c099a
This commit is contained in:
parent
1cc348d6e2
commit
0c4789ee11
3 changed files with 2364 additions and 2355 deletions
|
@ -582,6 +582,8 @@ public:
|
||||||
*/
|
*/
|
||||||
explicit SleepLevelMutex( unsigned int level );
|
explicit SleepLevelMutex( unsigned int level );
|
||||||
|
|
||||||
|
SleepLevelMutex( unsigned int level, unsigned int sleepTime );
|
||||||
|
|
||||||
/// Destructs the mutex.
|
/// Destructs the mutex.
|
||||||
virtual ~SleepLevelMutex( void );
|
virtual ~SleepLevelMutex( void );
|
||||||
|
|
||||||
|
@ -742,9 +744,9 @@ class LevelMutex : public LevelMutexInfo
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
||||||
typedef typename ErrorPolicy EP;
|
typedef ErrorPolicy EP;
|
||||||
typedef typename WaitPolicy WP;
|
typedef WaitPolicy WP;
|
||||||
typedef typename MutexPolicy MP;
|
typedef MutexPolicy MP;
|
||||||
|
|
||||||
/** This constructor allows callers to replace the default level with another
|
/** This constructor allows callers to replace the default level with another
|
||||||
value. It also acts as the default constructor for existing code which uses
|
value. It also acts as the default constructor for existing code which uses
|
||||||
|
@ -1022,10 +1024,10 @@ public:
|
||||||
MutexException & operator = ( const MutexException & that ) throw ();
|
MutexException & operator = ( const MutexException & that ) throw ();
|
||||||
|
|
||||||
/// Destroys the exception.
|
/// Destroys the exception.
|
||||||
virtual ~MutexException( void );
|
virtual ~MutexException( void ) throw();
|
||||||
|
|
||||||
/// Returns a simple message about which operation failed.
|
/// Returns a simple message about which operation failed.
|
||||||
virtual const char * what( void ) const;
|
virtual const char * what( void ) const throw();
|
||||||
|
|
||||||
/// Returns level of mutex(es) used when problem occurred.
|
/// Returns level of mutex(es) used when problem occurred.
|
||||||
unsigned int GetLevel( void ) const { return m_level; }
|
unsigned int GetLevel( void ) const { return m_level; }
|
||||||
|
@ -1201,6 +1203,6 @@ private:
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
}; // end namespace Loki
|
} // end namespace Loki
|
||||||
|
|
||||||
#endif // end file guardian
|
#endif // end file guardian
|
||||||
|
|
|
@ -23,6 +23,7 @@
|
||||||
#include <loki/LevelMutex.h>
|
#include <loki/LevelMutex.h>
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
#include <cerrno>
|
||||||
|
|
||||||
|
|
||||||
using namespace ::std;
|
using namespace ::std;
|
||||||
|
@ -32,7 +33,7 @@ using namespace ::std;
|
||||||
#define nullptr 0
|
#define nullptr 0
|
||||||
|
|
||||||
|
|
||||||
volatile ::Loki::LevelMutexInfo * ::Loki::LevelMutexInfo::s_currentMutex = nullptr;
|
LOKI_THREAD_LOCAL volatile ::Loki::LevelMutexInfo * ::Loki::LevelMutexInfo::s_currentMutex = nullptr;
|
||||||
|
|
||||||
unsigned int ::Loki::MutexSleepWaits::sleepTime = 1;
|
unsigned int ::Loki::MutexSleepWaits::sleepTime = 1;
|
||||||
|
|
||||||
|
@ -116,7 +117,7 @@ unsigned int GetLevel( const ::Loki::LevelMutexInfo::MutexContainer & mutexes )
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
}; // end anonymous namespace
|
} // end anonymous namespace
|
||||||
|
|
||||||
namespace Loki
|
namespace Loki
|
||||||
{
|
{
|
||||||
|
@ -991,8 +992,8 @@ const char * MutexException::what( void ) const throw ()
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
MutexLocker::MutexLocker( volatile LevelMutexInfo & mutex, bool lock ) :
|
MutexLocker::MutexLocker( volatile LevelMutexInfo & mutex, bool lock ) :
|
||||||
m_mutex( mutex ),
|
m_locked( false ),
|
||||||
m_locked( false )
|
m_mutex( mutex )
|
||||||
{
|
{
|
||||||
assert( nullptr != this );
|
assert( nullptr != this );
|
||||||
if ( !lock )
|
if ( !lock )
|
||||||
|
@ -1007,8 +1008,8 @@ MutexLocker::MutexLocker( volatile LevelMutexInfo & mutex, bool lock ) :
|
||||||
|
|
||||||
MutexLocker::MutexLocker( volatile LevelMutexInfo & mutex, unsigned int milliSeconds,
|
MutexLocker::MutexLocker( volatile LevelMutexInfo & mutex, unsigned int milliSeconds,
|
||||||
bool lock ) :
|
bool lock ) :
|
||||||
m_mutex( mutex ),
|
m_locked( false ),
|
||||||
m_locked( false )
|
m_mutex( mutex )
|
||||||
{
|
{
|
||||||
assert( nullptr != this );
|
assert( nullptr != this );
|
||||||
if ( !lock )
|
if ( !lock )
|
||||||
|
@ -1068,8 +1069,8 @@ bool MutexLocker::Unlock( void )
|
||||||
|
|
||||||
MultiMutexLocker::MultiMutexLocker( LevelMutexInfo::MutexContainer & mutexes,
|
MultiMutexLocker::MultiMutexLocker( LevelMutexInfo::MutexContainer & mutexes,
|
||||||
bool lock ) :
|
bool lock ) :
|
||||||
m_mutexes( mutexes ),
|
m_locked( false ),
|
||||||
m_locked( false )
|
m_mutexes( mutexes )
|
||||||
{
|
{
|
||||||
assert( nullptr != this );
|
assert( nullptr != this );
|
||||||
if ( !lock )
|
if ( !lock )
|
||||||
|
@ -1085,8 +1086,8 @@ MultiMutexLocker::MultiMutexLocker( LevelMutexInfo::MutexContainer & mutexes,
|
||||||
|
|
||||||
MultiMutexLocker::MultiMutexLocker( LevelMutexInfo::MutexContainer & mutexes,
|
MultiMutexLocker::MultiMutexLocker( LevelMutexInfo::MutexContainer & mutexes,
|
||||||
unsigned int milliSeconds, bool lock ) :
|
unsigned int milliSeconds, bool lock ) :
|
||||||
m_mutexes( mutexes ),
|
m_locked( false ),
|
||||||
m_locked( false )
|
m_mutexes( mutexes )
|
||||||
{
|
{
|
||||||
assert( nullptr != this );
|
assert( nullptr != this );
|
||||||
if ( !lock )
|
if ( !lock )
|
||||||
|
@ -1145,4 +1146,4 @@ bool MultiMutexLocker::Unlock( void )
|
||||||
|
|
||||||
// ----------------------------------------------------------------------------
|
// ----------------------------------------------------------------------------
|
||||||
|
|
||||||
}; // end namespace Loki
|
} // end namespace Loki
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
// The Loki Library
|
// The Loki Library
|
||||||
// Copyright (c) 2006 Peter Kümmel
|
// Copyright (c) 2006 Peter K<EFBFBD>mmel
|
||||||
// Permission to use, copy, modify, distribute and sell this software for any
|
// Permission to use, copy, modify, distribute and sell this software for any
|
||||||
// purpose is hereby granted without fee, provided that the above copyright
|
// purpose is hereby granted without fee, provided that the above copyright
|
||||||
// notice appear in all copies and that both that copyright notice and this
|
// notice appear in all copies and that both that copyright notice and this
|
||||||
|
@ -200,7 +200,13 @@ void User::AddFriendGuardedMacros(User&)
|
||||||
&User::CheckIfValid, __FUNCTION__, __LINE__ );
|
&User::CheckIfValid, __FUNCTION__, __LINE__ );
|
||||||
(void)invariantGuard;
|
(void)invariantGuard;
|
||||||
LOKI_ON_BLOCK_EXIT_OBJ(friends_, &UserCont::pop_back); (void) LOKI_ANONYMOUS_VARIABLE(scopeGuard);
|
LOKI_ON_BLOCK_EXIT_OBJ(friends_, &UserCont::pop_back); (void) LOKI_ANONYMOUS_VARIABLE(scopeGuard);
|
||||||
|
// GCC 4.2 Bug
|
||||||
|
#if defined(__GNUC__)
|
||||||
|
#define GCC_VERSION (__GNUC__ * 10 + __GNUC_MINOR__ * 1)
|
||||||
|
#endif
|
||||||
|
#if !defined(__GNUC__) || (GCC_VERSION < 42) || (GCC_VERSION > 42)
|
||||||
LOKI_ON_BLOCK_EXIT(Decrement, Loki::ByRef(fCount)); (void) LOKI_ANONYMOUS_VARIABLE(scopeGuard);
|
LOKI_ON_BLOCK_EXIT(Decrement, Loki::ByRef(fCount)); (void) LOKI_ANONYMOUS_VARIABLE(scopeGuard);
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void DoStandaloneFunctionTests()
|
void DoStandaloneFunctionTests()
|
||||||
|
|
Loading…
Reference in a new issue