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 >:
Collaboration diagram for PackedList< Width >:

Classes

struct  hasher
 Hashing functor for PackedList. More...
 
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)
 Construct for given number of elements, and the specified value for each element. More...
 
 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...
 
bool empty () const noexcept
 True if the list is empty (ie, size() is zero). More...
 
label size () const noexcept
 Number of entries. More...
 
label capacity () const noexcept
 Number of elements that can be stored without 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
 Extract the values for the specified locations as a list of integral type. More...
 
void fill (const unsigned int val)
 Assign all entries to the given value. More...
 
bool trim (label minpos=-1)
 Trim any trailing zero elements, optionally specifying a a minimum position, below which trimming will not occur. More...
 
void reset ()
 Clear all bits but do not adjust the addressable size. More...
 
void setCapacity (const label numElem)
 Alter the size of the underlying storage. More...
 
void resize (const label numElem, const unsigned int val=0u)
 Reset addressable list size, does not shrink the allocated size. More...
 
void resize_nocopy (const label numElem)
 Currently identical to resize. Subject to future change (Oct-2021) More...
 
void reserve (const label numElem)
 Reserve allocation space for at least this size (uses a size doubling strategy). 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)
 Transfer the contents of the argument list into this list and annul the argument list. More...
 
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...
 
const unsigned int * cdata () const noexcept
 A const pointer to the raw storage. More...
 
unsigned int * data () noexcept
 A pointer to the raw storage. More...
 
const char * cdata_bytes () const noexcept
 A const pointer to the raw storage, reinterpreted as byte data. More...
 
char * data_bytes () noexcept
 A pointer to the raw storage, reinterpreted as byte data. More...
 
std::streamsize size_data () const noexcept
 The number of integer blocks addressed in the raw storage. More...
 
std::streamsize size_bytes () const noexcept
 The number of bytes used in the raw storage including any unused padding. More...
 
std::streamsize byteSize () const noexcept
 The number of bytes used in the raw storage including any unused padding. More...
 
OstreamprintBits (Ostream &os, bool debugOutput=false) const
 Print bit patterns, optionally with extra debug. More...
 
IstreamreadList (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...
 
void push_back (const unsigned int val)
 Append a value at the end of the list. More...
 
void pop_back (label n=1)
 Reduce size by 1 or more elements. Can be called on an empty 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 > &list)
 Copy assignment. More...
 
void operator= (PackedList< Width > &&list)
 Move assignment. More...
 
void operator= (const unsigned int val)
 Assign all entries to the given value. fill() More...
 
InfoProxy< PackedList< Width > > info () const noexcept
 Return info proxy, used to print information to a stream. 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 n, unsigned int val=0u)
 Alias for resize() More...
 
PackedList< Width > & append (const unsigned int val)
 Append a value at the end of the list. 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
 
- Public Member Functions inherited from PackedListCore
 ClassNameNoDebug ("PackedList")
 Define template name. More...
 

Static Public Member Functions

static constexpr label num_blocks (label numElem) noexcept
 Calculate the number of blocks required to _address_ the requested number of elements. More...
 
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)
 The max value for an element which is also the bit-mask of the individual element. More...
 

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...
 
label first_block () const
 Find the first block with a '1' bit. More...
 
label first_not_block () const
 Find the first block with a '0' bit. 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)
 Enforce non-zero Width to fit within the block storage and require at least 2 items per storage block for general efficiency. 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 104 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 135 of file PackedList.H.

◆ block_container

typedef List<block_type> block_container
protected

The internal container for storing the blocks.

Definition at line 198 of file PackedList.H.

◆ const_reference

typedef unsigned int const_reference

Definition at line 280 of file PackedList.H.

Constructor & Destructor Documentation

◆ PackedList() [1/11]

constexpr PackedList ( )
inlinenoexcept

Default construct, zero-sized and no allocation.

Definition at line 237 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 245 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 254 of file PackedListI.H.

◆ PackedList() [4/11]

PackedList ( Istream is)
inline

Construct from Istream.

Definition at line 270 of file PackedListI.H.

◆ PackedList() [5/11]

PackedList ( const PackedList< Width > &  list)
inline

Copy construct.

Definition at line 280 of file PackedListI.H.

◆ PackedList() [6/11]

PackedList ( PackedList< Width > &&  list)
inline

Move construct.

Definition at line 288 of file PackedListI.H.

◆ PackedList() [7/11]

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

Copy construct a subset.

Definition at line 28 of file PackedList.C.

◆ PackedList() [8/11]

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

Copy construct a subset.

Definition at line 47 of file PackedList.C.

◆ PackedList() [9/11]

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

Copy construct a subset range.

Definition at line 65 of file PackedList.C.

◆ PackedList() [10/11]

PackedList ( const labelUList values)
inlineexplicit

Construct from a list of values.

Definition at line 298 of file PackedListI.H.

◆ PackedList() [11/11]

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

Construct from a indirect list of values.

Definition at line 319 of file PackedListI.H.

Member Function Documentation

◆ num_blocks()

static constexpr label num_blocks ( label  numElem)
inlinestaticnoexcept

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 175 of file PackedList.H.

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

Here is the caller graph for this function:

◆ mask_lower()

static constexpr block_type mask_lower ( unsigned  elementOffset)
inlinestatic

Masking for all bits below the element offset.

Ill-defined when elementOffset is out of range.

Definition at line 185 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

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)

A fill value for complete blocks

Definition at line 27 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 34 of file PackedListI.H.

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

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 51 of file PackedListI.H.

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

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 27 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 76 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 135 of file PackedListI.H.

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

Here is the caller graph for this function:

◆ first_block()

Foam::label first_block ( ) const
inlineprotected

Find the first block with a '1' bit.

Returns
block number or -1 for an list or if all bits are OFF.

Definition at line 144 of file PackedListI.H.

◆ first_not_block()

Foam::label first_not_block ( ) const
inlineprotected

Find the first block with a '0' bit.

Returns
block number or -1 for an list or if all bits are ON.

Definition at line 164 of file PackedListI.H.

◆ clone()

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

Clone.

Definition at line 341 of file PackedListI.H.

◆ checkIndex()

void checkIndex ( const label  i) const
inline

Check index is within valid range [0,size)

Definition at line 419 of file PackedListI.H.

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

Here is the caller graph for this function:

◆ empty()

bool empty ( ) const
inlinenoexcept

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

Definition at line 366 of file PackedList.H.

Referenced by ensightMesh::correct(), PatchTools::edgeNormals(), PackedList< 2 >::fill(), and PatchTools::pointNormals().

Here is the caller graph for this function:

◆ size()

◆ capacity()

Foam::label capacity ( ) const
inlinenoexcept

Number of elements that can be stored without reallocating.

Definition at line 437 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 86 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 148 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 683 of file PackedListI.H.

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

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 706 of file PackedListI.H.

Referenced by PackedList< 2 >::readList(), 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 737 of file PackedListI.H.

◆ values()

Foam::labelList values ( ) const

Return the values as a list of labels.

Definition at line 171 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 793 of file PackedListI.H.

Referenced by PackedList< 2 >::assign(), and 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 90 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 551 of file PackedListI.H.

Referenced by Foam::calcElementMasks(), dynamicRefineFvMesh::calculateProtectedCells(), PackedList< 2 >::clear(), dynamicMultiMotionSolverFvMesh::init(), multiSolidBodyMotionSolver::multiSolidBodyMotionSolver(), and topoBitSet::reset().

Here is the caller graph for this function:

◆ setCapacity()

void setCapacity ( const label  numElem)
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 517 of file PackedListI.H.

◆ resize()

◆ resize_nocopy()

void resize_nocopy ( const label  numElem)
inline

Currently identical to resize. Subject to future change (Oct-2021)

Definition at line 445 of file PackedListI.H.

◆ reserve()

void reserve ( const label  numElem)
inline

Reserve allocation space for at least this size (uses a size doubling strategy).

Never shrinks the allocated size.

Definition at line 532 of file PackedListI.H.

Referenced by PackedList< 2 >::push_back(), 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 558 of file PackedListI.H.

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

Here is the caller graph for this function:

◆ clearStorage()

void clearStorage ( )
inline

Clear the list and delete storage.

Definition at line 566 of file PackedListI.H.

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

Here is the caller graph for this function:

◆ shrink()

void shrink ( )
inline

Shrink the allocated space to what is actually used.

Definition at line 574 of file PackedListI.H.

◆ swap()

void swap ( PackedList< Width > &  rhs)
inline

Swap contents with argument.

Definition at line 656 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 669 of file PackedListI.H.

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

Here is the caller graph for this function:

◆ nBlocks()

Foam::label nBlocks ( ) const
inline

The number of internal storage blocks.

Definition at line 600 of file PackedListI.H.

◆ storage() [1/2]

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

Return the underlying storage blocks.

Definition at line 593 of file PackedListI.H.

◆ storage() [2/2]

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

Return the underlying storage blocks.

Manipulate with utmost caution

Definition at line 586 of file PackedListI.H.

◆ cdata()

const unsigned int * cdata ( ) const
inlinenoexcept

A const pointer to the raw storage.

Definition at line 607 of file PackedListI.H.

Referenced by PackedList< Width >::hasher::operator()().

Here is the caller graph for this function:

◆ data()

unsigned int * data ( )
inlinenoexcept

A pointer to the raw storage.

Definition at line 614 of file PackedListI.H.

◆ cdata_bytes()

const char * cdata_bytes ( ) const
inlinenoexcept

A const pointer to the raw storage, reinterpreted as byte data.

Definition at line 621 of file PackedListI.H.

Referenced by syncTools::syncFaceList(), and PackedList< 2 >::writeList().

Here is the caller graph for this function:

◆ data_bytes()

char * data_bytes ( )
inlinenoexcept

A pointer to the raw storage, reinterpreted as byte data.

Definition at line 628 of file PackedListI.H.

Referenced by PackedList< 2 >::readList(), and syncTools::syncFaceList().

Here is the caller graph for this function:

◆ size_data()

std::streamsize size_data ( ) const
inlinenoexcept

The number of integer blocks addressed in the raw storage.

Definition at line 635 of file PackedListI.H.

◆ size_bytes()

std::streamsize size_bytes ( ) const
inlinenoexcept

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

Definition at line 642 of file PackedListI.H.

Referenced by PackedList< 2 >::byteSize(), PackedList< Width >::hasher::operator()(), PackedList< 2 >::readList(), syncTools::syncFaceList(), and PackedList< 2 >::writeList().

Here is the caller graph for this function:

◆ byteSize()

std::streamsize byteSize ( ) const
inlinenoexcept

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

Definition at line 649 of file PackedListI.H.

◆ printBits()

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

Print bit patterns, optionally with extra debug.

Definition at line 37 of file PackedListIO.C.

◆ readList()

Foam::Istream & readList ( Istream is)

Clear list and read from stream.

Definition at line 57 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 172 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 237 of file PackedListIO.C.

◆ push_back()

void push_back ( const unsigned int  val)
inline

Append a value at the end of the list.

Definition at line 749 of file PackedListI.H.

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

Here is the caller graph for this function:

◆ pop_back()

void pop_back ( label  n = 1)
inline

Reduce size by 1 or more elements. Can be called on an empty list.

Definition at line 760 of file PackedListI.H.

◆ remove()

unsigned int remove ( )
inline

Remove and return the last element.

Definition at line 774 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 820 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 828 of file PackedListI.H.

◆ operator=() [1/3]

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

Copy assignment.

Definition at line 838 of file PackedListI.H.

Referenced by bitSet::operator=().

Here is the caller graph for this function:

◆ operator=() [2/3]

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

Move assignment.

Definition at line 845 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 852 of file PackedListI.H.

◆ info()

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

Return info proxy, used to print information to a stream.

Definition at line 727 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 773 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 780 of file PackedList.H.

◆ setSize()

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

Alias for resize()

Definition at line 785 of file PackedList.H.

Referenced by volPointInterpolationAdjoint::calcBoundaryAddressing(), and meshRefinement::markOutsideFaces().

Here is the caller graph for this function:

◆ append()

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

Append a value at the end of the list.

FOAM_DEPRECATED_FOR(2022-10, "push_back()")

Definition at line 792 of file PackedList.H.

◆ unpack() [4/6]

Foam::List<IntType> unpack ( ) const

Definition at line 180 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 216 of file PackedListI.H.

◆ readValue() [2/2]

unsigned int readValue ( Istream is)
inlineprotected

Definition at line 221 of file PackedListI.H.

◆ setPair() [2/2]

void setPair ( Istream is)
inlineprotected

Definition at line 226 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)
static

The number of bits in a single block.

Note
Type name compatibility with boost::dynamic_bitset

Definition at line 143 of file PackedList.H.

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

◆ element_width

constexpr unsigned element_width = (Width)
static

The width of an individual element (in bits).

Definition at line 148 of file PackedList.H.

◆ elem_per_block

constexpr unsigned elem_per_block = (bits_per_block / Width)
static

The number of elements stored per data block.

Definition at line 153 of file PackedList.H.

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

◆ max_value

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

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 161 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: