12#ifndef ARCANE_UTILS_COLLECTIONIMPL_H
13#define ARCANE_UTILS_COLLECTIONIMPL_H
17#include "arcane/utils/ObjectImpl.h"
18#include "arcane/utils/Iostream.h"
32class EnumeratorImplBase;
34extern "C" ARCANE_UTILS_EXPORT
void throwOutOfRangeException();
35extern "C" ARCANE_UTILS_EXPORT
void throwNullReference();
70 , m_position(aposition)
75 eAction action()
const {
return m_action; }
76 void* object()
const {
return m_object; }
77 Integer position()
const {
return m_position; }
144 Integer
count()
const {
return m_count; }
155 _sendEvent(CollectionEventArgs::ClearComplete, 0, 0);
162 _sendEvent(CollectionEventArgs::InsertComplete,
object, position);
169 _sendEvent(CollectionEventArgs::RemoveComplete,
object, position);
171 virtual void onSet() {}
172 virtual void onSetComplete(
void*
object, Integer position)
174 _sendEvent(CollectionEventArgs::SetComplete,
object, position);
176 virtual void onValidate() {}
185 CollectionChangeEventHandler& change() {
return m_collection_handlers; }
189 void _setCount(Integer acount) { m_count = acount; }
194 CollectionChangeEventHandler m_collection_handlers;
198 void _sendEvent(CollectionEventArgs::eAction action,
void*
object, Integer position)
200 CollectionEventArgs args(action,
object, position);
201 m_collection_handlers.notify(args);
220 typedef const T& ObjectRef;
221 typedef T* ObjectIterator;
222 typedef const T* ConstObjectIterator;
233 virtual ObjectIterator begin() = 0;
234 virtual const T* begin()
const = 0;
235 virtual ObjectIterator end() = 0;
236 virtual const T* end()
const = 0;
238 virtual T* begin2()
const = 0;
239 virtual T* end2()
const = 0;
244 template <
class Function> Function
247 std::for_each(begin(), end(), f);
253 virtual void add(ObjectRef value) = 0;
254 virtual bool remove(ObjectRef value) = 0;
255 virtual void removeAt(Integer index) = 0;
256 virtual bool contains(ObjectRef value)
const = 0;
Fichier contenant les mécanismes de gestion des évènements.
virtual EnumeratorImplBase * enumerator() const =0
Retourne un énumérateur générique sur la collection.
ptrdiff_t difference_type
Type d'une distance entre itérateur éléments du tableau.
virtual void onRemove()
Evènement envoyé avant de supprimer un élément.
Integer count() const
Retourne le nombre d'éléments de la collection.
virtual void onInsert()
Evènement envoyé avant d'insérer un élément.
Integer size_type
Type indexant le tableau.
virtual void clear()=0
Supprime tous les éléments de la collection.
virtual void onClear()
Evènement envoyé avant de supprimer tous les éléments.
CollectionImplBase(const CollectionImplBase &from)=delete
Opérateur de recopie. les handlers d'évènements ne sont pas recopiés.
virtual void onRemoveComplete(void *object, Integer position)
Evènement envoyé après supression d'un élément.
CollectionImplBase()=default
Construit une collection vide.
virtual void onInsertComplete(void *object, Integer position)
Evènement envoyé après insertion d'un élément.
CollectionImplBase(Integer acount)
Construit une collection avec acount éléments.
virtual void onClearComplete()
Evènement envoyé lorsque tous les éléments ont été supprimés.
Function each(Function f)
Applique le fonctor f à tous les éléments de la collection.
EventObservable< const CollectionEventArgs & > CollectionChangeEventHandler
Evènements envoyés par une Collection.
-*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-