A rudimentary list of pointers used for PtrList, UPtrList, etc. This class is considered implementation detail and should not normally be used other than by OpenFOAM container classes. More...
Public Member Functions | |
constexpr | PtrListDetail () noexcept |
Default construct. More... | |
PtrListDetail (const label len) | |
Construct with specified size, each element initialized to nullptr. More... | |
PtrListDetail (const UList< T *> &list) | |
Copy a list of pointers. More... | |
PtrListDetail (const PtrListDetail< T > &list) | |
Copy construct (shallow copies addresses) More... | |
PtrListDetail (PtrListDetail< T > &&list) noexcept | |
Move construct. More... | |
PtrListDetail (PtrListDetail< T > &list, bool reuse) | |
Copy or move (reuse) construct as specified. More... | |
const T * | get (const label i) const |
Return const pointer to element or nullptr for out-of-range access. More... | |
T * | get (const label i) |
Return pointer to element or nullptr for out-of-range access. More... | |
label | count () const noexcept |
Return the number of non-null entries. More... | |
void | checkNonNull () const |
FatalError if any null exists in the list. More... | |
label | find_first () const |
Locate the first entry that is non-null. More... | |
label | find_first_not () const |
Locate the first entry that is null, -1 if there are none (or empty list) More... | |
label | find_next (label pos) const |
Locate the next non-null entry, starting one beyond the specified position. More... | |
label | find_next_not (label pos) const |
Locate the next null entry, starting one beyond the specified position. More... | |
void | free () |
Delete allocated entries and reassign to nullptr. Does not affect the list size. More... | |
template<class... Args> | |
PtrListDetail< T > | clone (Args &&... args) const |
Make a copy by cloning each of the list pointers. More... | |
void | resize (const label newLen) |
Reset size of list. More... | |
void | resize_null (const label newLen) |
Set the list to the given size and set all entries to nullptr. More... | |
void | setAddressableSize (const label n) noexcept |
Set addressed size to be inconsistent with allocated storage. More... | |
Ostream & | write (Ostream &os, const bool trimNull=false) const |
Write output, optionally silently trimming nullptrs. More... | |
void | operator= (const PtrListDetail< T > &list) |
Copy assignment (shallow copies addresses) More... | |
void | operator= (PtrListDetail< T > &&list) |
Move assignment. More... | |
void | operator= (std::nullptr_t) |
Assign all entries to nullptr (without deleting) More... | |
void | setSize (const label)=delete |
void | setSize (const label, const T &)=delete |
void | setSize (const label, const T *)=delete |
void | resize_nocopy (const label)=delete |
template<class... Args> | |
Foam::Detail::PtrListDetail< T > | clone (Args &&... args) const |
![]() | |
constexpr | List () noexcept |
Default construct. More... | |
List (const label len) | |
Construct with given size. More... | |
List (const label len, const T * &val) | |
Construct with given size and value for all elements. More... | |
List (const label len, const Foam::zero) | |
Construct with given size initializing all elements to zero. More... | |
List (const Foam::one, const T * &val) | |
Construct with length=1, copying the value as the only content. More... | |
List (const Foam::one, T * &&val) | |
Construct with length=1, moving the value as the only content. More... | |
List (const Foam::one, const Foam::zero) | |
Construct with length=1, initializing content to zero. More... | |
List (const List< T * > &list) | |
Copy construct from list. More... | |
List (const UList< T * > &list) | |
Copy construct contents from list. More... | |
List (List< T * > &list, bool reuse) | |
Construct as copy or re-use as specified. More... | |
List (const UList< T * > &list, const labelUList &indices) | |
Copy construct subset of list. More... | |
List (const UList< T * > &list, const FixedList< label, N > &indices) | |
Copy construct subset of list. More... | |
List (const FixedList< T *, N > &list) | |
Construct as copy of FixedList<T, N> More... | |
List (const PtrList< T * > &list) | |
Construct as copy of PtrList<T> More... | |
List (const IndirectListBase< T *, Addr > &list) | |
Construct as copy of IndirectList contents. More... | |
List (std::initializer_list< T * > list) | |
Construct from an initializer list. More... | |
List (List< T * > &&list) noexcept | |
Move construct from List. More... | |
List (DynamicList< T *, SizeMin > &&list) | |
Move construct from DynamicList. More... | |
List (Istream &is) | |
Construct from Istream. More... | |
List (const SLList< T * > &list) | |
Copy construct from SLList. More... | |
autoPtr< List< T * > > | clone () const |
Clone. More... | |
~List () | |
Destructor. More... | |
void | clear () |
Clear the list, i.e. set size to zero. More... | |
void | resize (const label len) |
Adjust allocated size of list. More... | |
void | resize (const label len, const T * &val) |
Adjust allocated size of list and set val for new elements. More... | |
void | resize (const label newLen) |
void | resize_fill (const label len, const T * &val) |
Adjust allocated size of list and set val for all elements. More... | |
void | resize_nocopy (const label len) |
Adjust allocated size of list without necessarily. More... | |
void | resize_unsafe (const label len) noexcept |
Change the addressed list size directly without affecting any memory management (advanced usage). More... | |
void | setSize (const label n) |
Alias for resize() More... | |
void | setSize (const label n, const T * &val) |
Alias for resize() More... | |
void | transfer (List< T * > &list) |
Transfer the contents of the argument List into this list and annul the argument list. More... | |
void | transfer (DynamicList< T *, SizeMin > &list) |
Transfer the contents of the argument List into this list and annul the argument list. More... | |
T * & | newElmt (const label i) |
Return subscript-checked element of UList and resizing the list if required. More... | |
T * & | emplace_back (Args &&... args) |
Construct an element at the end of the list, return reference to the new list element. More... | |
void | push_back (const T * &val) |
Append an element at the end of the list. More... | |
void | push_back (T * &&val) |
Move append an element at the end of the list. More... | |
void | push_back (const UList< T * > &list) |
Append a List to the end of this list. More... | |
void | push_back (const IndirectListBase< T *, Addr > &list) |
Append IndirectList contents at the end of this list. More... | |
label | push_uniq (const T * &val) |
Append an element if not already in the list. More... | |
void | pop_back (label n=1) |
Reduce size by 1 or more elements. Can be called on an empty list. More... | |
void | operator= (const UList< T * > &list) |
Assignment to UList operator. Takes linear time. More... | |
void | operator= (const List< T * > &list) |
Assignment operator. Takes linear time. More... | |
void | operator= (const IndirectListBase< T *, Addr > &list) |
Assignment from IndirectList. Takes linear time. More... | |
void | operator= (const FixedList< T *, N > &list) |
Copy assignment from FixedList. More... | |
void | operator= (std::initializer_list< T * > list) |
Assignment to an initializer list. More... | |
void | operator= (const T * &val) |
Assignment of all entries to the given value. More... | |
void | operator= (const Foam::zero) |
Assignment of all entries to zero. More... | |
void | operator= (List< T * > &&list) |
Move assignment. Takes constant time. More... | |
void | operator= (DynamicList< T *, SizeMin > &&list) |
Move assignment. Takes constant time. More... | |
void | operator= (const SLList< T * > &list) |
Copy assign from SLList in linear time. More... | |
Istream & | readList (Istream &is) |
Read List from Istream, discarding contents of existing List. More... | |
void | shallowCopy (const UList< T * > &)=delete |
No shallowCopy permitted. More... | |
std::enable_if< std::is_same< bool, TypeT >::value, bool >::type | set (const label i, bool val=true) |
A bitSet::set() method for a list of bool. More... | |
void | append (const T * &val) |
Append an element at the end of the list. More... | |
void | append (T * &&val) |
Move append an element at the end of the list. More... | |
void | append (const UList< T * > &list) |
Append a List to the end of this list. More... | |
void | append (const IndirectListBase< T *, Addr > &list) |
Append IndirectList contents at the end of this list. More... | |
label | appendUniq (const T * &val) |
Same as push_uniq() More... | |
![]() | |
UList (const UList< T > &)=default | |
Copy construct. More... | |
constexpr | UList () noexcept |
Default construct, zero-sized and nullptr. More... | |
UList (T *__restrict__ v, const label len) noexcept | |
Construct from components. More... | |
label | fcIndex (const label i) const noexcept |
The forward circular index. The next index in the list which returns to the first at the end of the list. More... | |
label | rcIndex (const label i) const noexcept |
The reverse circular index. The previous index in the list which returns to the last at the beginning of the list. More... | |
const T & | fcValue (const label i) const |
Return forward circular value (ie, next value in the list) More... | |
T & | fcValue (const label i) |
Return forward circular value (ie, next value in the list) More... | |
const T & | rcValue (const label i) const |
Return reverse circular value (ie, previous value in the list) More... | |
T & | rcValue (const label i) |
Return reverse circular value (ie, previous value in the list) More... | |
const T * | cdata () const noexcept |
Return pointer to the underlying array serving as data storage. More... | |
T * | data () noexcept |
Return pointer to the underlying array serving as data storage. More... | |
const char * | cdata_bytes () const noexcept |
Return pointer to the underlying array serving as data storage,. More... | |
char * | data_bytes () noexcept |
Return pointer to the underlying array serving as data storage,. More... | |
T & | front () |
Access first element of the list, position [0]. More... | |
const T & | front () const |
Access first element of the list. More... | |
T & | back () |
Access last element of the list, position [size()-1]. More... | |
const T & | back () const |
Access last element of the list, position [size()-1]. More... | |
std::streamsize | size_bytes () const noexcept |
Number of contiguous bytes for the List data. More... | |
std::streamsize | byteSize () const |
Number of contiguous bytes for the List data, runtime FatalError if type is not contiguous. More... | |
void | checkStart (const label start) const |
Check start is within valid range [0,size) More... | |
void | checkSize (const label size) const |
Check size is within valid range [0,size]. More... | |
void | checkRange (const label start, const label len) const |
Check that start and length define a valid range. More... | |
void | checkIndex (const label i) const |
Check index is within valid range [0,size) More... | |
bool | uniform () const |
True if all entries have identical values, and list is non-empty. More... | |
bool | contains (const T &val) const |
True if the value is contained in the list. More... | |
bool | contains (const T &val, label pos, label len=-1) const |
Is the value contained in the list? More... | |
label | find (const T &val) const |
Find index of the first occurrence of the value. More... | |
label | find (const T &val, label pos, label len=-1) 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... | |
void | moveFirst (const label i) |
Move element to the first position. More... | |
void | moveLast (const label i) |
Move element to the last position. More... | |
void | swapFirst (const label i) |
Swap element with the first element. Fatal on an empty list. More... | |
void | swapLast (const label i) |
Swap element with the last element. Fatal on an empty list. More... | |
void | shallowCopy (T *__restrict__ ptr, const label len) noexcept |
Copy the pointer and size. More... | |
void | shallowCopy (const UList< T > &list) noexcept |
Copy the pointer and size held by the given UList. More... | |
void | deepCopy (const UList< T > &list) |
Copy elements of the given UList. Sizes must match! More... | |
template<class Addr > | |
void | deepCopy (const IndirectListBase< T, Addr > &list) |
Copy elements of the given indirect list. Sizes must match! More... | |
SubList< T > | slice (const label pos, label len=-1) |
Return SubList slice (non-const access) - no range checking. More... | |
const SubList< T > | slice (const label pos, label len=-1) const |
Return SubList slice (const access) - no range checking. More... | |
SubList< T > | slice (const labelRange &range) |
Return SubList slice (non-const access) - with range checking. More... | |
const SubList< T > | slice (const labelRange &range) const |
Return SubList slice (const access) - with range checking. More... | |
T & | operator[] (const label i) |
Return element of UList. More... | |
const T & | operator[] (const label i) const |
Return element of constant UList. More... | |
operator const Foam::List< T > & () const | |
Allow cast to a const List<T>&. More... | |
void | operator= (const T &val) |
Assignment of all entries to the given value. More... | |
void | operator= (const Foam::zero) |
Assignment of all entries to zero. More... | |
iterator | begin () noexcept |
Return an iterator to begin traversing the UList. More... | |
iterator | end () noexcept |
Return an iterator to end traversing the UList. More... | |
iterator | begin (const label i) noexcept |
Return iterator at offset i from begin, clamped to [0,size] range. More... | |
const_iterator | cbegin () const noexcept |
Return const_iterator to begin traversing the constant UList. More... | |
const_iterator | cend () const noexcept |
Return const_iterator to end traversing the constant UList. More... | |
const_iterator | begin () const noexcept |
Return const_iterator to begin traversing the constant UList. More... | |
const_iterator | end () const noexcept |
Return const_iterator to end traversing the constant UList. More... | |
const_iterator | cbegin (const label i) const noexcept |
Return const_iterator at offset i from begin, clamped to [0,size] range. More... | |
const_iterator | begin (const label i) const noexcept |
Return const_iterator at offset i from begin, clamped to [0,size] range. More... | |
reverse_iterator | rbegin () |
Return reverse_iterator to begin reverse traversing the UList. More... | |
reverse_iterator | rend () |
Return reverse_iterator to end reverse traversing the UList. More... | |
const_reverse_iterator | crbegin () const |
Return const_reverse_iterator to begin reverse traversing the UList. More... | |
const_reverse_iterator | crend () const |
Return const_reverse_iterator to end reverse traversing the UList. More... | |
const_reverse_iterator | rbegin () const |
Return const_reverse_iterator to begin reverse traversing the UList. More... | |
const_reverse_iterator | rend () const |
Return const_reverse_iterator to end reverse traversing the UList. More... | |
bool | empty () const noexcept |
True if List is empty (ie, size() is zero) More... | |
label | size () const noexcept |
The number of elements in the container. More... | |
label | capacity () const noexcept |
Size of the underlying storage. More... | |
void | swap (UList< T > &list) noexcept |
Swap content with another UList of the same type in constant time. More... | |
bool | operator== (const UList< T > &list) const |
Equality operation on ULists of the same type. More... | |
bool | operator!= (const UList< T > &list) const |
The opposite of the equality operation. Takes linear time. More... | |
bool | operator< (const UList< T > &list) const |
Compare two ULists lexicographically. Takes linear time. More... | |
bool | operator> (const UList< T > &list) const |
Compare two ULists lexicographically. Takes linear time. More... | |
bool | operator<= (const UList< T > &list) const |
Return true if !(a > b). Takes linear time. More... | |
bool | operator>= (const UList< T > &list) const |
Return true if !(a < b). Takes linear time. More... | |
Istream & | readList (Istream &is) |
Read List contents from Istream. More... | |
void | writeEntry (const word &keyword, Ostream &os) const |
Write the List as a dictionary entry with keyword. More... | |
Ostream & | writeList (Ostream &os, const label shortLen=0) const |
Write List, with line-breaks in ASCII when length exceeds shortLen. More... | |
template<class TypeT = T> | |
std::enable_if< std::is_same< bool, TypeT >::value, bool >::type | test (const label i) const |
Test bool value at specified position, always false for out-of-range access. More... | |
template<class TypeT = T> | |
std::enable_if< std::is_same< bool, TypeT >::value, bool >::type | get (const label i) const |
Return bool value at specified position, always false for out-of-range access. More... | |
template<class TypeT = T> | |
std::enable_if< std::is_same< bool, TypeT >::value, bool >::type | unset (const label i) |
Unset the bool entry at specified position, always false for out-of-range access. More... | |
T & | first () |
Access first element of the list, position [0]. More... | |
const T & | first () const |
Access first element of the list. More... | |
T & | last () |
Access last element of the list, position [size()-1]. More... | |
const T & | last () const |
Access last element of the list, position [size()-1]. More... | |
bool | found (const T &val, label pos=0) const |
Same as contains() More... | |
template<> | |
const bool & | operator[] (const label i) const |
template<> | |
UPstream::commsStruct & | operator[] (const label procID) |
template<> | |
const UPstream::commsStruct & | operator[] (const label procID) const |
template<> | |
Foam::UPstream::commsStruct & | operator[] (const label procID) |
template<> | |
const Foam::UPstream::commsStruct & | operator[] (const label procID) const |
Additional Inherited Members | |
![]() | |
typedef SubList< T * > | subList |
Declare type of subList. More... | |
![]() | |
typedef T | value_type |
The value type the list contains. More... | |
typedef T * | pointer |
The pointer type for non-const access to value_type items. More... | |
typedef const T * | const_pointer |
The pointer type for const access to value_type items. More... | |
typedef T & | reference |
The type used for storing into value_type objects. More... | |
typedef const T & | const_reference |
The type used for reading from constant value_type objects. More... | |
typedef T * | iterator |
Random access iterator for traversing a UList. More... | |
typedef const T * | const_iterator |
Random access iterator for traversing a UList. 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 std::reverse_iterator< iterator > | reverse_iterator |
Reverse iterator (non-const access) More... | |
typedef std::reverse_iterator< const_iterator > | const_reverse_iterator |
Reverse iterator (const access) More... | |
![]() | |
static const List< T * > & | null () |
Return a null List. More... | |
![]() | |
static const UList< T > & | null () |
Return a UList reference to a nullObject. More... | |
static constexpr label | max_size () noexcept |
The size of the largest possible UList. More... | |
![]() | |
void | setAddressableSize (const label n) noexcept |
Set addressed size to be inconsistent with allocated storage. More... | |
void | size (const label n) |
Older name for setAddressableSize. More... | |
void | writeEntry (Ostream &os) const |
Write the UList with its compound type. More... | |
labelRange | validateRange (const labelRange &requestedRange) const |
Return a validated (start,size) subset range, which means that it always addresses a valid section of the list. More... | |
void | fill_uniform (const T &val) |
Assign all entries to the given value. More... | |
void | fill_uniform (const Foam::zero) |
Assign all entries to zero. More... | |
UList< T > & | operator= (const UList< T > &)=delete |
No copy assignment (default: shallow copy) More... | |
template<> | |
void | writeEntry (Ostream &os) const |
Character list writeEntry. More... | |
template<> | |
void | operator= (const Foam::zero) |
Character list assign zero - avoids Foam::zero casting ambiguities. More... | |
template<> | |
void | writeEntry (Ostream &os) const |
template<> | |
void | operator= (const Foam::zero) |
A rudimentary list of pointers used for PtrList, UPtrList, etc. This class is considered implementation detail and should not normally be used other than by OpenFOAM container classes.
It stores a list of pointers, but makes leaves memory management to the caller or sub-class. The free() method can be used explicitly as required.
Definition at line 57 of file PtrListDetail.H.
|
inlinenoexcept |
Default construct.
Definition at line 24 of file PtrListDetailI.H.
|
inlineexplicit |
Construct with specified size, each element initialized to nullptr.
Definition at line 31 of file PtrListDetailI.H.
|
inlineexplicit |
Copy a list of pointers.
The caller is responsible for memory management.
Definition at line 39 of file PtrListDetailI.H.
|
inline |
Copy construct (shallow copies addresses)
Definition at line 49 of file PtrListDetailI.H.
|
inlinenoexcept |
Move construct.
Definition at line 59 of file PtrListDetailI.H.
|
inline |
Copy or move (reuse) construct as specified.
Definition at line 69 of file PtrListDetailI.H.
|
inline |
Return const pointer to element or nullptr for out-of-range access.
Definition at line 81 of file PtrListDetailI.H.
|
inline |
Return pointer to element or nullptr for out-of-range access.
Definition at line 88 of file PtrListDetailI.H.
|
noexcept |
Return the number of non-null entries.
Definition at line 26 of file PtrListDetail.C.
|
inline |
FatalError if any null exists in the list.
Definition at line 135 of file PtrListDetailI.H.
Referenced by UPtrList< const Foam::UList >::reorder(), and UPtrList< const Foam::UList >::sortOrder().
Foam::label find_first | ( | ) | const |
Locate the first entry that is non-null.
Definition at line 43 of file PtrListDetail.C.
Foam::label find_first_not | ( | ) | const |
Locate the first entry that is null, -1 if there are none (or empty list)
Definition at line 50 of file PtrListDetail.C.
Foam::label find_next | ( | label | pos | ) | const |
Locate the next non-null entry, starting one beyond the specified position.
Definition at line 57 of file PtrListDetail.C.
Foam::label find_next_not | ( | label | pos | ) | const |
Locate the next null entry, starting one beyond the specified position.
Definition at line 75 of file PtrListDetail.C.
void free | ( | ) |
Delete allocated entries and reassign to nullptr. Does not affect the list size.
Definition at line 93 of file PtrListDetail.C.
PtrListDetail<T> clone | ( | Args &&... | args | ) | const |
Make a copy by cloning each of the list pointers.
Referenced by PtrListDetail< const Foam::UList >::clone().
|
inline |
Reset size of list.
New entries are initialized to nullptr.
Definition at line 105 of file PtrListDetailI.H.
|
inline |
Set the list to the given size and set all entries to nullptr.
Definition at line 120 of file PtrListDetailI.H.
|
inlinenoexcept |
Set addressed size to be inconsistent with allocated storage.
Use with care
Definition at line 96 of file PtrListDetailI.H.
Foam::Ostream & write | ( | Ostream & | os, |
const bool | trimNull = false |
||
) | const |
Write output, optionally silently trimming nullptrs.
Definition at line 29 of file PtrListDetailIO.C.
|
inline |
Copy assignment (shallow copies addresses)
Definition at line 152 of file PtrListDetailI.H.
|
inline |
Move assignment.
Definition at line 162 of file PtrListDetailI.H.
|
inline |
Assign all entries to nullptr (without deleting)
Definition at line 171 of file PtrListDetailI.H.
|
delete |
|
delete |
|
delete |
|
delete |
Foam::Detail::PtrListDetail<T> clone | ( | Args &&... | args | ) | const |
Definition at line 110 of file PtrListDetail.C.