ReXGlue SDK
Loading...
Searching...
No Matches
rex::EndianValue< T, E > Struct Template Reference

#include <rex/types.h>

Public Types

using value_type = T

Public Member Functions

 EndianValue (const T &src)
 EndianValue (const EndianValue &)=default
EndianValue & operator= (const EndianValue &)=default
 operator T () const
void Set (const T &src)
T Get () const
T Load (std::memory_order order) const
void Store (T src, std::memory_order order)
bool CompareExchange (T &expected, T desired, std::memory_order order)
EndianValue< T, E > & operator+= (int a)
EndianValue< T, E > & operator-= (int a)
EndianValue< T, E > & operator++ ()
EndianValue< T, E > operator++ (int)
EndianValue< T, E > & operator-- ()
EndianValue< T, E > operator-- (int)

Public Attributes

T value

Detailed Description

template<typename T, std::endian E>
struct rex::EndianValue< T, E >

Value held in memory in a fixed byte order and converted to native order on access.

Member Function Documentation

◆ CompareExchange()

template<typename T, std::endian E>
bool rex::EndianValue< T, E >::CompareExchange ( T & expected,
T desired,
std::memory_order order )
inline

Replaces the value atomically when it equals an expected native value.

Parameters
expectedThe native value to compare. Receives the current native value on failure.
desiredThe native value to store on success.
Returns
True when the value matched and desired was stored.

◆ Get()

template<typename T, std::endian E>
T rex::EndianValue< T, E >::Get ( ) const
inline
Returns
The value in native byte order.

◆ Load()

template<typename T, std::endian E>
T rex::EndianValue< T, E >::Load ( std::memory_order order) const
inline

Loads the native value atomically.

Returns
The value in native byte order.

◆ operator T()

template<typename T, std::endian E>
rex::EndianValue< T, E >::operator T ( ) const
inline
Returns
The value in native byte order.

◆ Set()

template<typename T, std::endian E>
void rex::EndianValue< T, E >::Set ( const T & src)
inline

Stores a native value in byte order E.

◆ Store()

template<typename T, std::endian E>
void rex::EndianValue< T, E >::Store ( T src,
std::memory_order order )
inline

Stores a native value in byte order E atomically.

Member Data Documentation

◆ value

template<typename T, std::endian E>
T rex::EndianValue< T, E >::value

The raw value in byte order E.


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