mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: allow direct testing of HashTable iterator as a bool
- can be used as a more natural test on the iterator.
For example, with
HashTable<..> table;
auto iter = table.find(...);
Following are now all equivalent:
1. if (iter != table.end()) ...
2. if (iter.found()) ...
3. if (iter) ...
This commit is contained in:
@ -40,7 +40,7 @@ using namespace Foam;
|
||||
template<class Iter>
|
||||
void printIf(const Iter& iter)
|
||||
{
|
||||
if (iter.found())
|
||||
if (iter)
|
||||
{
|
||||
Info<< *iter;
|
||||
}
|
||||
|
||||
@ -685,8 +685,13 @@ protected:
|
||||
//- The key associated with the iterator
|
||||
inline const Key& key() const;
|
||||
|
||||
|
||||
// Member Operators
|
||||
|
||||
//- True if iterator points to an entry
|
||||
// This can be used directly instead of comparing to end()
|
||||
explicit inline operator bool() const noexcept;
|
||||
|
||||
//- Compare hash-entry element pointers.
|
||||
// Independent of const/non-const access
|
||||
inline bool operator==(const Iterator<true>& iter) const;
|
||||
|
||||
@ -124,6 +124,15 @@ inline const Key& Foam::HashTable<T, Key, Hash>::Iterator<Const>::key() const
|
||||
}
|
||||
|
||||
|
||||
template<class T, class Key, class Hash>
|
||||
template<bool Const>
|
||||
inline Foam::HashTable<T, Key, Hash>::Iterator<Const>::operator
|
||||
bool() const noexcept
|
||||
{
|
||||
return entry_;
|
||||
}
|
||||
|
||||
|
||||
template<class T, class Key, class Hash>
|
||||
template<bool Const>
|
||||
inline bool Foam::HashTable<T, Key, Hash>::Iterator<Const>::operator==
|
||||
|
||||
Reference in New Issue
Block a user