Skip to content

Commit 39a3f60

Browse files
start preparing sliced array access
1 parent 78e316c commit 39a3f60

File tree

3 files changed

+37
-3
lines changed

3 files changed

+37
-3
lines changed

src/DenseNDArray.hh

+8
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,14 @@ public:
157157
return rhs.m_data == m_data;
158158
}
159159

160+
// to assign blocks of data in an efficient way
161+
void copy_from(const DenseNDArray<T, dims>& src,
162+
const DenseNDArray<std::size_t, 1>& ind_src_start, const DenseNDArray<std::size_t, 1>& ind_src_stop,
163+
const DenseNDArray<std::size_t, 1>& ind_dest_start, const DenseNDArray<std::size_t, 1>& ind_dest_stop) {
164+
165+
166+
}
167+
160168
// template <std::size_t len>
161169
// bool operator==(const std::array<T, len>& rhs) const requires(dims == 1) {
162170
// if(len != m_data.size()) {

src/NDArrayOperations.hh

+1-1
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ namespace NDArrayOps {
165165

166166
return retval;
167167
}
168-
168+
169169
template<class T, std::size_t dims, template <class, std::size_t> class ArrayT>
170170
DenseNDArray<T, dims> min(const ArrayT<T, dims>& a, const ArrayT<T, dims>& b) {
171171

tests/internals/testArrayOps.cxx

+28-2
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
#include <iostream>
2+
#include "DenseNDArray.hh"
23
#include "NDArrayOperations.hh"
34

4-
int main(int argc, char* argv[]) {
5-
5+
int test_concatenation() {
6+
67
DenseNDArray<float, 2> darr_1({3, 3}, -1.0);
78
DenseNDArray<float, 2> darr_2({6, 3}, 1.0);
89

@@ -19,6 +20,31 @@ int main(int argc, char* argv[]) {
1920
for(auto& cur : darr_res_1.shape()) {
2021
std::cout << cur << std::endl;
2122
}
23+
24+
return 0;
25+
}
26+
27+
int test_slicing() {
28+
29+
DenseNDArray<float, 2> darr_1({30, 30}, -1.0);
30+
DenseNDArray<float, 2> darr_2({3, 3}, 1.0);
31+
32+
darr_1.copy_from(darr_2,
33+
{0, 0}, {2, 2}, // index range in src array
34+
{0, 0}, {2, 2}); // index range in destination array
35+
36+
std::cout << darr_1(0, 0) << std::endl;
37+
std::cout << darr_1(0, 1) << std::endl;
38+
std::cout << darr_1(1, 1) << std::endl;
39+
40+
return 0;
41+
}
42+
43+
int main(int argc, char* argv[]) {
44+
45+
// test_concatenation();
46+
47+
test_slicing();
2248

2349
std::cout << "done" << std::endl;
2450
}

0 commit comments

Comments
 (0)