Arcane  v3.16.0.0
Documentation développeur
Chargement...
Recherche...
Aucune correspondance
Dispatchers.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/* Dispatchers.h (C) 2000-2025 */
9/* */
10/* Conteneur des dispatchers. */
11/*---------------------------------------------------------------------------*/
12#ifndef ARCCORE_MESSAGEPASSING_DISPATCHERS_H
13#define ARCCORE_MESSAGEPASSING_DISPATCHERS_H
14/*---------------------------------------------------------------------------*/
15/*---------------------------------------------------------------------------*/
16
17#include "arccore/message_passing/IDispatchers.h"
18
19#include "arccore/base/BuiltInDataTypeContainer.h"
20
21/*---------------------------------------------------------------------------*/
22/*---------------------------------------------------------------------------*/
23
25{
26
27/*---------------------------------------------------------------------------*/
28/*---------------------------------------------------------------------------*/
32class ARCCORE_MESSAGEPASSING_EXPORT Dispatchers
33: public IDispatchers
34{
35 private:
36
37 template <typename DataType>
39 {
40 public:
41
42 using InstanceType = ITypeDispatcher<DataType>*;
43 };
44
45 public:
46
47 Dispatchers();
48 ~Dispatchers() override;
49
50 public:
51
52 ITypeDispatcher<char>* dispatcher(char* v) override { return m_container.instance(v); }
53 ITypeDispatcher<signed char>* dispatcher(signed char* v) override { return m_container.instance(v); }
54 ITypeDispatcher<unsigned char>* dispatcher(unsigned char* v) override { return m_container.instance(v); }
55 ITypeDispatcher<short>* dispatcher(short* v) override { return m_container.instance(v); }
56 ITypeDispatcher<unsigned short>* dispatcher(unsigned short* v) override { return m_container.instance(v); }
57 ITypeDispatcher<int>* dispatcher(int* v) override { return m_container.instance(v); }
58 ITypeDispatcher<unsigned int>* dispatcher(unsigned int* v) override { return m_container.instance(v); }
59 ITypeDispatcher<long>* dispatcher(long* v) override { return m_container.instance(v); }
60 ITypeDispatcher<unsigned long>* dispatcher(unsigned long* v) override { return m_container.instance(v); }
61 ITypeDispatcher<long long>* dispatcher(long long* v) override { return m_container.instance(v); }
62 ITypeDispatcher<unsigned long long>* dispatcher(unsigned long long* v) override { return m_container.instance(v); }
63 ITypeDispatcher<float>* dispatcher(float* v) override { return m_container.instance(v); }
64 ITypeDispatcher<double>* dispatcher(double* v) override { return m_container.instance(v); }
65 ITypeDispatcher<long double>* dispatcher(long double* v) override { return m_container.instance(v); }
66 ITypeDispatcher<BFloat16>* dispatcher(BFloat16* v) override { return m_container.instance(v); }
67 ITypeDispatcher<Float16>* dispatcher(Float16* v) override { return m_container.instance(v); }
68
69 IControlDispatcher* controlDispatcher() override { return m_control; }
70 ISerializeDispatcher* serializeDispatcher() override { return m_serialize; }
71
72 public:
73
74 template <typename DataType> void setDispatcher(ITypeDispatcher<DataType>* x)
75 {
76 DataType* ptr = nullptr;
77 m_container.instance(ptr) = x;
78 }
79
80 void setDispatcher(IControlDispatcher* x) { m_control = x; }
81 void setDispatcher(ISerializeDispatcher* x) { m_serialize = x; }
82
84 void setDeleteDispatchers(bool v) { m_is_delete_dispatchers = v; }
85
86 private:
87
89
90 IControlDispatcher* m_control = nullptr;
91 ISerializeDispatcher* m_serialize = nullptr;
92
93 bool m_is_delete_dispatchers = false;
94
95 private:
96};
97
98/*---------------------------------------------------------------------------*/
99/*---------------------------------------------------------------------------*/
100
101} // End namespace Arccore::MessagePassing
102
103/*---------------------------------------------------------------------------*/
104/*---------------------------------------------------------------------------*/
105
106#endif
void setDeleteDispatchers(bool v)
Indique si lors de la destruction on appelle l'opérateur delete sur les instances (faux par défaut)
Definition Dispatchers.h:84
Manage control streams for parallel messages.
Interface du conteneur des dispatchers.
Interface des messages de sérialisation.
Gestion des messages parallèles pour le type Type.
Conteneur contenant une instance d'une classe par type de donnée.
Déclarations des types et méthodes utilisés par les mécanismes d'échange de messages.
Definition Parallel.h:50