PackedList< Width > Class Template Reference

A dynamic list of packed unsigned integers, with the number of bits per item specified by the <Width> template parameter. More...

Inheritance diagram for PackedList< Width >:
[legend]
Collaboration diagram for PackedList< Width >:
[legend]

Classes

class  reference
 A reference supporting read/write access to an entry. More...
 

Public Types

typedef unsigned int block_type
 The storage block type for bit elements. More...
 
typedef unsigned int const_reference
 

Public Member Functions

constexpr PackedList () noexcept
 Default construct, zero-sized and no allocation. More...
 
 PackedList (const label numElem)
 Construct for given number of elements, initializes values to 0. More...
 
 PackedList (const label numElem, const unsigned int val)
 
 PackedList (Istream &is)
 Construct from Istream. More...
 
 PackedList (const PackedList< Width > &list)
 Copy construct. More...
 
 PackedList (PackedList< Width > &&list)
 Move construct. More...
 
 PackedList (const PackedList< Width > &list, const labelUList &addr)
 Copy construct a subset. More...
 
template<class Addr >
 PackedList (const PackedList< Width > &list, const IndirectListBase< label, Addr > &addr)
 Copy construct a subset. More...
 
 PackedList (const PackedList< Width > &list, const labelRange &range)
 Copy construct a subset range. More...
 
 PackedList (const labelUList &values)
 Construct from a list of values. More...
 
template<class Addr >
 PackedList (const IndirectListBase< label, Addr > &values)
 Construct from a indirect list of values. More...
 
autoPtr< PackedList< Width > > clone () const
 Clone. More...
 
void checkIndex (const label i) const
 Check index is within valid range [0,size) More...
 
label size () const noexcept
 Number of entries. More...
 
bool empty () const noexcept
 True if the list is empty (ie, size() is zero). More...
 
label capacity () const
 The number of elements that can be stored with reallocating. More...
 
bool uniform () const
 True if all entries have identical values, and list is non-empty. More...
 
bool equal (const PackedList< Width > &other) const
 Test for equality of sizes and the bits set. More...
 
unsigned int get (const label i) const
 Get value at index i or 0 for out-of-range. More...
 
bool set (const label i, unsigned int val=~0u)
 Set value at index i, default value set is the max_value. More...
 
bool unset (const label i)
 Unset the entry at index i. More...
 
labelList values () const
 Return the values as a list of labels. More...
 
template<class IntType = unsigned int>
List< IntType > unpack () const
 Return the values as a list of integral type. More...
 
template<class IntType = unsigned int>
List< IntType > unpack (const labelRange &range) const
 Return the range of values as a list of integral type. More...
 
template<class IntType = unsigned int>
List< IntType > unpack (const labelUList &locations) const
 
void fill (const unsigned int val)
 Assign all entries to the given value. More...
 
bool trim (label minpos=-1)
 
void reset ()
 Clear all bits but do not adjust the addressable size. More...
 
void setCapacity (const label nElem)
 Alter the size of the underlying storage. More...
 
void resize (const label nElem, const unsigned int val=0u)
 Reset addressable list size, does not shrink the allocated size. More...
 
void reserve (const label nElem)
 Reserve allocation space for at least this size. More...
 
void clear ()
 Clear the list, i.e. set addressable size to zero. More...
 
void clearStorage ()
 Clear the list and delete storage. More...
 
void shrink ()
 Shrink the allocated space to what is actually used. More...
 
void swap (PackedList< Width > &rhs)
 Swap contents with argument. More...
 
void transfer (PackedList< Width > &rhs)
 
std::streamsize byteSize () const
 
label nBlocks () const
 The number of internal storage blocks. More...
 
const List< unsigned int > & storage () const
 Return the underlying storage blocks. More...
 
List< unsigned int > & storage ()
 Return the underlying storage blocks. More...
 
OstreamprintBits (Ostream &os, bool debugOutput=false) const
 Print bit patterns, optionally with extra debug. More...
 
Istreamread (Istream &is)
 Clear list and read from stream. More...
 
OstreamwriteList (Ostream &os, const label shortLen=0) const
 Write List, with line-breaks in ASCII when length exceeds shortLen. More...
 
void writeEntry (const word &keyword, Ostream &os) const
 Write as a dictionary entry with keyword. More...
 
PackedList< Width > & append (const unsigned int val)
 Append a value at the end of the list. More...
 
unsigned int remove ()
 Remove and return the last element. More...
 
unsigned int operator[] (const label i) const
 Identical to get() - get value at index. More...
 
reference operator[] (const label i)
 Non-const access to value at index. More...
 
void operator= (const PackedList< Width > &lst)
 Copy assignment. More...
 
void operator= (PackedList< Width > &&lst)
 Move assignment. More...
 
void operator= (const unsigned int val)
 Assign all entries to the given value. fill() More...
 
InfoProxy< PackedList< Width > > info () const
 Return info proxy. More...
 
void assign (const unsigned int val)
 Deprecated(2020-11) use fill() More...
 
void assign (const PackedList< Width > &rhs)
 Deprecated(2020-11) use operator=. More...
 
void setSize (const label len, unsigned int val=0u)
 Alias for resize() More...
 
template<class IntType >
Foam::List< IntType > unpack () const
 
template<class IntType >
Foam::List< IntType > unpack (const labelRange &range) const
 
template<class IntType >
Foam::List< IntType > unpack (const labelUList &locations) const
 

Static Public Member Functions

static constexpr label num_blocks (label numElem)
 
static constexpr block_type mask_lower (unsigned elementOffset)
 Masking for all bits below the element offset. More...
 

Static Public Attributes

static constexpr unsigned bits_per_block = (std::numeric_limits<block_type>::digits)
 The number of bits in a single block. More...
 
static constexpr unsigned element_width = (Width)
 The width of an individual element (in bits). More...
 
static constexpr unsigned elem_per_block = (bits_per_block / Width)
 The number of elements stored per data block. More...
 
static constexpr block_type max_value = ((1u << Width) - 1)
 

Protected Types

typedef List< block_typeblock_container
 The internal container for storing the blocks. More...
 

Protected Member Functions

void setPair (Istream &is)
 Read an index/value pair and set accordingly. More...
 
void writeEntry (Ostream &os) const
 Write as a dictionary entry. More...
 
void clear_trailing_bits ()
 Clear any partial rubbish in the last addressable block. More...
 
void copyAssign (const PackedList< Width > &rhs)
 Copy assignment. More...
 
template<>
unsigned int repeated_value (unsigned val)
 
template<>
unsigned int readValue (Istream &is)
 
template<>
void setPair (Istream &is)
 

Static Protected Member Functions

static unsigned int repeated_value (unsigned val)
 A fill value for complete blocks. More...
 
static unsigned int readValue (Istream &is)
 Read a list entry (allows for specialization) More...
 

Protected Attributes

block_container blocks_
 The blocks of raw data. More...
 
label size_
 Number of entries used. More...
 

Friends

Ostreamoperator (Ostream &os, const InfoProxy< PackedList< Width >> &info)
 
Istreamoperator>> (Istream &is, PackedList< Width > &list)
 

Detailed Description

template<unsigned Width>
class Foam::PackedList< Width >

A dynamic list of packed unsigned integers, with the number of bits per item specified by the <Width> template parameter.

Resizing is similar to DynamicList so that clear() and resize() affect the addressed size, but not the allocated size. The reserve() and setCapacity() methods can be used to influence the allocation.

Note
In a const context, the '[]' operator simply returns the stored value, with out-of-range elements returned as zero.

In a non-const context, the '[]' operator returns a reference to an existing value. When accessing out-of-range elements, some caution is required to ensure that the const version of the [] operator is actually being called. The get() method is functionally identical the the '[]' operator, but is always const access.

The set() and unset() methods return a bool if the value changed.

With const access, the get() method and 'operator[]' are identical. With non-const access, the 'operator[]' may be marginally slower get().

The set() method may be marginally faster than using the 'operator[]' supports auto-vivification and also returns a bool if the value changed, which can be useful for branching on changed values.

list.set(5, 4);
changed = list.set(5, 8);
if (changed) ...

In a const context, reading an out-of-range element returns zero without affecting the list size. For example,

list.resize(4);
Info<< list.get(10) << "\n"; // print zero, but doesn't adjust list
list.set(8); // auto-vivify

Also note that all unused internal storage elements are guaranteed to always be bit-wise zero. This property must not be violated by any inheriting classes.

Note
Iterators for this class have been intentionally removed, for performance reasons.
See also
Foam::BitOps Foam::DynamicList
Source files

Definition at line 108 of file PackedList.H.

Member Typedef Documentation

◆ block_type

typedef unsigned int block_type

The storage block type for bit elements.

Note
Type name compatibility with boost::dynamic_bitset

Definition at line 136 of file PackedList.H.

◆ block_container

typedef List<block_type> block_container
protected

The internal container for storing the blocks.

Definition at line 181 of file PackedList.H.

◆ const_reference

typedef unsigned int const_reference

Definition at line 228 of file PackedList.H.

Constructor & Destructor Documentation

◆ PackedList() [1/11]

constexpr PackedList ( )
inlineconstexprnoexcept

Default construct, zero-sized and no allocation.

Definition at line 177 of file PackedListI.H.

◆ PackedList() [2/11]

PackedList ( const label  numElem)
inlineexplicit

Construct for given number of elements, initializes values to 0.

Definition at line 185 of file PackedListI.H.

◆ PackedList() [3/11]

PackedList ( const label  numElem,
const unsigned int  val 
)
inline

Construct for given number of elements, and the specified value for each element

Definition at line 194 of file PackedListI.H.

◆ PackedList() [4/11]

PackedList ( Istream is)
inline

Construct from Istream.

Definition at line 210 of file PackedListI.H.

◆ PackedList() [5/11]

PackedList ( const PackedList< Width > &  list)
inline

Copy construct.

Definition at line 220 of file PackedListI.H.

◆ PackedList() [6/11]

PackedList ( PackedList< Width > &&  list)
inline

Move construct.

Definition at line 228 of file PackedListI.H.

◆ PackedList() [7/11]

PackedList ( const PackedList< Width > &  list,
const labelUList addr 
)

Copy construct a subset.

Definition at line 35 of file PackedList.C.

◆ PackedList() [8/11]

PackedList ( const PackedList< Width > &  list,
const IndirectListBase< label, Addr > &  addr 
)

Copy construct a subset.

Definition at line 54 of file PackedList.C.

◆ PackedList() [9/11]

PackedList ( const PackedList< Width > &  list,
const labelRange range 
)

Copy construct a subset range.

Definition at line 72 of file PackedList.C.

◆ PackedList() [10/11]

PackedList ( const labelUList values)
inlineexplicit

Construct from a list of values.

Definition at line 238 of file PackedListI.H.

◆ PackedList() [11/11]

PackedList ( const IndirectListBase< label, Addr > &  values)
inlineexplicit

Construct from a indirect list of values.

Definition at line 259 of file PackedListI.H.

Member Function Documentation

◆ num_blocks()

static constexpr label num_blocks ( label  numElem)
inlinestaticconstexpr

Calculate the number of blocks required to _address_ the requested number of elements.

We calculate this:

(numElem / elem_per_block)
+ (numElem % elem_per_block) ? 1 : 0

But avoiding the modulus operation

Definition at line 163 of file PackedList.H.

Referenced by PackedList< 2 >::byteSize(), PackedList< 2 >::fill(), PackedList< 2 >::nBlocks(), PackedList< 2 >::reserve(), PackedList< 2 >::resize(), PackedList< 2 >::setCapacity(), and PackedList< 2 >::shrink().

Here is the caller graph for this function:

◆ mask_lower()

static constexpr block_type mask_lower ( unsigned  elementOffset)
inlinestaticconstexpr

Masking for all bits below the element offset.

Ill-defined when elementOffset is out of range.

Definition at line 170 of file PackedList.H.

Referenced by PackedList< 2 >::resize().

Here is the caller graph for this function:

◆ repeated_value() [1/2]

unsigned int repeated_value ( unsigned  val)
inlinestaticprotected

A fill value for complete blocks.

Enforce non-zero Width to fit within the block storage and require at least 2 items per storage block for general efficiency.

Thus 1/2 of the base storage size is (sizeof(block_type)*8/2), or (sizeof(block_type) << 2)

Definition at line 34 of file PackedListI.H.

Referenced by PackedList< 2 >::fill(), and PackedList< 2 >::resize().

Here is the caller graph for this function:

◆ readValue() [1/2]

unsigned int readValue ( Istream is)
inlinestaticprotected

Read a list entry (allows for specialization)

Definition at line 41 of file PackedListI.H.

Referenced by PackedList< 2 >::read().

Here is the caller graph for this function:

◆ setPair() [1/2]

void setPair ( Istream is)
inlineprotected

Read an index/value pair and set accordingly.

For bool specialization, read a single index value

Definition at line 58 of file PackedListI.H.

Referenced by PackedList< 2 >::read().

Here is the caller graph for this function:

◆ writeEntry() [1/2]

void writeEntry ( Ostream os) const
protected

Write as a dictionary entry.

Definition at line 34 of file PackedListIO.C.

◆ clear_trailing_bits()

void clear_trailing_bits ( )
inlineprotected

Clear any partial rubbish in the last addressable block.

This rubbish may have arisen from block-wise operations etc.

Definition at line 83 of file PackedListI.H.

Referenced by PackedList< 2 >::fill(), PackedList< 2 >::resize(), and PackedList< 2 >::setCapacity().

Here is the caller graph for this function:

◆ copyAssign()

void copyAssign ( const PackedList< Width > &  rhs)
inlineprotected

Copy assignment.

Definition at line 142 of file PackedListI.H.

Referenced by PackedList< 2 >::operator=().

Here is the caller graph for this function:

◆ clone()

Foam::autoPtr< Foam::PackedList< Width > > clone ( ) const
inline

Clone.

Definition at line 281 of file PackedListI.H.

◆ checkIndex()

void checkIndex ( const label  i) const
inline

Check index is within valid range [0,size)

Definition at line 359 of file PackedListI.H.

Referenced by PackedList< 2 >::operator[]().

Here is the caller graph for this function:

◆ size()

◆ empty()

bool empty ( ) const
inlinenoexcept

True if the list is empty (ie, size() is zero).

Definition at line 384 of file PackedListI.H.

Referenced by bitSet::andEq(), ensightMesh::correct(), PackedList< 2 >::fill(), bitSet::minusEq(), bitSet::orEq(), and bitSet::xorEq().

Here is the caller graph for this function:

◆ capacity()

Foam::label capacity ( ) const
inline

The number of elements that can be stored with reallocating.

Definition at line 391 of file PackedListI.H.

Referenced by Foam::operator<<().

Here is the caller graph for this function:

◆ uniform()

bool uniform ( ) const

True if all entries have identical values, and list is non-empty.

Definition at line 93 of file PackedList.C.

Referenced by PackedList< 2 >::writeList().

Here is the caller graph for this function:

◆ equal()

bool equal ( const PackedList< Width > &  other) const

Test for equality of sizes and the bits set.

Definition at line 152 of file PackedList.C.

Referenced by Foam::operator!=(), and Foam::operator==().

Here is the caller graph for this function:

◆ get()

unsigned int get ( const label  i) const
inline

Get value at index i or 0 for out-of-range.

Never auto-vivify entries.

Definition at line 585 of file PackedListI.H.

Referenced by bitSet::bitSet(), PackedList< Width >::reference::operator unsigned int(), PackedList< 2 >::operator[](), and PackedList< 2 >::PackedList().

Here is the caller graph for this function:

◆ set()

bool set ( const label  i,
unsigned int  val = ~0u 
)
inline

Set value at index i, default value set is the max_value.

Does auto-vivify for non-existent, non-zero entries.

Returns
true if value changed.

Definition at line 608 of file PackedListI.H.

Referenced by PackedList< Width >::reference::operator=(), and syncTools::syncFaceList().

Here is the caller graph for this function:

◆ unset()

bool unset ( const label  i)
inline

Unset the entry at index i.

Never auto-vivify entries.

Returns
true if the value changed.

Definition at line 639 of file PackedListI.H.

◆ values()

Foam::labelList values ( ) const

Return the values as a list of labels.

Definition at line 175 of file PackedList.C.

◆ unpack() [1/6]

List<IntType> unpack ( ) const

Return the values as a list of integral type.

The default integral type is unsigned int.

◆ unpack() [2/6]

List<IntType> unpack ( const labelRange range) const

Return the range of values as a list of integral type.

The default integral type is unsigned int.

◆ unpack() [3/6]

List<IntType> unpack ( const labelUList locations) const

Extract the values for the specified locations as a list of integral type.

The default integral type is unsigned int.

◆ fill()

void fill ( const unsigned int  val)
inline

Assign all entries to the given value.

Definition at line 683 of file PackedListI.H.

Referenced by PackedList< 2 >::operator=().

Here is the caller graph for this function:

◆ trim()

bool trim ( label  minpos = -1)
inline

Trim any trailing zero elements, optionally specifying a a minimum position, below which trimming will not occur.

Returns
true if trimming changed the size.

Definition at line 97 of file PackedListI.H.

◆ reset()

void reset ( )
inline

Clear all bits but do not adjust the addressable size.

Note
Method name compatibility with boost::dynamic_bitset

Definition at line 495 of file PackedListI.H.

Referenced by dynamicRefineFvMesh::calculateProtectedCells(), PackedList< 2 >::clear(), codeStream::getFunction(), dynamicMultiMotionSolverFvMesh::init(), and topoBitSet::reset().

Here is the caller graph for this function:

◆ setCapacity()

void setCapacity ( const label  nElem)
inline

Alter the size of the underlying storage.

The addressed size will be truncated if needed to fit, but will remain otherwise untouched.

Definition at line 461 of file PackedListI.H.

◆ resize()

void resize ( const label  nElem,
const unsigned int  val = 0u 
)
inline

Reset addressable list size, does not shrink the allocated size.

Optionally specify a value for new elements.

Definition at line 399 of file PackedListI.H.

Referenced by dynamicRefineFvMesh::calculateProtectedCells(), cuttingSurfaceBase::cellSelection(), ensightMesh::correct(), fvMeshSubsetProxy::correct(), dynamicMultiMotionSolverFvMesh::init(), cuttingSurfaceBase::performCut(), PackedList< 2 >::read(), PackedList< 2 >::remove(), PackedList< 2 >::set(), PackedList< 2 >::setSize(), Foam::simpleGeometricFilter(), and topoBitSet::topoBitSet().

Here is the caller graph for this function:

◆ reserve()

void reserve ( const label  nElem)
inline

Reserve allocation space for at least this size.

Never shrinks the allocated size. The list size is adjusted as per DynamicList with SizeInc=0, SizeMult=2, SizeDiv=1

Definition at line 476 of file PackedListI.H.

Referenced by PackedList< 2 >::append(), and PackedList< 2 >::resize().

Here is the caller graph for this function:

◆ clear()

void clear ( )
inline

Clear the list, i.e. set addressable size to zero.

Does not adjust the underlying storage

Definition at line 502 of file PackedListI.H.

Referenced by dynamicRefineFvMesh::calculateProtectedCells(), and PackedList< 2 >::read().

Here is the caller graph for this function:

◆ clearStorage()

void clearStorage ( )
inline

Clear the list and delete storage.

Definition at line 510 of file PackedListI.H.

Referenced by ensightMesh::correct(), distanceSurface::createGeometry(), distanceSurface::filterKeepLargestRegion(), and distanceSurface::filterKeepNearestRegions().

Here is the caller graph for this function:

◆ shrink()

void shrink ( )
inline

Shrink the allocated space to what is actually used.

Definition at line 518 of file PackedListI.H.

◆ swap()

void swap ( PackedList< Width > &  rhs)
inline

Swap contents with argument.

Definition at line 558 of file PackedListI.H.

Referenced by bitSet::swap().

Here is the caller graph for this function:

◆ transfer()

void transfer ( PackedList< Width > &  rhs)
inline

Transfer the contents of the argument list into this list and annul the argument list.

Definition at line 571 of file PackedListI.H.

Referenced by PackedList< 2 >::operator=(), and bitSet::transfer().

Here is the caller graph for this function:

◆ byteSize()

std::streamsize byteSize ( ) const
inline

The number of bytes used in the underlying storage including any unused padding.

Definition at line 551 of file PackedListI.H.

Referenced by PackedList< 2 >::read(), PackedList< 2 >::writeList(), and bitSet::writeList().

Here is the caller graph for this function:

◆ nBlocks()

Foam::label nBlocks ( ) const
inline

The number of internal storage blocks.

Definition at line 544 of file PackedListI.H.

◆ storage() [1/2]

const Foam::List< unsigned int > & storage ( ) const
inline

Return the underlying storage blocks.

Definition at line 537 of file PackedListI.H.

Referenced by PackedList< 2 >::read(), PackedList< 2 >::writeList(), and bitSet::writeList().

Here is the caller graph for this function:

◆ storage() [2/2]

Foam::List< unsigned int > & storage ( )
inline

Return the underlying storage blocks.

Manipulate with utmost caution

Definition at line 530 of file PackedListI.H.

◆ printBits()

Foam::Ostream & printBits ( Ostream os,
bool  debugOutput = false 
) const

Print bit patterns, optionally with extra debug.

Definition at line 44 of file PackedListIO.C.

◆ read()

Foam::Istream & read ( Istream is)

Clear list and read from stream.

Definition at line 64 of file PackedListIO.C.

◆ writeList()

Foam::Ostream & writeList ( Ostream os,
const label  shortLen = 0 
) const

Write List, with line-breaks in ASCII when length exceeds shortLen.

Using '0' suppresses line-breaks entirely.

Definition at line 204 of file PackedListIO.C.

Referenced by Foam::operator<<().

Here is the caller graph for this function:

◆ writeEntry() [2/2]

void writeEntry ( const word keyword,
Ostream os 
) const

Write as a dictionary entry with keyword.

Definition at line 264 of file PackedListIO.C.

◆ append()

Foam::PackedList< Width > & append ( const unsigned int  val)
inline

Append a value at the end of the list.

Definition at line 652 of file PackedListI.H.

Referenced by PackedList< 2 >::read().

Here is the caller graph for this function:

◆ remove()

unsigned int remove ( )
inline

Remove and return the last element.

Definition at line 664 of file PackedListI.H.

◆ operator[]() [1/2]

unsigned int operator[] ( const label  i) const
inline

Identical to get() - get value at index.

Never auto-vivify entries.

Definition at line 710 of file PackedListI.H.

◆ operator[]() [2/2]

Foam::PackedList< Width >::reference operator[] ( const label  i)
inline

Non-const access to value at index.

Fatal for out-of-range indices

Definition at line 718 of file PackedListI.H.

◆ operator=() [1/3]

void operator= ( const PackedList< Width > &  lst)
inline

Copy assignment.

Definition at line 728 of file PackedListI.H.

Referenced by bitSet::operator=().

Here is the caller graph for this function:

◆ operator=() [2/3]

void operator= ( PackedList< Width > &&  lst)
inline

Move assignment.

Definition at line 735 of file PackedListI.H.

◆ operator=() [3/3]

void operator= ( const unsigned int  val)
inline

Assign all entries to the given value. fill()

Definition at line 742 of file PackedListI.H.

◆ info()

InfoProxy<PackedList<Width> > info ( ) const
inline

Return info proxy.

Definition at line 492 of file PackedList.H.

◆ assign() [1/2]

void assign ( const unsigned int  val)
inline

Deprecated(2020-11) use fill()

Deprecated:
(2020-11) use fill()

Definition at line 514 of file PackedList.H.

◆ assign() [2/2]

void assign ( const PackedList< Width > &  rhs)
inline

Deprecated(2020-11) use operator=.

Deprecated:
(2020-11) use operator=

Definition at line 518 of file PackedList.H.

◆ setSize()

void setSize ( const label  len,
unsigned int  val = 0u 
)
inline

Alias for resize()

Definition at line 521 of file PackedList.H.

Referenced by distributedTriSurfaceMesh::getVolumeType(), meshRefinement::markOutsideFaces(), and PatchTools::matchEdges().

Here is the caller graph for this function:

◆ unpack() [4/6]

Foam::List<IntType> unpack ( ) const

Definition at line 184 of file PackedList.C.

◆ unpack() [5/6]

Foam::List<IntType> unpack ( const labelRange range) const

Definition at line 236 of file PackedList.C.

◆ unpack() [6/6]

Foam::List<IntType> unpack ( const labelUList locations) const

Definition at line 270 of file PackedList.C.

◆ repeated_value() [2/2]

unsigned int repeated_value ( unsigned  val)
inlineprotected

Definition at line 156 of file PackedListI.H.

◆ readValue() [2/2]

unsigned int readValue ( Istream is)
inlineprotected

Definition at line 161 of file PackedListI.H.

◆ setPair() [2/2]

void setPair ( Istream is)
inlineprotected

Definition at line 166 of file PackedListI.H.

Friends And Related Function Documentation

◆ operator

Ostream& operator ( Ostream os,
const InfoProxy< PackedList< Width >> &  info 
)
friend

◆ operator>>

Istream& operator>> ( Istream is,
PackedList< Width > &  list 
)
friend

Member Data Documentation

◆ bits_per_block

constexpr unsigned bits_per_block = (std::numeric_limits<block_type>::digits)
staticconstexpr

The number of bits in a single block.

Note
Type name compatibility with boost::dynamic_bitset

Definition at line 141 of file PackedList.H.

◆ element_width

constexpr unsigned element_width = (Width)
staticconstexpr

The width of an individual element (in bits).

Definition at line 144 of file PackedList.H.

◆ elem_per_block

constexpr unsigned elem_per_block = (bits_per_block / Width)
staticconstexpr

The number of elements stored per data block.

Definition at line 147 of file PackedList.H.

Referenced by PackedList< 2 >::capacity(), and PackedList< 2 >::resize().

◆ max_value

constexpr block_type max_value = ((1u << Width) - 1)
staticconstexpr

The max value for an element which is also the bit-mask of the individual element.

Eg, for Width=2: ((1 << 2) - 1) == 0b0011

Definition at line 152 of file PackedList.H.

Referenced by PackedList< Width >::reference::get(), and PackedList< Width >::reference::set().

◆ blocks_

◆ size_


The documentation for this class was generated from the following files:
Foam::Info
messageStream Info
Information stream (uses stdout - output is on the master only)
Foam::PackedList::elem_per_block
static constexpr unsigned elem_per_block
The number of elements stored per data block.
Definition: PackedList.H:147