Arcane
4.1.12.0
User documentation
Loading...
Searching...
No Matches
Dispatchers.h
1
// -*- tab-width: 2; indent-tabs-mode: nil; coding: utf-8-with-signature -*-
2
//-----------------------------------------------------------------------------
3
// Copyright 2000-2026 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
/* Dispatcher container. */
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
24
namespace
Arcane::MessagePassing
25
{
26
27
/*---------------------------------------------------------------------------*/
28
/*---------------------------------------------------------------------------*/
29
30
/*!
31
* \brief Interface of the dispatcher container.
32
*/
33
class
ARCCORE_MESSAGEPASSING_EXPORT Dispatchers
34
:
public
IDispatchers
35
{
36
private
:
37
38
template
<
typename
DataType>
39
class
ContainerTraits
40
{
41
public
:
42
43
using
InstanceType =
ITypeDispatcher<DataType>
*;
44
};
45
46
public
:
47
48
Dispatchers();
49
~Dispatchers()
override
;
50
51
public
:
52
53
ITypeDispatcher<char>
* dispatcher(
char
* v)
override
{
return
m_container.instance(v); }
54
ITypeDispatcher<signed char>
* dispatcher(
signed
char
* v)
override
{
return
m_container.instance(v); }
55
ITypeDispatcher<unsigned char>
* dispatcher(
unsigned
char
* v)
override
{
return
m_container.instance(v); }
56
ITypeDispatcher<short>
* dispatcher(
short
* v)
override
{
return
m_container.instance(v); }
57
ITypeDispatcher<unsigned short>
* dispatcher(
unsigned
short
* v)
override
{
return
m_container.instance(v); }
58
ITypeDispatcher<int>
* dispatcher(
int
* v)
override
{
return
m_container.instance(v); }
59
ITypeDispatcher<unsigned int>
* dispatcher(
unsigned
int
* v)
override
{
return
m_container.instance(v); }
60
ITypeDispatcher<long>
* dispatcher(
long
* v)
override
{
return
m_container.instance(v); }
61
ITypeDispatcher<unsigned long>
* dispatcher(
unsigned
long
* v)
override
{
return
m_container.instance(v); }
62
ITypeDispatcher<long long>
* dispatcher(
long
long
* v)
override
{
return
m_container.instance(v); }
63
ITypeDispatcher<unsigned long long>
* dispatcher(
unsigned
long
long
* v)
override
{
return
m_container.instance(v); }
64
ITypeDispatcher<float>
* dispatcher(
float
* v)
override
{
return
m_container.instance(v); }
65
ITypeDispatcher<double>
* dispatcher(
double
* v)
override
{
return
m_container.instance(v); }
66
ITypeDispatcher<long double>
* dispatcher(
long
double
* v)
override
{
return
m_container.instance(v); }
67
ITypeDispatcher<BFloat16>
* dispatcher(
BFloat16
* v)
override
{
return
m_container.instance(v); }
68
ITypeDispatcher<Float16>
* dispatcher(
Float16
* v)
override
{
return
m_container.instance(v); }
69
70
IControlDispatcher
* controlDispatcher()
override
{
return
m_control; }
71
ISerializeDispatcher
* serializeDispatcher()
override
{
return
m_serialize; }
72
73
public
:
74
75
template
<
typename
DataType>
void
setDispatcher(
ITypeDispatcher<DataType>
* x)
76
{
77
DataType* ptr =
nullptr
;
78
m_container.instance(ptr) = x;
79
}
80
81
void
setDispatcher(
IControlDispatcher
* x) { m_control = x; }
82
void
setDispatcher(
ISerializeDispatcher
* x) { m_serialize = x; }
83
84
//! Indicates whether the delete operator is called on instances during
85
//! destruction (false by default)
86
void
setDeleteDispatchers
(
bool
v) { m_is_delete_dispatchers = v; }
87
88
private
:
89
90
Arccore::BuiltInDataTypeContainer<ContainerTraits>
m_container;
91
92
IControlDispatcher
* m_control =
nullptr
;
93
ISerializeDispatcher
* m_serialize =
nullptr
;
94
95
bool
m_is_delete_dispatchers =
false
;
96
97
private
:
98
};
99
100
/*---------------------------------------------------------------------------*/
101
/*---------------------------------------------------------------------------*/
102
103
}
// End namespace Arcane::MessagePassing
104
105
/*---------------------------------------------------------------------------*/
106
/*---------------------------------------------------------------------------*/
107
108
#endif
Arcane::BFloat16
'Brain Float16' type
Definition
arccore/src/base/arccore/base/BFloat16.h:34
Arcane::Float16
Half-precision floating-point type.
Definition
arccore/src/base/arccore/base/Float16.h:34
Arcane::MessagePassing::Dispatchers::setDeleteDispatchers
void setDeleteDispatchers(bool v)
Definition
Dispatchers.h:86
Arcane::MessagePassing::IControlDispatcher
Definition
IControlDispatcher.h:36
Arcane::MessagePassing::IDispatchers
Interface of the dispatcher container.
Definition
IDispatchers.h:33
Arcane::MessagePassing::ISerializeDispatcher
Interface for serialization messages.
Definition
ISerializeDispatcher.h:33
Arcane::MessagePassing::ITypeDispatcher
Definition
ITypeDispatcher.h:40
Arccore::BuiltInDataTypeContainer
Container containing an instance of a class per data type.
Definition
BuiltInDataTypeContainer.h:50
Arcane::MessagePassing
Declarations of types and methods used by message exchange mechanisms.
Definition
ContigMachineShMemWinBase.h:35
arccore
message_passing
Dispatchers.h
Generated on
for Arcane by
1.16.1