LMMS
Loading...
Searching...
No Matches
juce::FlagCache< requiredFlagBitsPerItem > Class Template Reference

#include <juce_FlagCache.h>

Public Member Functions

 FlagCache ()=default
 FlagCache (size_t items)
void set (size_t index, FlagType bits)
template<typename Callback>
void ifSet (Callback &&callback)
void clear ()

Private Types

using FlagType = uint32_t

Static Private Member Functions

static constexpr FlagType moveToGroupPosition (FlagType ungrouped, size_t groupIndex)
static constexpr FlagType moveFromGroupPosition (FlagType grouped, size_t groupIndex)
static constexpr size_t findNextPowerOfTwoImpl (size_t n, size_t shift)
static constexpr size_t findNextPowerOfTwo (size_t value)
static constexpr size_t divCeil (size_t a, size_t b)

Private Attributes

std::vector< std::atomic< FlagType > > flags

Static Private Attributes

static constexpr size_t bitsPerFlagGroup = findNextPowerOfTwo (requiredFlagBitsPerItem)
static constexpr size_t groupsPerWord = (8 * sizeof (FlagType)) / bitsPerFlagGroup
static constexpr FlagType groupMask = ((FlagType) 1 << requiredFlagBitsPerItem) - 1

Member Typedef Documentation

◆ FlagType

template<size_t requiredFlagBitsPerItem>
using juce::FlagCache< requiredFlagBitsPerItem >::FlagType = uint32_t
private

Constructor & Destructor Documentation

◆ FlagCache() [1/2]

template<size_t requiredFlagBitsPerItem>
juce::FlagCache< requiredFlagBitsPerItem >::FlagCache ( )
default

◆ FlagCache() [2/2]

template<size_t requiredFlagBitsPerItem>
juce::FlagCache< requiredFlagBitsPerItem >::FlagCache ( size_t items)
inlineexplicit

Member Function Documentation

◆ clear()

template<size_t requiredFlagBitsPerItem>
void juce::FlagCache< requiredFlagBitsPerItem >::clear ( )
inline

◆ divCeil()

template<size_t requiredFlagBitsPerItem>
constexpr size_t juce::FlagCache< requiredFlagBitsPerItem >::divCeil ( size_t a,
size_t b )
inlinestaticconstexprprivate

◆ findNextPowerOfTwo()

template<size_t requiredFlagBitsPerItem>
constexpr size_t juce::FlagCache< requiredFlagBitsPerItem >::findNextPowerOfTwo ( size_t value)
inlinestaticconstexprprivate

◆ findNextPowerOfTwoImpl()

template<size_t requiredFlagBitsPerItem>
constexpr size_t juce::FlagCache< requiredFlagBitsPerItem >::findNextPowerOfTwoImpl ( size_t n,
size_t shift )
inlinestaticconstexprprivate

◆ ifSet()

template<size_t requiredFlagBitsPerItem>
template<typename Callback>
void juce::FlagCache< requiredFlagBitsPerItem >::ifSet ( Callback && callback)
inline

◆ moveFromGroupPosition()

template<size_t requiredFlagBitsPerItem>
constexpr FlagType juce::FlagCache< requiredFlagBitsPerItem >::moveFromGroupPosition ( FlagType grouped,
size_t groupIndex )
inlinestaticconstexprprivate

◆ moveToGroupPosition()

template<size_t requiredFlagBitsPerItem>
constexpr FlagType juce::FlagCache< requiredFlagBitsPerItem >::moveToGroupPosition ( FlagType ungrouped,
size_t groupIndex )
inlinestaticconstexprprivate

◆ set()

template<size_t requiredFlagBitsPerItem>
void juce::FlagCache< requiredFlagBitsPerItem >::set ( size_t index,
FlagType bits )
inline

Member Data Documentation

◆ bitsPerFlagGroup

template<size_t requiredFlagBitsPerItem>
size_t juce::FlagCache< requiredFlagBitsPerItem >::bitsPerFlagGroup = findNextPowerOfTwo (requiredFlagBitsPerItem)
staticconstexprprivate

◆ flags

template<size_t requiredFlagBitsPerItem>
std::vector<std::atomic<FlagType> > juce::FlagCache< requiredFlagBitsPerItem >::flags
private

◆ groupMask

template<size_t requiredFlagBitsPerItem>
FlagType juce::FlagCache< requiredFlagBitsPerItem >::groupMask = ((FlagType) 1 << requiredFlagBitsPerItem) - 1
staticconstexprprivate

◆ groupsPerWord

template<size_t requiredFlagBitsPerItem>
size_t juce::FlagCache< requiredFlagBitsPerItem >::groupsPerWord = (8 * sizeof (FlagType)) / bitsPerFlagGroup
staticconstexprprivate

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