Class templates for simple Freedom From Interference (FFI) Note that this implementation uses C++20 constraints and concepts. More...
#include <cassert>#include <type_traits>
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) |
Class templates for simple Freedom From Interference (FFI) Note that this implementation uses C++20 constraints and concepts.