Skip to content

Commit 7d0c840

Browse files
committed
[c++/m] Add DataArray getSourceByIndex function
1 parent aa2378b commit 7d0c840

File tree

4 files changed

+27
-0
lines changed

4 files changed

+27
-0
lines changed

nix_mx.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -246,6 +246,7 @@ void mexFunction(int nlhs,
246246
methods->add("DataArray::setPolynomCoefficients", nixdataarray::polynomCoefficients);
247247
methods->add("DataArray::dataType", nixdataarray::dataType);
248248
methods->add("DataArray::setDataExtent", nixdataarray::setDataExtent);
249+
methods->add("DataArray::openSourceIdx", nixdataarray::openSourceIdx);
249250

250251
classdef<nix::Source>("Source", methods)
251252
.desc(&nixsource::describe)

src/nixdataarray.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,4 +136,10 @@ namespace nixdataarray {
136136
da.dataExtent(size);
137137
}
138138

139+
void openSourceIdx(const extractor &input, infusor &output) {
140+
nix::DataArray currObj = input.entity<nix::DataArray>(1);
141+
nix::ndsize_t idx = (nix::ndsize_t)input.num<double>(2);
142+
output.set(0, currObj.getSource(idx));
143+
}
144+
139145
} // namespace nixdataarray

src/nixdataarray.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ namespace nixdataarray {
4141

4242
void setDataExtent(const extractor &input, infusor &output);
4343

44+
void openSourceIdx(const extractor &input, infusor &output);
45+
4446
} // namespace nixdataarray
4547

4648
#endif

tests/TestDataArray.m

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
funcs{end+1} = @test_add_source;
2424
funcs{end+1} = @test_add_sources;
2525
funcs{end+1} = @test_open_source;
26+
funcs{end+1} = @test_open_source_idx;
2627
funcs{end+1} = @test_remove_source;
2728
funcs{end+1} = @test_has_source;
2829
funcs{end+1} = @test_source_count;
@@ -368,6 +369,23 @@
368369
assert(isempty(d.open_source('I do not exist')));
369370
end
370371

372+
function [] = test_open_source_idx( varargin )
373+
%% Test Open Source by index
374+
f = nix.File(fullfile(pwd, 'tests', 'testRW.h5'), nix.FileMode.Overwrite);
375+
b = f.create_block('testBlock', 'nixBlock');
376+
d = b.create_data_array('testDataArray', 'nixDataArray', nix.DataType.Double, [2 9]);
377+
s1 = b.create_source('testSource1', 'nixSource');
378+
s2 = b.create_source('testSource2', 'nixSource');
379+
s3 = b.create_source('testSource3', 'nixSource');
380+
d.add_source(s1);
381+
d.add_source(s2);
382+
d.add_source(s3);
383+
384+
assert(strcmp(f.blocks{1}.dataArrays{1}.open_source_idx(0).name, s1.name));
385+
assert(strcmp(f.blocks{1}.dataArrays{1}.open_source_idx(1).name, s2.name));
386+
assert(strcmp(f.blocks{1}.dataArrays{1}.open_source_idx(2).name, s3.name));
387+
end
388+
371389
%% Test: Remove sources by entity and id
372390
function [] = test_remove_source ( varargin )
373391
f = nix.File(fullfile(pwd, 'tests', 'testRW.h5'), nix.FileMode.Overwrite);

0 commit comments

Comments
 (0)