Arcane  v3.14.10.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
core/ItemGroupObserver.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/* ItemGroupObserver.h (C) 2000-2016 */
9/* */
10/* Interface et implémentation basique des observeurs de groupe. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCANE_ITEMGROUPOBSERVER_H
13#define ARCANE_ITEMGROUPOBSERVER_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arcane/ItemTypes.h"
18
19/*---------------------------------------------------------------------------*/
20/*---------------------------------------------------------------------------*/
21
22ARCANE_BEGIN_NAMESPACE
23
24/*---------------------------------------------------------------------------*/
25/*---------------------------------------------------------------------------*/
26
28{
29 public:
30
31 template<typename T>
33 {
35 typedef void (T::*FuncPtrWithInfo)(const Int32ConstArrayView * info);
36
38 typedef void (T::*FuncPtr)();
39 };
40
41 public:
42
44 virtual ~IItemGroupObserver() { }
45
47
52 virtual void executeExtend(const Int32ConstArrayView * info) =0;
53
55
66 virtual void executeReduce(const Int32ConstArrayView * info) =0;
67 // virtual void executeReduce(const Int32ConstArrayView * info, const Int32ConstArrayView * info2) = 0;
68
70
73 virtual void executeCompact(const Int32ConstArrayView * info) =0;
74
76
77 virtual void executeInvalidate() =0;
78
80
81 virtual bool needInfo() const =0;
82};
83
84/*---------------------------------------------------------------------------*/
85/*---------------------------------------------------------------------------*/
86
87template<typename T>
89: public IItemGroupObserver
90{
91 public:
92
98 : m_object(object)
99 , m_extend_function(extend_funcptr)
100 , m_reduce_function(reduce_funcptr)
101 , m_compact_function(compact_funcptr)
102 , m_invalidate_function(invalidate_funcptr) { }
103
104 public:
105
107 {
108 (m_object->*m_extend_function)(info);
109 }
110
112 {
113 (m_object->*m_reduce_function)(info);
114 }
115
117 {
118 (m_object->*m_compact_function)(info);
119 }
120
122 {
123 (m_object->*m_invalidate_function)();
124 }
125
126 bool needInfo() const
127 {
128 return true;
129 }
130
131 private:
132
138};
139
140/*---------------------------------------------------------------------------*/
141/*---------------------------------------------------------------------------*/
142
143template<typename T>
145: public IItemGroupObserver
146{
147 public:
148
152 : m_object(object),
153 m_function(funcptr) { }
154
155 public:
156
158 {
159 (m_object->*m_function)();
160 }
161
163 {
164 (m_object->*m_function)();
165 }
166
168 {
169 (m_object->*m_function)();
170 }
171
173 {
174 (m_object->*m_function)();
175 }
176
177 bool needInfo() const
178 {
179 return false;
180 }
181
182 private:
183
186};
187
188/*---------------------------------------------------------------------------*/
189/*---------------------------------------------------------------------------*/
190
192template<typename T>
198
199/*---------------------------------------------------------------------------*/
200/*---------------------------------------------------------------------------*/
201
203template<typename T>
212
213/*---------------------------------------------------------------------------*/
214/*---------------------------------------------------------------------------*/
215
216
217ARCANE_END_NAMESPACE
218
219/*---------------------------------------------------------------------------*/
220/*---------------------------------------------------------------------------*/
221
222#endif
223
virtual bool needInfo() const =0
Indique si l'observer aura besoin d'information de transition.
virtual void executeExtend(const Int32ConstArrayView *info)=0
Execute l'action associée à l'extension.
virtual void executeInvalidate()=0
Execute l'action associée à l'invalidation.
virtual void executeCompact(const Int32ConstArrayView *info)=0
Execute l'action associée au compactage.
virtual ~IItemGroupObserver()
Destructeur.
virtual void executeReduce(const Int32ConstArrayView *info)=0
Execute l'action associée à l'extension.
FuncTraits< T >::FuncPtrWithInfo m_reduce_function
Pointeur vers la méthode associée.
FuncTraits< T >::FuncPtrWithInfo m_extend_function
Pointeur vers la méthode associée.
FuncTraits< T >::FuncPtrWithInfo m_compact_function
Pointeur vers la méthode associée.
bool needInfo() const
Indique si l'observer aura besoin d'information de transition.
void executeCompact(const Int32ConstArrayView *info)
Execute l'action associée au compactage.
void executeReduce(const Int32ConstArrayView *info)
Execute l'action associée à l'extension.
FuncTraits< T >::FuncPtr m_invalidate_function
Pointeur vers la méthode associée.
void executeExtend(const Int32ConstArrayView *info)
Execute l'action associée à l'extension.
void executeInvalidate()
Execute l'action associée à l'invalidation.
FuncTraits< T >::FuncPtr m_function
Pointeur vers la méthode associée.
ItemGroupObserverWithoutInfoT(T *object, typename FuncTraits< T >::FuncPtr funcptr)
Constructeur à partir d'une unique fonction sans argument.
bool needInfo() const
Indique si l'observer aura besoin d'information de transition.
void executeReduce(const Int32ConstArrayView *)
Execute l'action associée à l'extension.
void executeInvalidate()
Execute l'action associée à l'invalidation.
void executeExtend(const Int32ConstArrayView *)
Execute l'action associée à l'extension.
void executeCompact(const Int32ConstArrayView *)
Execute l'action associée au compactage.
Lecteur des fichiers de maillage via la bibliothèque LIMA.
Definition Lima.cc:120
Vue constante d'un tableau de type T.
IItemGroupObserver * newItemGroupObserverT(T *object, typename IItemGroupObserver::FuncTraits< T >::FuncPtr funcptr)
Utilitaire pour création simplifié de ItemGroupObserverT.