IndirectList< T > Class Template Reference

A List with indirect addressing. More...

Inheritance diagram for IndirectList< T >:
[legend]
Collaboration diagram for IndirectList< T >:
[legend]

Public Member Functions

 IndirectList (const UList< T > &values, const labelUList &addr)
 Copy construct addressing, shallow copy values reference. More...
 
 IndirectList (const UList< T > &values, labelList &&addr)
 Move construct addressing, shallow copy values reference. More...
 
 IndirectList (const UList< T > &values, const Foam::zero)
 Zero-sized addressing, shallow copy values reference. More...
 
 IndirectList (const IndirectList< T > &list)
 Copy construct addressing, shallow copy values reference. More...
 
 IndirectList (IndirectList< T > &&list)
 Move construct addressing, shallow copy values reference. More...
 
 IndirectList (const UIndirectList< T > &list)
 Copy construct addressing, shallow copy values reference. More...
 
void operator= (const IndirectList< T > &rhs)
 Deep copy values, Fatal if list sizes are not identical. More...
 
template<class UnaryCondition >
Foam::IndirectList< Tsubset (const UList< T > &values, const UnaryCondition &select, const bool invert)
 
template<class UnaryPredicate >
Foam::IndirectList< Tsubset_if (const UList< T > &values, const UnaryPredicate &pred, const bool invert)
 
const Addr & addressing () const noexcept
 The list addressing. More...
 
Addr & addressing () noexcept
 The list addressing. More...
 
- Public Member Functions inherited from UIndirectList< T >
 UIndirectList (const UList< T > &values, const labelUList &addr)
 Shallow copy values and addressing. More...
 
 UIndirectList (const UIndirectList< T > &list)
 Copy construct (shallow copy values and addressing) More...
 
void operator= (const UIndirectList< T > &rhs)
 Deep copy values, Fatal if list sizes are not identical. More...
 
- Public Member Functions inherited from IndirectListBase< T, labelUList >
 IndirectListBase ()=delete
 No default construct. More...
 
 IndirectListBase (const UList< T > &values, const labelUList &addr)
 Store references to the values list and the addressing array. More...
 
label size () const noexcept
 The number of elements in the list. More...
 
bool empty () const noexcept
 True if the list is empty (ie, size() is zero). More...
 
const UList< T > & values () const noexcept
 The list of values (without addressing) More...
 
UList< T > & values () noexcept
 The list of values (without addressing) More...
 
const labelUListaddressing () const noexcept
 The addressing used for the list. More...
 
bool uniform () const
 True if all entries have identical values, and list is non-empty. More...
 
const Tfirst () const
 The first element of the list. More...
 
Tfirst ()
 The first element of the list. More...
 
const Tlast () const
 The last element of the list. More...
 
Tlast ()
 The last element of the list. More...
 
label fcIndex (const label i) const
 
label rcIndex (const label i) const
 
const TfcValue (const label i) const
 Return forward circular value (ie, next value in the list) More...
 
TfcValue (const label i)
 Return forward circular value (ie, next value in the list) More...
 
const TrcValue (const label i) const
 Return reverse circular value (ie, previous value in the list) More...
 
TrcValue (const label i)
 Return reverse circular value (ie, previous value in the list) More...
 
label find (const T &val, label pos=0) const
 Find index of the first occurrence of the value. More...
 
label rfind (const T &val, label pos=-1) const
 Find index of the last occurrence of the value. More...
 
bool found (const T &val, label pos=0) const
 True if the value if found in the list. More...
 
List< Toperator() () const
 Return the addressed elements as a List. More...
 
Toperator[] (const label i)
 Non-const access to an element in the list. More...
 
const Toperator[] (const label i) const
 Const access to an element in the list. More...
 
void operator= (const T &val)
 Assign all addressed elements to the given value. More...
 
void operator= (const Foam::zero)
 Assignment of all entries to zero. More...
 
void operator= (const UList< T > &rhs)
 Deep copy values from a list of the addressed elements. More...
 
void operator= (const IndirectListBase< T, labelUList > &rhs)
 Deep copy values from a list of the addressed elements. More...
 
void operator= (const IndirectListBase< T, AnyAddr > &rhs)
 Deep copy values from a list of the addressed elements. More...
 
iterator begin ()
 Return an iterator at begin of list. More...
 
const_iterator begin () const
 Return a const_iterator at begin of list. More...
 
iterator end ()
 Return an iterator at end of list. More...
 
const_iterator end () const
 Return a const_iterator at end of list. More...
 
const_iterator cbegin () const
 Return a const_iterator at begin of list. More...
 
const_iterator cend () const
 Return a const_iterator at end of list. More...
 
OstreamwriteList (Ostream &os, const label shortLen=0) const
 Write List, with line-breaks in ASCII when length exceeds shortLen. More...
 

Static Public Member Functions

template<class UnaryCondition >
static IndirectList< Tsubset (const UList< T > &values, const UnaryCondition &select, const bool invert=false)
 
template<class UnaryPredicate >
static IndirectList< Tsubset_if (const UList< T > &values, const UnaryPredicate &pred, const bool invert=false)
 
static IndirectList< Tuniq (const UList< T > &values, const bool sorted=false)
 Return an IndirectList with duplicate entries filtered out. More...
 

Additional Inherited Members

- Public Types inherited from IndirectListBase< T, labelUList >
typedef T value_type
 Type of values the list contains. More...
 
typedef Tpointer
 The pointer type for non-const access to value_type items. More...
 
typedef const Tconst_pointer
 The pointer type for const access to value_type items. More...
 
typedef Treference
 The type used for storing into value_type objects. More...
 
typedef const Tconst_reference
 The type used for reading from constant value_type objects. More...
 
typedef label size_type
 The type to represent the size of a UList. More...
 
typedef label difference_type
 The difference between iterator objects. More...
 
typedef labelUList addressing_type
 The addressing type (non-stl definition) More...
 
- Protected Member Functions inherited from IndirectListBase< T, labelUList >
void copyList (const ListType &rhs)
 Deep copy values from the list. More...
 

Detailed Description

template<class T>
class Foam::IndirectList< T >

A List with indirect addressing.

See also
Foam::UIndirectList for a version without addressing allocation.

Definition at line 115 of file IndirectList.H.

Constructor & Destructor Documentation

◆ IndirectList() [1/6]

IndirectList ( const UList< T > &  values,
const labelUList addr 
)
inline

Copy construct addressing, shallow copy values reference.

Definition at line 32 of file IndirectListI.H.

◆ IndirectList() [2/6]

IndirectList ( const UList< T > &  values,
labelList &&  addr 
)
inline

Move construct addressing, shallow copy values reference.

Definition at line 48 of file IndirectListI.H.

◆ IndirectList() [3/6]

IndirectList ( const UList< T > &  values,
const Foam::zero   
)
inline

Zero-sized addressing, shallow copy values reference.

Definition at line 64 of file IndirectListI.H.

◆ IndirectList() [4/6]

IndirectList ( const IndirectList< T > &  list)
inline

Copy construct addressing, shallow copy values reference.

Definition at line 80 of file IndirectListI.H.

◆ IndirectList() [5/6]

IndirectList ( IndirectList< T > &&  list)
inline

Move construct addressing, shallow copy values reference.

Definition at line 93 of file IndirectListI.H.

◆ IndirectList() [6/6]

IndirectList ( const UIndirectList< T > &  list)
inlineexplicit

Copy construct addressing, shallow copy values reference.

Definition at line 106 of file IndirectListI.H.

Member Function Documentation

◆ subset() [1/2]

static IndirectList< T > subset ( const UList< T > &  values,
const UnaryCondition &  select,
const bool  invert = false 
)
static

Return an IndirectList comprising entries with positions that satisfy the condition predicate.

The condition predicate can be considered a type of mask for any given position. A boolList, bitSet, labelRange or labelHashSet all satisfy the requirements for use as position condition predicates.

Parameters
valuesThe source list values
selectAccept/reject predicate based on position.
invertInvert (negate) the selection logic

◆ subset_if() [1/2]

static IndirectList< T > subset_if ( const UList< T > &  values,
const UnaryPredicate &  pred,
const bool  invert = false 
)
static

Return an IndirectList comprising entries with values that satisfy the predicate.

Parameters
valuesThe source list values
predPredicate used to test the value
invertInvert (negate) the selection logic

◆ uniq()

Foam::IndirectList< T > uniq ( const UList< T > &  values,
const bool  sorted = false 
)
static

Return an IndirectList with duplicate entries filtered out.

Preserves the original input order, unless sorted = true

Parameters
valuesThe source list values
sortedRetain sorted order instead of original order

Definition at line 185 of file IndirectListI.H.

References Foam::sort(), and Foam::sortedOrder().

Here is the call graph for this function:

◆ operator=()

void operator= ( const IndirectList< T > &  rhs)
inline

Deep copy values, Fatal if list sizes are not identical.

Definition at line 202 of file IndirectList.H.

References IndirectListBase< T, labelUList >::copyList().

Here is the call graph for this function:

◆ subset() [2/2]

Foam::IndirectList< T > subset ( const UList< T > &  values,
const UnaryCondition &  select,
const bool  invert 
)

Definition at line 122 of file IndirectListI.H.

References Foam::invert().

Here is the call graph for this function:

◆ subset_if() [2/2]

Foam::IndirectList< T > subset_if ( const UList< T > &  values,
const UnaryPredicate &  pred,
const bool  invert 
)

Definition at line 154 of file IndirectListI.H.

References Foam::invert().

Here is the call graph for this function:

◆ addressing() [1/2]

const Addr & addressing ( ) const
inlinenoexcept

The list addressing.

Definition at line 78 of file IndirectListAddressing.H.

Referenced by sampledFaceZone::update(), and sampledPatch::update().

Here is the caller graph for this function:

◆ addressing() [2/2]

Addr & addressing ( )
inlinenoexcept

The list addressing.

Definition at line 84 of file IndirectListAddressing.H.


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