Skip to content

Commit fdcd1dd

Browse files
committed
[c++/matlab] Add DataArray multiple sources create
1 parent 4f720b6 commit fdcd1dd

File tree

4 files changed

+44
-0
lines changed

4 files changed

+44
-0
lines changed

nix_mx.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,7 @@ void mexFunction(int nlhs,
218218
methods->add("DataArray::readAll", nixdataarray::readAll);
219219
methods->add("DataArray::writeAll", nixdataarray::writeAll);
220220
methods->add("DataArray::addSource", nixdataarray::addSource);
221+
methods->add("DataArray::addSources", nixdataarray::addSources);
221222
// REMOVER for DataArray.removeSource leads to an error, therefore use method->add for now
222223
methods->add("DataArray::removeSource", nixdataarray::removeSource);
223224
methods->add("DataArray::openSource", nixdataarray::getSource);

src/nixdataarray.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,12 @@ namespace nixdataarray {
4040
currObj.addSource(input.str(2));
4141
}
4242

43+
void addSources(const extractor &input, infusor &output) {
44+
nix::DataArray currObj = input.entity<nix::DataArray>(1);
45+
std::vector<nix::Source> sv = input.entity_vec<nix::Source>(2);
46+
currObj.sources(sv);
47+
}
48+
4349
void removeSource(const extractor &input, infusor &output) {
4450
nix::DataArray currObj = input.entity<nix::DataArray>(1);
4551
output.set(0, currObj.removeSource(input.str(2)));

src/nixdataarray.h

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

1818
void addSource(const extractor &input, infusor &output);
1919

20+
void addSources(const extractor &input, infusor &output);
21+
2022
void removeSource(const extractor &input, infusor &output);
2123

2224
void hasSource(const extractor &input, infusor &output);

tests/TestDataArray.m

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
funcs{end+1} = @test_write_data_float;
2222
funcs{end+1} = @test_write_data_integer;
2323
funcs{end+1} = @test_add_source;
24+
funcs{end+1} = @test_add_sources;
2425
funcs{end+1} = @test_open_source;
2526
funcs{end+1} = @test_remove_source;
2627
funcs{end+1} = @test_has_source;
@@ -295,6 +296,40 @@
295296
assert(size(getDataArray.sources, 1) == 2);
296297
end
297298

299+
%% Test: Add sources by entity cell array
300+
function [] = test_add_sources ( varargin )
301+
testFile = fullfile(pwd, 'tests', 'testRW.h5');
302+
f = nix.File(testFile, nix.FileMode.Overwrite);
303+
b = f.create_block('testBlock', 'nixBlock');
304+
d = b.create_data_array('testDataArray', 'nixDataArray', nix.DataType.Double, [1 2]);
305+
tmp = b.create_source('testSource1', 'nixSource');
306+
tmp = b.create_source('testSource2', 'nixSource');
307+
tmp = b.create_source('testSource3', 'nixSource');
308+
309+
assert(isempty(d.sources));
310+
311+
try
312+
d.add_sources('hurra');
313+
catch ME
314+
assert(strcmp(ME.message, 'Expected cell array'));
315+
end;
316+
assert(isempty(d.sources));
317+
318+
try
319+
d.add_sources({12, 13});
320+
catch ME
321+
assert(~isempty(strfind(ME.message, 'not a nix.Source')));
322+
end;
323+
assert(isempty(d.sources));
324+
325+
d.add_sources(b.sources());
326+
assert(size(d.sources, 1) == 3);
327+
328+
clear d tmp b f;
329+
f = nix.File(testFile, nix.FileMode.ReadOnly);
330+
assert(size(f.blocks{1}.dataArrays{1}.sources, 1) == 3);
331+
end
332+
298333
%% Test: Open source by ID or name
299334
function [] = test_open_source( varargin )
300335
test_file = nix.File(fullfile(pwd, 'tests', 'testRW.h5'), nix.FileMode.Overwrite);

0 commit comments

Comments
 (0)