Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
47 changes: 43 additions & 4 deletions arcane/src/arcane/core/ItemLocalIdListView.h
Original file line number Diff line number Diff line change
Expand Up @@ -27,14 +27,39 @@

namespace Arcane
{
class ItemLocalIdListViewConstIterator;
namespace mesh
{
class IndexedItemConnectivityAccessor;
}

/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/*!
* \brief Sentinel for method ItemLocalIdListView::end().
*/
class ItemLocalIdListViewIteratorSentinel
{
friend ItemLocalIdListViewConstIterator;
template <typename ItemType> friend class ItemLocalIdListViewT;

public:

ItemLocalIdListViewIteratorSentinel() = default;

protected:

constexpr ARCCORE_HOST_DEVICE ItemLocalIdListViewIteratorSentinel(const Int32* local_id_ptr)

Check failure on line 52 in arcane/src/arcane/core/ItemLocalIdListView.h

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Add the "explicit" keyword to this constructor.

See more on https://sonarcloud.io/project/issues?id=arcaneframework_framework&issues=AaE5WkKw9Dh3fVuyYrqE&open=AaE5WkKw9Dh3fVuyYrqE&pullRequest=2823
: m_local_id_ptr(local_id_ptr)
{}

private:

const Int32* m_local_id_ptr = nullptr;
};

/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/
/*!
* \brief Base class for iterators for ItemLocalIdViewT.
*/
Expand Down Expand Up @@ -101,6 +126,21 @@
{
return !(lhs == rhs);
}
constexpr ARCCORE_HOST_DEVICE static bool
isEnd(const ThatClass& lhs, const ItemLocalIdListViewIteratorSentinel& rhs)
{
return lhs.m_local_id_ptr == rhs.m_local_id_ptr;
}
constexpr ARCCORE_HOST_DEVICE friend bool
operator==(const ThatClass& lhs, const ItemLocalIdListViewIteratorSentinel& rhs)

Check warning on line 135 in arcane/src/arcane/core/ItemLocalIdListView.h

View check run for this annotation

SonarQubeCloud / SonarCloud Code Analysis

Keep operator== and remove operator!= for operand types "ItemLocalIdListViewConstIterator" and "ItemLocalIdListViewIteratorSentinel".

See more on https://sonarcloud.io/project/issues?id=arcaneframework_framework&issues=AaE5WkKw9Dh3fVuyYrqF&open=AaE5WkKw9Dh3fVuyYrqF&pullRequest=2823
{
return isEnd(lhs, rhs);
}
constexpr ARCCORE_HOST_DEVICE friend bool
operator!=(const ThatClass& lhs, const ItemLocalIdListViewIteratorSentinel& rhs)
{
return !isEnd(lhs, rhs);
}

protected:

Expand Down Expand Up @@ -183,6 +223,7 @@

using ThatClass = ItemLocalIdListView;
using BaseClass = impl::ItemLocalIdListContainerView;
using SentinelType = ItemLocalIdListViewIteratorSentinel;

private:

Expand Down Expand Up @@ -223,7 +264,6 @@

/*---------------------------------------------------------------------------*/
/*---------------------------------------------------------------------------*/

/*!
* \brief Typed view over a list of connectivity entities.
*/
Expand All @@ -241,8 +281,7 @@

using LocalIdType = typename ItemLocalIdTraitsT<ItemType>::LocalIdType;
using const_iterator = ItemLocalIdListViewConstIteratorT<ItemType>;
// TODO: Create the 'Sentinel' type when we are in C++20
using SentinelType = const_iterator;
using SentinelType = ItemLocalIdListViewIteratorSentinel;

public:

Expand All @@ -267,7 +306,7 @@
}
constexpr ARCCORE_HOST_DEVICE SentinelType end() const
{
return endIterator();
return SentinelType(m_local_ids + m_size);
}
constexpr ARCCORE_HOST_DEVICE const_iterator endIterator() const
{
Expand Down
Loading