60 this->v_, this->size_, val
79 this->data_bytes(), this->size_bytes(),
char(0)
84 const auto last = (this->v_ + this->size_);
86 for (
auto first = this->v_; (first != last); (void)++first)
99 return (i == size()-1 ? 0 : i+1);
106 return (i ? i-1 : size()-1);
113 return this->operator[](this->fcIndex(i));
120 return this->operator[](this->fcIndex(i));
127 return this->operator[](this->rcIndex(i));
134 return this->operator[](this->rcIndex(i));
141 if (start < 0 || (start && start >= size_))
145 <<
"start " << start <<
" out of range [0," 155 if (size < 0 || size > size_)
158 <<
"size " << size <<
" out of range [0," 179 <<
"size " << len <<
" is negative, out of range [0," 183 this->checkStart(start);
184 this->checkSize(start + len);
190 this->checkSize(start);
201 <<
"attempt to access element " << i <<
" from zero sized list" 204 else if (i < 0 || i >= size_)
207 <<
"index " << i <<
" out of range [0," 224 for (label i = 1; i < size_; ++i)
226 if (this->v_[0] != this->v_[i])
239 return this->operator[](0);
246 return this->operator[](0);
253 return this->operator[](this->size()-1);
260 return this->operator[](this->size()-1);
281 return reinterpret_cast<const char*
>(v_);
288 return reinterpret_cast<char*
>(v_);
295 return std::streamsize(size_)*
sizeof(
T);
303 return (iter != this->
end());
310 return (this->
find(val,
pos, len) >= 0);
347 this->fill_uniform(val);
358 if (i >= 0 && i < size_)
391 return *
reinterpret_cast<const List<T>*
>(
this);
423 return (v_ + (i < 0 ? 0 : size_ < i ? size_ : i));
430 return (v_ + (i < 0 ? 0 : size_ < i ? size_ : i));
437 return (v_ + (i < 0 ? 0 : size_ < i ? size_ : i));
520 std::swap(size_, list.size_);
521 std::swap(v_, list.v_);
530 const label nBy2 =
n/2;
532 for (label i = 0; i < nBy2; ++i)
void swap(UList< T > &list) noexcept
Swap content with another UList of the same type in constant time.
label find(const ListType &input, const UnaryPredicate &pred, const label start=0)
Same as ListOps::find_if.
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.
error FatalError
Error stream (stdout output on all processes), with additional 'FOAM FATAL ERROR' header text and sta...
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
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.
T * data() noexcept
Return pointer to the underlying array serving as data storage.
T & front()
Access first element of the list, position [0].
A traits class, which is primarily used for primitives and vector-space.
T * iterator
Random access iterator for traversing a UList.
bool uniform() const
True if all entries have identical values, and list is non-empty.
void setAddressableSize(const label n) noexcept
Set addressed size to be inconsistent with allocated storage.
bool contains(const T &val) const
True if the value is contained in the list.
char * data_bytes() noexcept
Return pointer to the underlying array serving as data storage,.
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,.
T & operator[](const label i)
Return element of UList.
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)
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)
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)
errorManip< error > abort(error &err)
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...
constexpr auto end(C &c) -> decltype(c.end())
Return iterator to the end of the container c.
void checkRange(const label start, const label len) const
Check that start and length define a valid range.
constexpr UList() noexcept
Default construct, zero-sized and nullptr.
const T * const_iterator
Random access iterator for traversing a UList.
A template class to specify that a data type can be considered as being contiguous in memory...
void shallowCopy(T *__restrict__ ptr, const label len) noexcept
Copy the pointer and size.
void Swap(DynamicList< T, SizeMinA > &a, DynamicList< T, SizeMinB > &b)
Exchange contents of lists - see DynamicList::swap().
T & back()
Access last element of the list, position [size()-1].
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].
const T * cdata() const noexcept
Return pointer to the underlying array serving as data storage.
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...
constexpr auto begin(C &c) -> decltype(c.begin())
Return iterator to the beginning of the container c.
void checkStart(const label start) const
Check start is within valid range [0,size)
void checkIndex(const label i) const
Check index is within valid range [0,size)
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.