libDwm-0.9.45
DwmFFIVar.hh File Reference

Class templates for simple Freedom From Interference (FFI) Note that this implementation uses C++20 constraints and concepts. More...

#include <cassert>
#include <type_traits>
Include dependency graph for DwmFFIVar.hh:

Go to the source code of this file.

Classes

class  Dwm::FFIVar< T, Enable >
 The main idea here is to encpasulate a scalar type to provide protection from interference. More...
 
class  Dwm::FFIVar< T, typename std::enable_if< std::is_integral< T >::value >::type >
 Specialization for integral types. More...
 
class  Dwm::FFIVar< T, typename std::enable_if< std::is_floating_point< T >::value >::type >
 Specialization for floating point types. No bitwise operators. More...
 
class  Dwm::FFIVar< T, typename std::enable_if< std::is_pointer< T >::value >::type >
 Specialization for pointers. More...
 

Concepts

concept  Dwm::AreFFI_Addable
 Concepts to apply to binary operators.
 
concept  Dwm::AreFFI_Subtractable
 T2 can be subtracted from T1 and yield a T1. i.e. { T1 - T2 } -> T1.
 
concept  Dwm::AreFFI_Dividable
 T1 can be divided by T2 and yield a T1. i.e. { T1 / T2 } -> T1.
 
concept  Dwm::AreFFI_Moduloable
 T1 modulo T2 yields a T1. i.e. { T1 % T2 } -> T1.
 
concept  Dwm::AreFFI_Multipliable
 T1 can be multiplied by T2 and yield a T1. i.e. { T1 * T2 } -> T1.
 

Functions

template<typename T1 , typename T2 , typename std::enable_if< AreFFI_Addable< T1, T2 > > >
FFIVar< T1 > Dwm::operator+ (FFIVar< T1 > lhs, FFIVar< T2 > rhs)
 Binary operators.
 
template<typename T1 , typename T2 , typename std::enable_if< AreFFI_Subtractable< T1, T2 > > >
FFIVar< T1 > Dwm::operator- (FFIVar< T1 > lhs, FFIVar< T2 > rhs)
 
template<typename T1 , typename T2 , typename std::enable_if< AreFFI_Multipliable< T1, T2 > > >
FFIVar< T1 > Dwm::operator* (FFIVar< T1 > lhs, FFIVar< T2 > rhs)
 
template<typename T1 , typename T2 , typename std::enable_if< AreFFI_Dividable< T1, T2 > > >
FFIVar< T1 > Dwm::operator/ (FFIVar< T1 > lhs, FFIVar< T2 > rhs)
 
template<typename T1 , typename T2 , typename std::enable_if< AreFFI_Moduloable< T1, T2 > > >
FFIVar< T1 > Dwm::operator% (FFIVar< T1 > lhs, FFIVar< T2 > rhs)
 
template<typename T , typename std::enable_if< std::is_integral< T >::value >::type >
FFIVar< T > Dwm::operator>> (FFIVar< T > lhs, FFIVar< T > rhs)
 
template<typename T , typename std::enable_if< std::is_integral< T >::value >::type >
FFIVar< T > Dwm::operator<< (FFIVar< T > lhs, FFIVar< T > rhs)
 
template<typename T , typename std::enable_if< std::is_integral< T >::value >::type >
FFIVar< T > Dwm::operator& (FFIVar< T > lhs, FFIVar< T > rhs)
 
template<typename T , typename std::enable_if< std::is_integral< T >::value >::type >
FFIVar< T > Dwm::operator| (FFIVar< T > lhs, FFIVar< T > rhs)
 
template<typename T , typename std::enable_if< std::is_integral< T >::value >::type >
FFIVar< T > Dwm::operator^ (FFIVar< T > lhs, FFIVar< T > rhs)
 

Detailed Description

Class templates for simple Freedom From Interference (FFI) Note that this implementation uses C++20 constraints and concepts.

Author
Daniel W. McRobb