Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ItemArrayEnumerator.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2022 CEA (www.cea.fr) IFPEN (www.ifpenergiesnouvelles.com)
4// See the top-level COPYRIGHT file for details.
5// SPDX-License-Identifier: Apache-2.0
6//-----------------------------------------------------------------------------
7/*---------------------------------------------------------------------------*/
8/* ItemArrayEnumerator.h (C) 2000-2018 */
9/* */
10/* Enumérateur sur un tableau d'entités du maillage. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ITEMARRAYENUMERATOR_H
13#define ARCANE_ITEMARRAYENUMERATOR_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/Item.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22ARCANE_BEGIN_NAMESPACE
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
27class ItemInternal;
28
29/*---------------------------------------------------------------------------*/
30/*---------------------------------------------------------------------------*/
34class ARCANE_CORE_EXPORT ItemArrayEnumerator
35{
36 public:
37 typedef ItemInternal* ItemPtr;
38 typedef ItemPtr* Iterator;
39 public:
41 : m_current(0),
42 m_end(ids.size()),
43 m_items_local_id(ids.data()),
44 m_items_internal(items_internal.data())
45 {
46 }
47 ItemArrayEnumerator(const Int32* ids,Integer nb_item,const ItemPtr* items_internal)
48 : m_current(0),
49 m_end(nb_item),
50 m_items_local_id(ids),
51 m_items_internal(items_internal)
52 {
53 }
54 public:
55 inline void operator++()
56 { ++m_current; }
57 inline bool hasNext() const
58 { return m_current<m_end; }
59 inline Integer itemLocalId() const
60 { return m_items_local_id[m_current]; }
61 inline Integer index() const
62 { return m_current; }
63 inline Item operator*() const
64 { return Item(m_items_internal,m_items_local_id[m_current]); }
65 protected:
66 Integer m_current;
67 Integer m_end;
68 const Int32* ARCANE_RESTRICT m_items_local_id;
69 const ItemPtr* m_items_internal;
70};
71
72/*---------------------------------------------------------------------------*/
73/*---------------------------------------------------------------------------*/
77template<typename ItemType>
80{
81 public:
84 {
85 }
86 ItemArrayEnumeratorT(const Int32* ids,Integer nb_item,const ItemPtr* items_internal)
88 {
89 }
90 inline ItemType operator*() const
91 { return ItemType(m_items_internal,m_items_local_id[m_current]); }
92};
93
94/*---------------------------------------------------------------------------*/
95/*---------------------------------------------------------------------------*/
96
97ARCANE_END_NAMESPACE
98
99/*---------------------------------------------------------------------------*/
100/*---------------------------------------------------------------------------*/
101
102#endif
Enumérateur sur un tableau d'entités du maillage de genre ItemType.
Enumérateur sur un tableau d'entités du maillage.
Structure interne d'une entité de maillage.
Classe de base d'un élément de maillage.
Definition Item.h:83
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Vue constante d'un tableau de type T.