Go to the documentation of this file.
60 #include <initializer_list>
62 #include <type_traits>
75 template<
class T>
class List;
76 template<
class T>
class SubList;
77 template<
class T>
class UList;
78 template<
class T,
class Addr>
class IndirectListBase;
80 template<
class T> Istream&
operator>>(Istream&, UList<T>&);
81 template<
class T> Ostream&
operator<<(Ostream&,
const UList<T>&);
173 friend class List<
T>;
182 inline static const UList<T>&
null();
197 bool operator()(
const label a,
const label
b)
const
213 bool operator()(
const label a,
const label
b)
const
229 inline constexpr
UList() noexcept;
232 inline
UList(
T* __restrict__ v, const label len) noexcept;
241 inline label
fcIndex(const label i) const noexcept;
245 inline label
rcIndex(const label i) const noexcept;
248 inline const
T&
fcValue(const label i) const;
254 inline const
T&
rcValue(const label i) const;
260 inline const
T*
cdata() const noexcept;
263 inline
T*
data() noexcept;
279 inline const
T&
first() const;
285 inline const
T&
last() const;
289 inline std::streamsize
size_bytes() const noexcept;
299 inline
void checkStart(const label start) const;
305 inline
void checkRange(const label start, const label len) const;
320 label
find(const
T& val, label
pos = 0) const;
326 label
rfind(const
T& val, label
pos = -1) const;
332 inline
bool found(const
T& val, label
pos = 0) const;
385 inline
T& operator[](const label i);
390 inline const
T& operator[](const label i) const;
393 inline operator const
Foam::
List<
T>&() const;
396 void operator=(const
T& val);
453 inline label
size() const noexcept;
456 inline
bool empty() const noexcept;
517 template<
class TypeT = T>
518 typename std::enable_if<std::is_same<bool, TypeT>::value,
bool>
::type
519 inline test(
const label i)
const
521 return (i >= 0 && i < size_ && v_[i]);
527 template<
class TypeT = T>
528 typename std::enable_if<std::is_same<bool, TypeT>::value,
bool>
::type
529 inline get(
const label i)
const
531 return (i >= 0 && i < size_ && v_[i]);
537 template<
class TypeT = T>
538 typename std::enable_if<std::is_same<bool, TypeT>::value,
bool>
::type
539 inline unset(
const label i)
541 if (i >= 0 && i < size_ && v_[i])
555 inline unsigned operator()
563 return Foam::Hasher(obj.cdata(), obj.size_bytes(), seed);
567 for (
const T& val : obj)
569 seed = op(val, seed);
577 template<
class Unused=
bool>
623 Ostream&
operator<<(Ostream&
os,
const std::vector<T>& list);
629 void sort(UList<T>& a);
631 template<
class T,
class Compare>
632 void sort(UList<T>& a,
const Compare& comp);
637 template<
class T,
class Compare>
638 void stableSort(UList<T>& a,
const Compare& comp);
645 inline void reverse(UList<T>& list,
const label
n);
649 inline void reverse(UList<T>& list);
const char * cdata_bytes() const noexcept
Return pointer to the underlying array serving as data storage,.
Ostream & writeList(Ostream &os, const label shortLen=0) const
Write List, with line-breaks in ASCII when length exceeds shortLen.
std::enable_if< std::is_same< bool, TypeT >::value, bool >::type test(const label i) const
A bitSet::test() method for a list of bool.
void reverse(UList< T > &list, const label n)
bool operator<(const UList< T > &list) const
Compare two ULists lexicographically. Takes linear time.
less(const UList< T > &list)
void Swap(DynamicList< T, SizeMinA > &a, DynamicList< T, SizeMinB > &b)
const T * cdata() const noexcept
Return pointer to the underlying array serving as data storage.
label rcIndex(const label i) const noexcept
A class for handling words, derived from Foam::string.
labelRange validateRange(const labelRange &requestedRange) const
iterator end() noexcept
Return an iterator to end traversing the UList.
T & first()
Return the first element of the list.
const typedef T & const_reference
The type used for reading from constant value_type objects.
bool operator>=(const UList< T > &a) const
Return true if !(a < b). Takes linear time.
constexpr UList() noexcept
Default construct, zero-sized and nullptr.
unsigned Hasher(const void *data, size_t len, unsigned seed=0)
Bob Jenkins's 96-bit mixer hashing function (lookup3)
bool operator==(const UList< T > &a) const
Equality operation on ULists of the same type.
A List obtained as a section of another List.
bool operator<=(const UList< T > &a) const
Return true if !(a > b). Takes linear time.
void setAddressableSize(const label n) noexcept
Set addressed size to be inconsistent with allocated storage.
void checkSize(const label size) const
Check size is within valid range [0,size].
Istream & operator>>(Istream &, directionInfo &)
label size_type
The type to represent the size of a UList.
Hashing functor for UList.
void deepCopy(const UList< T > &list)
Copy elements of the given UList. Sizes must match!
void swapFirst(const label i)
Swap element with the first element. Fatal on an empty list.
char * data_bytes() noexcept
Return pointer to the underlying array serving as data storage,.
label fcIndex(const label i) const noexcept
void stableSort(UList< T > &a)
Swap arguments as per std::swap, but in Foam namespace.
label rfind(const T &val, label pos=-1) const
Find index of the last occurrence of the value.
void checkRange(const label start, const label len) const
Check that start and length define a valid range.
void checkStart(const label start) const
Check start is within valid range [0,size)
Ostream & operator<<(Ostream &, const boundaryPatch &p)
Write boundaryPatch as dictionary entries (without surrounding braces)
const UList< T > & values
iterator begin() noexcept
Return an iterator to begin traversing the UList.
Hash function class. The default definition is for primitives. Non-primitives used to hash entries on...
label operator()(const T &obj) const
A list compare binary predicate for reverse sort.
const_iterator cend() const noexcept
Return const_iterator to end traversing the constant UList.
const dimensionedScalar b
Wien displacement law constant: default SI units: [m.K].
An Istream is an abstract base class for all input systems (streams, files, token lists etc)....
T * iterator
Random access iterator for traversing a UList.
T & last()
Return the last element of the list.
void swapLast(const label i)
Swap element with the last element. Fatal on an empty list.
void moveFirst(const label i)
Move element to the first position.
T & reference
The type used for storing into value_type objects.
void T(FieldField< Field, Type > &f1, const FieldField< Field, Type > &f2)
Number of items before requiring line-breaks in the list output.
static constexpr label max_size() noexcept
The size of the largest possible UList.
bool operator!=(const UList< T > &a) const
The opposite of the equality operation. Takes linear time.
A range or interval of labels defined by a start and a size.
A list compare binary predicate for normal sort.
Istream & readList(Istream &is)
Read List contents from Istream.
const_reverse_iterator crend() const
Return const_reverse_iterator to end reverse traversing the UList.
bool operator()(const T &obj) const
bool empty() const noexcept
True if the UList is empty (ie, size() is zero)
OBJstream os(runTime.globalPath()/outputName)
FOAM_DEPRECATED_FOR(2021-04, "hasher()") Hash()
reverse_iterator rend()
Return reverse_iterator to end reverse traversing the UList.
const T & fcValue(const label i) const
Return forward circular value (ie, next value in the list)
void writeEntry(Ostream &os) const
Write the UList with its compound type.
UList< char > charUList
A UList of chars.
Extract size (as label) from an object, typically using its size() method.
const_iterator cbegin() const noexcept
Return const_iterator to begin traversing the constant UList.
SubList< T > slice(const label pos, label len=-1)
Return SubList slice (non-const access) - no range checking.
std::enable_if< std::is_same< bool, TypeT >::value, bool >::type unset(const label i)
A bitSet::unset() method for a list of bool.
void shallowCopy(const UList< T > &list)
Copy the pointer and size held by the given UList.
bool operator>(const UList< T > &a) const
Compare two ULists lexicographically. Takes linear time.
Test if object is empty, typically using its empty() method.
void swap(UList< T > &list)
Swap content with another UList of the same type in constant time.
UList< bool > boolUList
A UList of bools.
bool operator()(const label a, const label b) const
label difference_type
The difference between iterator objects.
void shuffle(UList< T > &a)
reverse_iterator rbegin()
Return reverse_iterator to begin reverse traversing the UList.
const UList< T > & values
A 1D array of objects of type <T>, where the size of the vector is known and used for subscript bound...
UList< T > & operator=(const UList< T > &)=delete
No copy assignment (default: shallow copy)
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
Deprecated(2021-04) hashing functor. Use hasher()
A 1D vector of objects of type <T>, where the size of the vector is known and can be used for subscri...
label size() const noexcept
The number of elements in the UList.
const typedef T * const_pointer
The pointer type for const access to value_type items.
std::streamsize byteSize() const
class FOAM_DEPRECATED_FOR(2017-05, "Foam::Enum") NamedEnum
const typedef T * const_iterator
Random access iterator for traversing a UList.
bool operator()(const label a, const label b) const
bool found(const T &val, label pos=0) const
True if the value if found in the list.
std::enable_if< std::is_same< bool, TypeT >::value, bool >::type get(const label i) const
A bitSet::get() method for a list of bool.
std::reverse_iterator< const_iterator > const_reverse_iterator
Reverse iterator (const access)
Base for lists with indirect addressing, templated on the list contents type and the addressing type....
T * pointer
The pointer type for non-const access to value_type items.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
UList< label > labelUList
A UList of labels.
void moveLast(const label i)
Move element to the last position.
label find(const T &val, label pos=0) const
Find index of the first occurrence of the value.
std::reverse_iterator< iterator > reverse_iterator
Reverse iterator (non-const access)
void checkIndex(const label i) const
Check index is within valid range [0,size)
T value_type
The value type the list contains.
Database for solution data, solver performance and other reduced data.
greater(const UList< T > &list)
std::streamsize size_bytes() const noexcept
Number of contiguous bytes for the List data.
A template class to specify that a data type can be considered as being contiguous in memory.
const T & rcValue(const label i) const
Return reverse circular value (ie, previous value in the list)
A class representing the concept of 0 (zero) that can be used to avoid manipulating objects known to ...
const_reverse_iterator crbegin() const
Return const_reverse_iterator to begin reverse traversing the UList.
dimensionedScalar pos(const dimensionedScalar &ds)
const T & operator()(const T &obj) const