14#include "atomicrefcount.h"
18#if defined( _WIN32 ) && !defined( __SYMBIAN32__ )
20#elif defined( __APPLE__ )
21# include <libkern/OSAtomic.h>
22#elif defined( HAVE_GCC_ATOMIC_BUILTINS )
25# include "mutexguard.h"
44#if defined( _WIN32 ) && !defined( __SYMBIAN32__ )
45 return (
int) ::InterlockedIncrement( (
volatile LONG*)&m_count );
46#elif defined( __APPLE__ )
47 return (
int) OSAtomicIncrement32Barrier( (
volatile int32_t*)&m_count );
48#elif defined( HAVE_GCC_ATOMIC_BUILTINS )
50 return static_cast<int>( __sync_add_and_fetch( &m_count, 1 ) );
60#if defined( _WIN32 ) && !defined( __SYMBIAN32__ )
61 return (
int) ::InterlockedDecrement( (
volatile LONG*)&m_count );
62#elif defined( __APPLE__ )
63 return (
int) OSAtomicDecrement32Barrier( (
volatile int32_t*)&m_count );
64#elif defined( HAVE_GCC_ATOMIC_BUILTINS )
66 return static_cast<int>( __sync_sub_and_fetch( &m_count, 1 ) );
76#if defined( _WIN32 ) && !defined( __SYMBIAN32__ )
77 ::InterlockedExchange( (
volatile LONG*)&m_count, (
volatile LONG)0 );
78#elif defined( __APPLE__ )
79 OSAtomicAnd32Barrier( (uint32_t)0, (
volatile uint32_t*)&m_count );
80#elif defined( HAVE_GCC_ATOMIC_BUILTINS )
82 __sync_fetch_and_and( &m_count, 0 );
A simple implementation of a mutex guard.
The namespace for the gloox library.