Arcane  v3.16.8.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
ItemPrinter.h
1// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2//-----------------------------------------------------------------------------
3// Copyright 2000-2025 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/* ItemPrinter.h (C) 2000-2025 */
9/* */
10/* Routines d'impressions d'une entité. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_CORE_ITEMPRINTER_H
13#define ARCANE_CORE_ITEMPRINTER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/utils/Iostream.h"
18
20#include "arcane/core/Item.h"
21
22/*---------------------------------------------------------------------------*/
23/*---------------------------------------------------------------------------*/
24
25namespace Arcane
26{
27
28/*---------------------------------------------------------------------------*/
29/*---------------------------------------------------------------------------*/
33class ARCANE_CORE_EXPORT ItemPrinter
34{
35 public:
36
37 ItemPrinter(ItemInternal* item, eItemKind ik)
38 : m_item(item)
39 , m_item_kind(ik)
40 , m_has_item_kind(true)
41 {}
42 ItemPrinter(ItemInternal* item)
43 : m_item(item)
44 , m_item_kind(IK_Unknown)
45 , m_has_item_kind(false)
46 {}
47 ItemPrinter(const Item& item)
48 : m_item(item.itemBase())
49 , m_item_kind(IK_Unknown)
50 , m_has_item_kind(false)
51 {}
52 ItemPrinter(const Item& item, eItemKind ik)
53 : m_item(item.itemBase())
54 , m_item_kind(ik)
55 , m_has_item_kind(true)
56 {}
57 ItemPrinter(const Node& item)
58 : m_item(item.itemBase())
59 , m_item_kind(IK_Node)
60 , m_has_item_kind(true)
61 {}
62 ItemPrinter(const Edge& item)
63 : m_item(item.itemBase())
64 , m_item_kind(IK_Edge)
65 , m_has_item_kind(true)
66 {}
67 ItemPrinter(const Face& item)
68 : m_item(item.itemBase())
69 , m_item_kind(IK_Face)
70 , m_has_item_kind(true)
71 {}
72 ItemPrinter(const Cell& item)
73 : m_item(item.itemBase())
74 , m_item_kind(IK_Cell)
75 , m_has_item_kind(true)
76 {}
77 ItemPrinter(const Particle& item)
78 : m_item(item.itemBase())
79 , m_item_kind(IK_Particle)
80 , m_has_item_kind(true)
81 {}
82
83 public:
84
86 void print(std::ostream& o) const;
87
88 public:
89
90 impl::ItemBase m_item;
91 eItemKind m_item_kind;
92 bool m_has_item_kind;
93
94 public:
95
96 struct Internal;
97};
98
99/*---------------------------------------------------------------------------*/
100/*---------------------------------------------------------------------------*/
101
102class ARCANE_CORE_EXPORT FullItemPrinter
103{
104 public:
105
106 explicit FullItemPrinter(const Item& item)
107 : m_item(item.itemBase())
108 {}
109
111 void print(std::ostream& o) const;
112
113 private:
114
115 impl::ItemBase m_item;
116};
117
118/*---------------------------------------------------------------------------*/
119/*---------------------------------------------------------------------------*/
120
121class ARCANE_CORE_EXPORT NeighborItemPrinter
122{
123 public:
124
125 explicit NeighborItemPrinter(Item item, const Integer levelmax = 1)
126 : m_item(item.itemBase())
127 , m_level_max(levelmax)
128 {}
129
131 void print(std::ostream& o) const { print(o, m_item, m_level_max, m_level_max); }
132
133 private:
134
135 impl::ItemBase m_item;
136 Integer m_level_max;
137
138 private:
139
140 static std::ostream& indent(std::ostream& o, Integer n);
141 static void print(std::ostream& o, Item item, Integer level, Integer levelmax);
142 static void _printSubItems(std::ostream& ostr, Integer level, Integer levelmax,
143 ItemVectorView sub_items, const char* name);
144};
145
146/*---------------------------------------------------------------------------*/
147/*---------------------------------------------------------------------------*/
148
149inline std::ostream&
150operator<<(std::ostream& o, const ItemPrinter& ip)
151{
152 ip.print(o);
153 return o;
154}
155
156inline std::ostream&
157operator<<(std::ostream& o, const FullItemPrinter& ip)
158{
159 ip.print(o);
160 return o;
161}
162
163inline std::ostream&
164operator<<(std::ostream& o, const NeighborItemPrinter& ip)
165{
166 ip.print(o);
167 return o;
168}
169
170/*---------------------------------------------------------------------------*/
171/*---------------------------------------------------------------------------*/
172
173} // namespace Arcane
174
175/*---------------------------------------------------------------------------*/
176/*---------------------------------------------------------------------------*/
177
178#endif
Déclarations des types généraux de Arcane.
Maille d'un maillage.
Definition Item.h:1205
Arête d'une maille.
Definition Item.h:823
Face d'une maille.
Definition Item.h:958
void print(std::ostream &o) const
Ecriture sur flux de l'Item courant et de ses sous-items.
Structure interne d'une entité de maillage.
void print(std::ostream &o) const
Ecriture sur flux de l'Item courant.
Vue sur un vecteur d'entités.
Classe de base d'un élément de maillage.
Definition Item.h:83
impl::ItemBase itemBase() const
Partie interne de l'entité.
Definition Item.h:369
void print(std::ostream &o) const
Ecriture sur flux de l'Item courant et de ses sous-items.
Noeud d'un maillage.
Definition Item.h:582
Particule.
Definition Item.h:1411
std::ostream & operator<<(std::ostream &o, eExecutionPolicy exec_policy)
Affiche le nom de la politique d'exécution.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
Int32 Integer
Type représentant un entier.
eItemKind
Genre d'entité de maillage.
@ IK_Particle
Entité de maillage de genre particule.
@ IK_Node
Entité de maillage de genre noeud.
@ IK_Cell
Entité de maillage de genre maille.
@ IK_Unknown
Entité de maillage de genre inconnu ou non initialisé
@ IK_Face
Entité de maillage de genre face.
@ IK_Edge
Entité de maillage de genre arête.