Classes | Namespaces | Macros | Functions
BeAtomic.h File Reference

Provides Bentley specific implementation of the std::atomic template class (Bentley/BeAtomic.h). More...

#include "Bentley.h"

Go to the source code of this file.

Classes

struct  BeAtomic< T >
 std::atomic<UTYPE> work-alike for use by C++/CLI managed code More...
 
struct  BeAtomic< UInt32 >
 
struct  BeAtomic< int >
 

Namespaces

 Bentley
 The Bentley namespace contains types defined by the Bentley Library.
 

Macros

#define BE_ATOMIC_IMPL(UTYPE, TYPE_SUFFIX, CAST_TYPE)
 

Functions

long __cdecl _InterlockedIncrement (long volatile *)
 
long __cdecl _InterlockedDecrement (long volatile *)
 
long __cdecl _InterlockedExchange (long volatile *, long)
 
long __cdecl _InterlockedExchangeAdd (long volatile *, long)
 
void *__cdecl _InterlockedExchangePointer (void *volatile *, void *)
 
long __cdecl _InterlockedCompareExchange (long volatile *, long, long)
 
void *__cdecl _InterlockedCompareExchangePointer (void *volatile *, void *, void *)
 

Detailed Description

Provides Bentley specific implementation of the std::atomic template class (Bentley/BeAtomic.h).

Macro Definition Documentation

#define BE_ATOMIC_IMPL (   UTYPE,
  TYPE_SUFFIX,
  CAST_TYPE 
)
Value:
private:\
UTYPE volatile m_value;\
BeAtomic& operator= (BeAtomic const&);\
BeAtomic (BeAtomic const&);\
public:\
BeAtomic() : m_value(0) {;}\
BeAtomic (UInt32 v) : m_value(v) {;}\
UTYPE operator++() volatile {return _InterlockedIncrement ## TYPE_SUFFIX ((CAST_TYPE volatile*)&m_value);}\
UTYPE operator++(int) volatile {return _InterlockedIncrement ## TYPE_SUFFIX ((CAST_TYPE volatile*)&m_value)-1;}\
UTYPE operator--() volatile {return _InterlockedDecrement ## TYPE_SUFFIX ((CAST_TYPE volatile*)&m_value);}\
UTYPE operator--(int) volatile {return _InterlockedDecrement ## TYPE_SUFFIX ((CAST_TYPE volatile*)&m_value)+1;}\
UTYPE load() const {return _InterlockedCompareExchange ## TYPE_SUFFIX ((CAST_TYPE volatile*)&m_value,0,0);}\
void store (UTYPE v) const {_InterlockedExchange ## TYPE_SUFFIX ((CAST_TYPE volatile*)&m_value,v);} \
UTYPE IncrementAtomicPre () {return _InterlockedIncrement ## TYPE_SUFFIX ((CAST_TYPE volatile*)&m_value);}
long __cdecl _InterlockedIncrement(long volatile *)
uint32_t UInt32
Definition: Bentley.r.h:128
bstdmap & operator=(const bstdmap &__rhs)
Definition: stdcxx/bstdmap.h:170
long __cdecl _InterlockedExchange(long volatile *, long)
std::atomic work-alike for use by C++/CLI managed code
Definition: BeAtomic.h:63
long __cdecl _InterlockedDecrement(long volatile *)
long __cdecl _InterlockedCompareExchange(long volatile *, long, long)

Function Documentation

long __cdecl _InterlockedCompareExchange ( long volatile *  ,
long  ,
long   
)
void* __cdecl _InterlockedCompareExchangePointer ( void *volatile *  ,
void *  ,
void *   
)
long __cdecl _InterlockedDecrement ( long volatile *  )
long __cdecl _InterlockedExchange ( long volatile *  ,
long   
)
long __cdecl _InterlockedExchangeAdd ( long volatile *  ,
long   
)
void* __cdecl _InterlockedExchangePointer ( void *volatile *  ,
void *   
)
long __cdecl _InterlockedIncrement ( long volatile *  )

Copyright © 2017 Bentley Systems, Incorporated. All rights reserved.