Teuchos - Trilinos Tools Package
Version of the Day
Toggle main menu visibility
Loading...
Searching...
No Matches
comm
src
Teuchos_ReductionOpHelpers.hpp
1
// @HEADER
2
// *****************************************************************************
3
// Teuchos: Common Tools Package
4
//
5
// Copyright 2004 NTESS and the Teuchos contributors.
6
// SPDX-License-Identifier: BSD-3-Clause
7
// *****************************************************************************
8
// @HEADER
9
10
#ifndef TEUCHOS_REDUCTION_OP_HELPERS_HPP
11
#define TEUCHOS_REDUCTION_OP_HELPERS_HPP
12
13
#include "Teuchos_ReductionOp.hpp"
14
#include "Teuchos_SerializationTraitsHelpers.hpp"
15
#include "Teuchos_SerializerHelpers.hpp"
16
17
namespace
Teuchos
{
18
25
template
<
typename
Ordinal,
typename
T,
typename
Serializer>
26
class
CharToValueTypeReductionOpImp
:
public
ValueTypeReductionOp
<Ordinal,char>
27
{
28
public
:
30
CharToValueTypeReductionOpImp
(
31
const
RCP
<
const
ValueTypeReductionOp<Ordinal,T>
> &reductOp,
32
const
RCP<const Serializer>
& serializer
33
);
35
void
reduce
(
36
const
Ordinal charCount
37
,
const
char
charInBuffer[]
38
,
char
charInoutBuffer[]
39
)
const
;
40
private
:
41
RCP<const ValueTypeReductionOp<Ordinal,T>
> reductOp_;
42
RCP<const Serializer>
serializer_;
43
// Not defined and not to be called!
44
CharToValueTypeReductionOpImp
();
45
CharToValueTypeReductionOpImp
(
const
CharToValueTypeReductionOpImp
&);
46
CharToValueTypeReductionOpImp
& operator=(
const
CharToValueTypeReductionOpImp
&);
47
};
48
55
template
<
typename
Ordinal,
typename
T,
56
typename
Serializer
=
typename
DefaultSerializer<Ordinal,T>::DefaultSerializerType
>
57
class
CharToValueTypeReductionOp
:
58
public
CharToValueTypeReductionOpImp
<Ordinal,T,Serializer>
59
{
60
public
:
61
typedef
CharToValueTypeReductionOpImp<Ordinal,T,Serializer>
Base;
63
CharToValueTypeReductionOp
(
64
const
RCP
<
const
ValueTypeReductionOp<Ordinal,T>
> &reductOp,
65
const
RCP<const Serializer>
& serializer
66
) : Base(reductOp, serializer) {}
67
};
68
78
template
<
typename
Ordinal,
typename
T>
79
class
CharToValueTypeReductionOp
<Ordinal,T,typename
DefaultSerializer
<Ordinal,T>::DefaultSerializerType> :
80
public
CharToValueTypeReductionOpImp
<Ordinal,T,typename DefaultSerializer<Ordinal,T>::DefaultSerializerType>
81
{
82
public
:
83
typedef
DefaultSerializer<Ordinal,T>
DS;
// work around for parsing bug in gcc 4.1-4.2
84
typedef
typename
DS::DefaultSerializerType
Serializer;
85
typedef
CharToValueTypeReductionOpImp<Ordinal,T,Serializer>
Base;
87
CharToValueTypeReductionOp
(
88
const
RCP
<
const
ValueTypeReductionOp<Ordinal,T>
> &reductOp,
89
const
RCP<const Serializer>
& serializer =
DS::getDefaultSerializerRCP
()
90
) : Base(reductOp, serializer) {}
91
};
92
99
template
<
typename
Ordinal,
typename
T>
100
class
CharToReferenceTypeReductionOp
:
public
ValueTypeReductionOp
<Ordinal,char>
101
{
102
public
:
104
CharToReferenceTypeReductionOp
(
105
const
RCP
<
const
Serializer<Ordinal,T>
> &serializer
106
,
const
RCP
<
const
ReferenceTypeReductionOp<Ordinal,T>
> &reductOp
107
);
109
void
reduce
(
110
const
Ordinal charCount
111
,
const
char
charInBuffer[]
112
,
char
charInoutBuffer[]
113
)
const
;
114
private
:
115
RCP<const Serializer<Ordinal,T>
> serializer_;
116
RCP<const ReferenceTypeReductionOp<Ordinal,T>
> reductOp_;
117
// Not defined and not to be called!
118
CharToReferenceTypeReductionOp
();
119
CharToReferenceTypeReductionOp
(
const
CharToReferenceTypeReductionOp
&);
120
CharToReferenceTypeReductionOp
& operator=(
const
CharToReferenceTypeReductionOp
&);
121
};
122
123
// /////////////////////////////////////
124
// Template implementations
125
126
//
127
// CharToValueTypeReductionOpImp
128
//
129
130
template
<
typename
Ordinal,
typename
T,
typename
Serializer>
131
CharToValueTypeReductionOpImp<Ordinal,T,Serializer>::CharToValueTypeReductionOpImp
(
132
const
RCP
<
const
ValueTypeReductionOp<Ordinal,T>
> &reductOp,
133
const
RCP<const Serializer>
& serializer
134
)
135
:reductOp_(reductOp), serializer_(serializer)
136
{}
137
138
template
<
typename
Ordinal,
typename
T,
typename
Serializer>
139
void
CharToValueTypeReductionOpImp<Ordinal,T,Serializer>::reduce
(
140
const
Ordinal charCount
141
,
const
char
charInBuffer[]
142
,
char
charInoutBuffer[]
143
)
const
144
{
145
ConstValueTypeDeserializationBuffer<Ordinal,T,Serializer>
146
inBuffer(charCount,charInBuffer,serializer_);
147
ValueTypeDeserializationBuffer<Ordinal,T,Serializer>
148
inoutBuffer(charCount,charInoutBuffer,serializer_);
149
reductOp_->reduce(
150
inBuffer.getCount(),inBuffer.getBuffer(),inoutBuffer.getBuffer()
151
);
152
}
153
154
//
155
// CharToReferenceTypeReductionOp
156
//
157
158
template
<
typename
Ordinal,
typename
T>
159
CharToReferenceTypeReductionOp<Ordinal,T>::CharToReferenceTypeReductionOp
(
160
const
RCP
<
const
Serializer<Ordinal,T>
> &serializer
161
,
const
RCP
<
const
ReferenceTypeReductionOp<Ordinal,T>
> &reductOp
162
)
163
:serializer_(serializer), reductOp_(reductOp)
164
{}
165
166
template
<
typename
Ordinal,
typename
T>
167
void
CharToReferenceTypeReductionOp<Ordinal,T>::reduce
(
168
const
Ordinal charCount
169
,
const
char
charInBuffer[]
170
,
char
charInoutBuffer[]
171
)
const
172
{
173
ConstReferenceTypeDeserializationBuffer<Ordinal,T>
174
inBuffer(*serializer_,charCount,charInBuffer);
175
ReferenceTypeDeserializationBuffer<Ordinal,T>
176
inoutBuffer(*serializer_,charCount,charInoutBuffer);
177
reductOp_->reduce(
178
inBuffer.
getCount
(),inBuffer.
getBuffer
(),inoutBuffer.
getBuffer
()
179
);
180
}
181
182
}
// namespace Teuchos
183
184
#endif
// TEUCHOS_REDUCTION_OP_HELPERS_HPP
Teuchos::CharToReferenceTypeReductionOp::CharToReferenceTypeReductionOp
CharToReferenceTypeReductionOp(const RCP< const Serializer< Ordinal, T > > &serializer, const RCP< const ReferenceTypeReductionOp< Ordinal, T > > &reductOp)
Definition
Teuchos_ReductionOpHelpers.hpp:159
Teuchos::CharToReferenceTypeReductionOp::reduce
void reduce(const Ordinal charCount, const char charInBuffer[], char charInoutBuffer[]) const
Definition
Teuchos_ReductionOpHelpers.hpp:167
Teuchos::CharToValueTypeReductionOp< Ordinal, T, typename DefaultSerializer< Ordinal, T >::DefaultSerializerType >::CharToValueTypeReductionOp
CharToValueTypeReductionOp(const RCP< const ValueTypeReductionOp< Ordinal, T > > &reductOp, const RCP< const Serializer > &serializer=DS::getDefaultSerializerRCP())
Definition
Teuchos_ReductionOpHelpers.hpp:87
Teuchos::CharToValueTypeReductionOp::CharToValueTypeReductionOp
CharToValueTypeReductionOp(const RCP< const ValueTypeReductionOp< Ordinal, T > > &reductOp, const RCP< const Serializer > &serializer)
Definition
Teuchos_ReductionOpHelpers.hpp:63
Teuchos::CharToValueTypeReductionOpImp::reduce
void reduce(const Ordinal charCount, const char charInBuffer[], char charInoutBuffer[]) const
Definition
Teuchos_ReductionOpHelpers.hpp:139
Teuchos::CharToValueTypeReductionOpImp::CharToValueTypeReductionOpImp
CharToValueTypeReductionOpImp(const RCP< const ValueTypeReductionOp< Ordinal, T > > &reductOp, const RCP< const Serializer > &serializer)
Definition
Teuchos_ReductionOpHelpers.hpp:131
Teuchos::ConstReferenceTypeDeserializationBuffer
Encapsulate how an array of onst objects with reference sematics is deserialized from a char[] array ...
Definition
Teuchos_SerializerHelpers.hpp:118
Teuchos::ConstReferenceTypeDeserializationBuffer::getBuffer
const T *const * getBuffer() const
Definition
Teuchos_SerializerHelpers.hpp:308
Teuchos::ConstReferenceTypeDeserializationBuffer::getCount
Ordinal getCount() const
Definition
Teuchos_SerializerHelpers.hpp:314
Teuchos::ConstValueTypeDeserializationBuffer
Encapsulate how an array of non-const serialized objects with value sematics stored in a char[] array...
Definition
Teuchos_SerializationTraitsHelpers.hpp:434
Teuchos::DefaultSerializer
A class for instantiating a default serialization object.
Definition
Teuchos_SerializationTraitsHelpers.hpp:38
Teuchos::DefaultSerializer::DefaultSerializerType
SerializationTraits< Ordinal, T > DefaultSerializerType
Typename of default serializer.
Definition
Teuchos_SerializationTraitsHelpers.hpp:41
Teuchos::DefaultSerializer::getDefaultSerializerRCP
static Teuchos::RCP< DefaultSerializerType > getDefaultSerializerRCP()
Return an RCP of an instance of the default serializer.
Definition
Teuchos_SerializationTraitsHelpers.hpp:50
Teuchos::RCP
Smart reference counting pointer class for automatic garbage collection.
Definition
Teuchos_RCPDecl.hpp:397
Teuchos::ReferenceTypeDeserializationBuffer
Encapsulate how an array of non-const objects with reference sematics is deserialized from a char[] a...
Definition
Teuchos_SerializerHelpers.hpp:84
Teuchos::ReferenceTypeDeserializationBuffer::getBuffer
T *const * getBuffer() const
Definition
Teuchos_SerializerHelpers.hpp:260
Teuchos::ReferenceTypeReductionOp
Base interface class for user-defined reduction operations for objects that use reference semantics.
Definition
Teuchos_ReductionOp.hpp:48
Teuchos::Serializer
Strategy interface for the indirect serializing and deserializing objects of a given type handled usi...
Definition
Teuchos_Serializer.hpp:25
Teuchos::ValueTypeDeserializationBuffer
Encapsulate how an array of non-const serialized objects with value sematics stored in a char[] array...
Definition
Teuchos_SerializationTraitsHelpers.hpp:417
Teuchos::ValueTypeReductionOp
Base interface class for user-defined reduction operations for objects that use value semantics.
Definition
Teuchos_ReductionOp.hpp:28
Teuchos
The Teuchos namespace contains all of the classes, structs and enums used by Teuchos,...
Generated by
1.17.0