BitSet.h File Reference
#include <cstddef>
#include <cstdint>
#include <limits>
#include <type_traits>
#include <WString.h>
#include <Print.h>
Include dependency graph for BitSet.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

class  BitSet< S, E, size_ >
 Manage a set of bit values using enumeration. More...
 
class  BitSet< S, E, size_ >::BitRef
 

Typedefs

using BitSet32 = BitSet< uint32_t, uint8_t >
 A set of 32 bits. More...
 

Functions

template<typename S , typename E , size_t size_>
constexpr BitSet< S, E, size_ > operator& (const BitSet< S, E, size_ > &x, const BitSet< S, E, size_ > &y)
 
template<typename S , typename E , size_t size_>
constexpr BitSet< S, E, size_ > operator| (BitSet< S, E, size_ > x, BitSet< S, E, size_ > y)
 
template<typename S , typename E , size_t size_>
constexpr BitSet< S, E, size_ > operator| (BitSet< S, E, size_ > x, E b)
 
template<typename S , typename E , size_t size_>
constexpr BitSet< S, E, size_ > operator+ (const BitSet< S, E, size_ > &x, const BitSet< S, E, size_ > &y)
 
template<typename S , typename E , size_t size_>
constexpr BitSet< S, E, size_ > operator- (const BitSet< S, E, size_ > &x, const BitSet< S, E, size_ > &y)
 
template<typename S , typename E , size_t size_>
constexpr BitSet< S, E, size_ > operator+ (const BitSet< S, E, size_ > &x, E b)
 
template<typename S , typename E , size_t size_>
constexpr BitSet< S, E, size_ > operator- (const BitSet< S, E, size_ > &x, E b)
 
template<typename S , typename E , size_t size_>
constexpr BitSet< S, E, size_ > operator^ (BitSet< S, E, size_ > x, BitSet< S, E, size_ > y)
 
template<typename S , typename E , size_t size_>
constexpr BitSet< S, E, size_ > operator^ (BitSet< S, E, size_ > x, E b)
 
template<typename E >
constexpr std::enable_if< std::is_enum< E >::value &&!std::is_convertible< E, int >::value, BitSet< uint32_t, E > >::type operator| (E a, E b)
 
template<typename E >
constexpr std::enable_if< std::is_enum< E >::value &&!std::is_convertible< E, int >::value, BitSet< uint32_t, E > >::type operator+ (E a, E b)
 
template<typename T >
std::enable_if< std::is_integral< T >::value, String >::type toString (T value)
 
template<typename S , typename E , size_t size_>
String toString (const BitSet< S, E, size_ > &bitset, const String &separator=", ")
 Class template to print the contents of a BitSet to a String. More...
 

Typedef Documentation

◆ BitSet32

using BitSet32 = BitSet<uint32_t, uint8_t>

A set of 32 bits.

Function Documentation

◆ operator&()

template<typename S , typename E , size_t size_>
constexpr BitSet<S, E, size_> operator& ( const BitSet< S, E, size_ > &  x,
const BitSet< S, E, size_ > &  y 
)
inlineconstexpr

◆ operator+() [1/3]

template<typename S , typename E , size_t size_>
constexpr BitSet<S, E, size_> operator+ ( const BitSet< S, E, size_ > &  x,
const BitSet< S, E, size_ > &  y 
)
inlineconstexpr

◆ operator+() [2/3]

template<typename S , typename E , size_t size_>
constexpr BitSet<S, E, size_> operator+ ( const BitSet< S, E, size_ > &  x,
b 
)
inlineconstexpr

◆ operator+() [3/3]

template<typename E >
constexpr std::enable_if<std::is_enum<E>::value && !std::is_convertible<E, int>::value, BitSet<uint32_t, E> >::type operator+ ( a,
b 
)
constexpr

◆ operator-() [1/2]

template<typename S , typename E , size_t size_>
constexpr BitSet<S, E, size_> operator- ( const BitSet< S, E, size_ > &  x,
const BitSet< S, E, size_ > &  y 
)
inlineconstexpr

◆ operator-() [2/2]

template<typename S , typename E , size_t size_>
constexpr BitSet<S, E, size_> operator- ( const BitSet< S, E, size_ > &  x,
b 
)
inlineconstexpr

◆ operator^() [1/2]

template<typename S , typename E , size_t size_>
constexpr BitSet<S, E, size_> operator^ ( BitSet< S, E, size_ >  x,
BitSet< S, E, size_ >  y 
)
inlineconstexpr

◆ operator^() [2/2]

template<typename S , typename E , size_t size_>
constexpr BitSet<S, E, size_> operator^ ( BitSet< S, E, size_ >  x,
b 
)
inlineconstexpr

◆ operator|() [1/3]

template<typename S , typename E , size_t size_>
constexpr BitSet<S, E, size_> operator| ( BitSet< S, E, size_ >  x,
BitSet< S, E, size_ >  y 
)
inlineconstexpr

◆ operator|() [2/3]

template<typename S , typename E , size_t size_>
constexpr BitSet<S, E, size_> operator| ( BitSet< S, E, size_ >  x,
b 
)
inlineconstexpr

◆ operator|() [3/3]

template<typename E >
constexpr std::enable_if<std::is_enum<E>::value && !std::is_convertible<E, int>::value, BitSet<uint32_t, E> >::type operator| ( a,
b 
)
constexpr

◆ toString() [1/2]

template<typename S , typename E , size_t size_>
String toString ( const BitSet< S, E, size_ > &  bitset,
const String separator = ", " 
)

Class template to print the contents of a BitSet to a String.

Note
Requires an implementation of toString(E)

◆ toString() [2/2]

template<typename T >
std::enable_if<std::is_integral<T>::value, String>::type toString ( value)