68 template<
class T>
class List;
69 template<
class T>
class SubList;
70 template<
class T>
class UList;
71 template<
class T>
class IndirectList;
72 template<
class T>
class UIndirectList;
73 template<
class T,
class Addr>
class IndirectListBase;
76 template<
class T>
Ostream& operator<<(Ostream&, const UList<T>&);
181 return NullObjectRef<UList<T>>();
197 bool operator()(
const label a,
const label
b)
const 213 bool operator()(
const label a,
const label
b)
const 265 inline const
T&
fcValue(const label i) const;
271 inline const
T&
rcValue(const label i) const;
296 inline const
T&
front() const;
302 inline const
T&
back() const;
316 inline
void checkStart(const label start) const;
322 inline
void checkRange(const label start, const label len) const;
334 inline
bool contains(const
T& val) const;
341 inline
bool contains(const
T& val, label
pos, label len = -1) const;
346 label
find(const
T& val) const;
353 label
find(const
T& val, label
pos, label len = -1) const;
359 label
rfind(const
T& val, label
pos = -1) const;
418 inline
T& operator[](const label i);
423 inline const
T& operator[](const label i) const;
431 return *
reinterpret_cast<const List<T>*
>(
this);
530 bool operator<(const UList<T>& list)
const;
533 bool operator>(
const UList<T>& list)
const;
536 bool operator<=(const UList<T>& list)
const;
549 void writeEntry(
const word& keyword, Ostream&
os)
const;
553 Ostream&
writeList(Ostream&
os,
const label shortLen=0)
const;
559 friend Istream&
operator>> <
T>
571 template<
class TypeT = T>
572 std::enable_if_t<std::is_same_v<bool, TypeT>,
bool>
573 inline test(
const label i)
const 575 return (i >= 0 && i < size_ && v_[i]);
581 template<
class TypeT = T>
582 std::enable_if_t<std::is_same_v<bool, TypeT>,
bool>
583 inline get(
const label i)
const 585 return (i >= 0 && i < size_ && v_[i]);
592 template<
class TypeT = T>
593 std::enable_if_t<std::is_same_v<bool, TypeT>,
bool>
594 inline unset(
const label i)
596 if (i >= 0 && i < size_ && v_[i])
610 inline unsigned operator()
616 if constexpr (is_contiguous_v<T>)
618 return Foam::Hasher(obj.cdata(), obj.size_bytes(), seed);
623 for (
const T& val : obj)
625 seed = op(val, seed);
634 template<
class Unused=
bool>
635 struct Hash :
UList<T>::hasher
657 const T&
last()
const {
return back(); };
660 bool found(
const T& val, label
pos = 0)
const 682 Istream&
operator>>(Istream& is, UList<T>& list)
684 return list.readList(is);
691 Ostream& operator<<(Ostream& os, const UList<T>& list)
698 Ostream& operator<<(Ostream& os, const std::vector<T>& list);
716 template<
class T,
class Compare>
724 template<
class T,
class Compare>
760 bool operator()(
const T& obj)
const {
return obj.empty(); }
768 label
operator()(
const T& obj)
const {
return obj.size(); }
void swap(UList< T > &list) noexcept
Swap content with another UList of the same type in constant time.
std::reverse_iterator< const_iterator > const_reverse_iterator
Reverse iterator (const access)
const_iterator cend() const noexcept
Return const_iterator to end traversing the constant UList.
T * pointer
The pointer type for non-const access to value_type items.
FOAM_DEPRECATED_FOR(2021-04, "hasher()") Hash()
void swapLast(const label i)
Swap element with the last element. Fatal on an empty list.
label operator()(const T &obj) const
void swapFirst(const label i)
Swap element with the first element. Fatal on an empty list.
bool operator()(const label a, const label b) const
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
const_reverse_iterator crbegin() const
Return const_reverse_iterator to begin reverse traversing the UList.
A range or interval of labels defined by a start and a size.
An Istream is an abstract base class for all input systems (streams, files, token lists etc)...
const T * const_pointer
The pointer type for const access to value_type items.
bool empty() const noexcept
True if List is empty (ie, size() is zero)
T * data() noexcept
Return pointer to the underlying array serving as data storage.
T & front()
Access first element of the list, position [0].
T & first()
Access first element of the list, position [0].
Object access operator or list access operator (default is pass-through)
bool found(const T &val, label pos=0) const
Same as contains()
T * iterator
Random access iterator for traversing a UList.
void stableSort(UList< T > &list)
Stable sort the list.
labelRange validateRange(const labelRange &requestedRange) const
Return a validated (start,size) subset range, which means that it always addresses a valid section of...
void setAddressableSize(const label n) noexcept
Set addressed size to be inconsistent with allocated storage.
std::enable_if_t< std::is_same_v< bool, TypeT >, bool > test(const label i) const
Test bool value at specified position, always false for out-of-range access.
Base for lists with indirect addressing, templated on the list contents type and the addressing type...
UList< bool > boolUList
A UList of bools.
bool contains(const T &val) const
True if the value is contained in the list.
static bool less(const vector &x, const vector &y)
To compare normals.
char * data_bytes() noexcept
Return pointer to the underlying array serving as data storage,.
Istream & readList(Istream &is)
Read List contents from Istream.
UList< label > labelUList
A UList of labels.
class FOAM_DEPRECATED_FOR(2017-05, "Foam::Enum") NamedEnum
const_reverse_iterator crend() const
Return const_reverse_iterator to end reverse traversing the UList.
const char * cdata_bytes() const noexcept
Return pointer to the underlying array serving as data storage,.
label difference_type
The difference between iterator objects.
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 l...
reverse_iterator rbegin()
Return reverse_iterator to begin reverse traversing the UList.
UList< T > & operator=(const UList< T > &)=delete
No copy assignment (default: shallow copy)
reverse_iterator rend()
Return reverse_iterator to end reverse traversing the UList.
dimensionedScalar pos(const dimensionedScalar &ds)
Ostream & writeList(Ostream &os, const label shortLen=0) const
Write List, with line-breaks in ASCII when length exceeds shortLen.
A non-owning sub-view of a List (allocated or unallocated storage).
const UList< T > & values
void fill_uniform(const T &val)
Assign all entries to the given value.
const T & fcValue(const label i) const
Return forward circular value (ie, next value in the list)
label capacity() const noexcept
Size of the underlying storage.
SubList< T > slice(const label pos, label len=-1)
Return SubList slice (non-const access) - no range checking.
labelList identity(const label len, label start=0)
Return an identity map of the given length with (map[i] == i), works like std::iota() but returning a...
const dimensionedScalar b
Wien displacement law constant: default SI units: [m.K].
void sort(UList< T > &list)
Sort the list.
Istream & operator>>(Istream &, directionInfo &)
bool operator==(const UList< T > &list) const
Equality operation on ULists of the same type.
#define FOAM_DEPRECATED_STRICTER(since, replacement)
bool operator!=(const UList< T > &list) const
The opposite of the equality operation. Takes linear time.
label rfind(const T &val, label pos=-1) const
Find index of the last occurrence of the value.
void reverse(UList< T > &list, const label n)
Reverse the first n elements of the list.
std::reverse_iterator< iterator > reverse_iterator
Reverse iterator (non-const access)
bool operator()(const T &obj) const
iterator begin() noexcept
Return an iterator to begin traversing the UList.
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
label find(const T &val) const
Find index of the first occurrence of the value.
An Ostream is an abstract base class for all output systems (streams, files, token lists...
UList< char > charUList
A UList of chars.
label size() const noexcept
The number of elements in the container.
const UList< T > & values
OBJstream os(runTime.globalPath()/outputName)
T & reference
The type used for storing into value_type objects.
std::enable_if_t< std::is_same_v< bool, TypeT >, bool > unset(const label i)
Unset the bool entry at specified position, always false for out-of-range access. ...
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
static constexpr label max_size() noexcept
The size of the largest possible UList.
void moveLast(const label i)
Move element to the last position.
T & last()
Access last element of the list, position [size()-1].
label size_type
The type to represent the size of a UList.
void checkRange(const label start, const label len) const
Check that start and length define a valid range.
unsigned Hasher(const void *data, size_t len, unsigned seed=0)
Bob Jenkins's 96-bit mixer hashing function (lookup3)
constexpr UList() noexcept
Default construct, zero-sized and nullptr.
const T * const_iterator
Random access iterator for traversing a UList.
Hash function class. The default definition is for primitives. Non-primitives used to hash entries on...
std::streamsize byteSize() const
Number of contiguous bytes for the List data, runtime FatalError if type is not contiguous.
bool operator()(const label a, const label b) const
void shallowCopy(T *__restrict__ ptr, const label len) noexcept
Copy the pointer and size.
greater(const UList< T > &list)
static const UList< T > & null() noexcept
Return a null UList (reference to a nullObject). Behaves like an empty UList.
T & back()
Access last element of the list, position [size()-1].
Includes some common C++ headers, defines global macros and templates used in multiple places by Open...
const T & const_reference
The type used for reading from constant value_type objects.
A class representing the concept of 0 (zero) that can be used to avoid manipulating objects known to ...
const_iterator cbegin() const noexcept
Return const_iterator to begin traversing the constant UList.
void checkSize(const label size) const
Check size is within valid range [0,size].
void writeEntry(Ostream &os) const
Write the UList with its compound type.
const T * cdata() const noexcept
Return pointer to the underlying array serving as data storage.
void deepCopy(const UList< T > &list)
Copy elements of the given UList. Sizes must match!
Number of items before requiring line-breaks in the list output.
iterator end() noexcept
Return an iterator to end traversing the UList.
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...
void shuffle(UList< T > &list)
Randomise the list order.
void moveFirst(const label i)
Move element to the first position.
void checkStart(const label start) const
Check start is within valid range [0,size)
const T & operator()(const T &obj) const
void checkIndex(const label i) const
Check index is within valid range [0,size)
T value_type
The value type the list contains.
const T & rcValue(const label i) const
Return reverse circular value (ie, previous value in the list)
std::streamsize size_bytes() const noexcept
Number of contiguous bytes for the List data.
bool operator>=(const UList< T > &list) const
Return true if !(a < b). Takes linear time.
less(const UList< T > &list)
bool operator>(const UList< T > &list) const
Compare two ULists lexicographically. Takes linear time.