Evo C++ Library v0.5.1
Public Types | Public Member Functions | List of all members
Atomic< T > Class Template Reference

#include <evo/atomic.h>

Inheritance diagram for Atomic< T >:
Inheritance graph
[legend]

Detailed Description

template<class T>
class evo::Atomic< T >

Atomic integer type.

Template Parameters
TInteger type – must be a pointer or one of the supported integer types for best portability, though certain OS/compiler may support more
Example
#include <evo/atomic.h>
using namespace evo;
int main() {
// Defaults to 0
AtomicInt num;
// Use like a normal number
num = 1;
if (++num == 2)
num += 2;
// Or use methods
num.store(5);
// Beware: Separate operations are still separate without any synchronization (Mutex)
if (num > 0) // num can change right after comparison here
num = 0; // and before this sets it to 0
return 0;
}

Public Types

typedef Atomic< T > This
 This type. More...
 

Public Member Functions

 Atomic ()
 Constructor, initializes with 0. More...
 
 Atomic (T num)
 Constructor. More...
 
bool compare_set (T cmpval, T newval, MemOrder mem_order_success=std::memory_order_seq_cst, MemOrder mem_order_failure=std::memory_order_acquire)
 Compare and set, storing new value if comparison matches. More...
 
exchange (T num, MemOrder mem_order=std::memory_order_seq_cst)
 Exchange current value with new value. More...
 
fetch_add (T num, MemOrder mem_order=std::memory_order_seq_cst)
 Add number to value and return the previous value. More...
 
fetch_and (T num, MemOrder mem_order=std::memory_order_seq_cst)
 Bitwise AND with value and return the previous value. More...
 
fetch_or (T num, MemOrder mem_order=std::memory_order_seq_cst)
 Bitwise OR with value and return the previous value. More...
 
fetch_sub (T num, MemOrder mem_order=std::memory_order_seq_cst)
 Subtract number to value and return the previous value. More...
 
fetch_xor (T num, MemOrder mem_order=std::memory_order_seq_cst)
 Bitwise XOR with value and return the previous value. More...
 
load (MemOrder mem_order=std::memory_order_seq_cst) const
 Load and return current value. More...
 
operator &= (T num)
 Bitwise AND value and return new value. More...
 
 operator SafeBoolType () const
 Safe (explicit) evaluation as bool type. More...
 
 operator T () const
 Implicit conversion to integer type. More...
 
bool operator! () const
 Negation operator checks if NULL/false (0). More...
 
bool operator!= (const This &num) const
 Compare whether current value is not equal to number. More...
 
bool operator!= (T num) const
 Compare whether current value is not equal to number. More...
 
operator++ ()
 Increment value and return new value. More...
 
operator++ (int)
 Increment value and return previous value. More...
 
operator+= (T num)
 Increment value and return new value. More...
 
operator-- ()
 Decrement value and return new value. More...
 
operator-- (int)
 Decrement value and return previous value. More...
 
operator-= (T num)
 Decrement value and return new value. More...
 
const T operator-> () const
 Member access operator (const). More...
 
operator-> ()
 Member access operator. More...
 
bool operator< (T num) const
 Compare whether current value is less than number. More...
 
bool operator<= (T num) const
 Compare whether current value is less than or equal to number. More...
 
Thisoperator= (T num)
 Store new value. More...
 
bool operator== (const This &num) const
 Compare whether current value is equal to number. More...
 
bool operator== (T num) const
 Compare whether current value is equal to number. More...
 
bool operator> (T num) const
 Compare whether current value is greater than number. More...
 
bool operator>= (T num) const
 Compare whether current value is greater than or equal to number. More...
 
operator^= (T num)
 Bitwise XOR value and return new value. More...
 
operator|= (T num)
 Bitwise OR value and return new value. More...
 
void store (T num, MemOrder mem_order=std::memory_order_seq_cst)
 Store new value. More...
 

Member Function Documentation

◆ operator SafeBoolType()

operator SafeBoolType ( ) const
inlineinherited

Safe (explicit) evaluation as bool type.

  • This is called when object is directly evaluated as a bool, and is equivalent to: !operator!()
  • See SafeBool

The documentation for this class was generated from the following file: