35 using BaseClass::_toTrueType;
39 using BaseClass::m_extent;
45 _copyFrom(args.m_indexes, _toTrueType(args.m_source), _toTrueType(args.m_destination));
49 _copyTo(args.m_indexes, _toTrueType(args.m_source), _toTrueType(args.m_destination));
53 _fill(args.m_indexes, _toTrueType(args.m_source), _toTrueType(args.m_destination));
57 _copyFrom(args.m_indexes, args.m_multi_memory, _toTrueType(args.m_source_buffer));
61 _copyTo(args.m_indexes, args.m_const_multi_memory, _toTrueType(args.m_destination_buffer));
65 _fill(args.m_indexes, args.m_multi_memory, _toTrueType(args.m_source_buffer));
73 ARCCORE_CHECK_POINTER(indexes.
data());
74 ARCCORE_CHECK_POINTER(source.data());
75 ARCCORE_CHECK_POINTER(destination.
data());
78 for (
Int32 i = 0; i < nb_index; ++i) {
81 for (
Int32 z = 0, n = m_extent.v; z < n; ++z)
82 destination[z_index + z] = source[zci + z];
88 ARCCORE_CHECK_POINTER(indexes.
data());
89 ARCCORE_CHECK_POINTER(source.data());
90 ARCCORE_CHECK_POINTER(multi_views.data());
92 const Int32 value_size = indexes.
size() / 2;
93 for (
Int32 i = 0; i < value_size; ++i) {
94 Int32 index0 = indexes[i * 2];
95 Int32 index1 = indexes[(i * 2) + 1];
97 auto* orig_view_data =
reinterpret_cast<DataType*
>(orig_view_bytes.data());
100 Span<DataType> orig_view = { orig_view_data, orig_view_bytes.size() / (
Int64)
sizeof(DataType) };
103 for (
Int32 z = 0, n = m_extent.v; z < n; ++z)
104 orig_view[zci + z] = source[z_index + z];
116 ARCCORE_CHECK_POINTER(source.data());
117 ARCCORE_CHECK_POINTER(destination.
data());
122 Int64 nb_value = destination.
size() / m_extent.v;
123 for (
Int64 i = 0; i < nb_value; ++i) {
124 Int64 zci = i * m_extent.v;
125 for (
Int32 z = 0, n = m_extent.v; z < n; ++z)
126 destination[zci + z] = source[z];
130 ARCCORE_CHECK_POINTER(indexes.
data());
131 for (
Int32 i = 0; i < nb_index; ++i) {
133 for (
Int32 z = 0, n = m_extent.v; z < n; ++z)
134 destination[zci + z] = source[z];
142 ARCCORE_CHECK_POINTER(source.data());
143 ARCCORE_CHECK_POINTER(multi_views.data());
145 const Int32 nb_index = indexes.
size() / 2;
148 const Int32 nb_dim1 = multi_views.size();
149 for (
Int32 zz = 0; zz < nb_dim1; ++zz) {
151 Int64 nb_value = orig_view_bytes.
size() / ((
Int64)
sizeof(DataType));
152 auto* orig_view_data =
reinterpret_cast<DataType*
>(orig_view_bytes.
data());
154 for (
Int64 i = 0; i < nb_value; i += m_extent.v) {
157 for (
Int32 z = 0, n = m_extent.v; z < n; ++z) {
158 orig_view[i + z] = source[z];
164 ARCCORE_CHECK_POINTER(indexes.
data());
165 for (
Int32 i = 0; i < nb_index; ++i) {
166 Int32 index0 = indexes[i * 2];
167 Int32 index1 = indexes[(i * 2) + 1];
168 Span<std::byte> orig_view_bytes = multi_views[index0];
169 auto* orig_view_data =
reinterpret_cast<DataType*
>(orig_view_bytes.data());
172 Span<DataType> orig_view = { orig_view_data, orig_view_bytes.size() / (
Int64)
sizeof(DataType) };
174 for (
Int32 z = 0, n = m_extent.v; z < n; ++z)
175 orig_view[zci + z] = source[z];
180 void _copyTo(SmallSpan<const Int32> indexes, Span<const DataType> source,
181 Span<DataType> destination)
183 ARCCORE_CHECK_POINTER(indexes.data());
184 ARCCORE_CHECK_POINTER(source.data());
185 ARCCORE_CHECK_POINTER(destination.data());
187 Int32 nb_index = indexes.size();
189 for (
Int32 i = 0; i < nb_index; ++i) {
192 for (
Int32 z = 0, n = m_extent.v; z < n; ++z)
193 destination[zci + z] = source[z_index + z];
197 void _copyTo(SmallSpan<const Int32> indexes, SmallSpan<
const Span<const std::byte>> multi_views,
198 Span<DataType> destination)
200 ARCCORE_CHECK_POINTER(indexes.data());
201 ARCCORE_CHECK_POINTER(destination.data());
202 ARCCORE_CHECK_POINTER(multi_views.data());
204 const Int32 value_size = indexes.size() / 2;
205 for (
Int32 i = 0; i < value_size; ++i) {
206 Int32 index0 = indexes[i * 2];
207 Int32 index1 = indexes[(i * 2) + 1];
208 Span<const std::byte> orig_view_bytes = multi_views[index0];
209 auto* orig_view_data =
reinterpret_cast<const DataType*
>(orig_view_bytes.data());
212 Span<const DataType> orig_view = { orig_view_data, orig_view_bytes.size() / (
Int64)
sizeof(DataType) };
215 for (
Int32 z = 0, n = m_extent.v; z < n; ++z)
216 destination[z_index + z] = orig_view[zci + z];