Skip to content

Commit d452bc0

Browse files
committed
[c++/m] Add Section referringDataArrays(Block)
1 parent 4e4e4d4 commit d452bc0

File tree

5 files changed

+47
-3
lines changed

5 files changed

+47
-3
lines changed

+nix/Section.m

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -155,9 +155,8 @@
155155
% Referring entity methods
156156
% ----------------
157157

158-
function das = referring_data_arrays(obj)
159-
das = nix.Utils.fetchObjList('Section::referringDataArrays', ...
160-
obj.nix_handle, @nix.DataArray);
158+
function ret = referring_data_arrays(obj, varargin)
159+
ret = obj.referring_util(@nix.DataArray, 'DataArrays', varargin{:});
161160
end
162161

163162
function ret = referring_tags(obj, varargin)

nix_mx.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -359,6 +359,7 @@ void mexFunction(int nlhs,
359359
methods->add("Section::referringBlockSources", nixsection::referringBlockSources);
360360
methods->add("Section::referringBlockTags", nixsection::referringBlockTags);
361361
methods->add("Section::referringBlockMultiTags", nixsection::referringBlockMultiTags);
362+
methods->add("Section::referringBlockDataArrays", nixsection::referringBlockDataArrays);
362363

363364
classdef<nix::Feature>("Feature", methods)
364365
.desc(&nixfeature::describe)

src/nixsection.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,4 +99,10 @@ namespace nixsection {
9999
output.set(0, currSec.referringMultiTags(currBlock));
100100
}
101101

102+
void referringBlockDataArrays(const extractor &input, infusor &output) {
103+
nix::Section currSec = input.entity<nix::Section>(1);
104+
nix::Block currBlock = input.entity<nix::Block>(2);
105+
output.set(0, currSec.referringDataArrays(currBlock));
106+
}
107+
102108
} // namespace nixsection

src/nixsection.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,8 @@ namespace nixsection {
2727

2828
void referringBlockMultiTags(const extractor &input, infusor &output);
2929

30+
void referringBlockDataArrays(const extractor &input, infusor &output);
31+
3032
} // namespace nixsection
3133

3234
#endif

tests/TestSection.m

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
funcs{end+1} = @test_link;
2929
funcs{end+1} = @test_inherited_properties;
3030
funcs{end+1} = @test_referring_data_arrays;
31+
funcs{end+1} = @test_referring_block_data_arrays;
3132
funcs{end+1} = @test_referring_tags;
3233
funcs{end+1} = @test_referring_block_tags;
3334
funcs{end+1} = @test_referring_multi_tags;
@@ -351,6 +352,41 @@
351352
assert(isempty(s.referring_data_arrays));
352353
end
353354

355+
%% Test: referring block data arrays
356+
function [] = test_referring_block_data_arrays( varargin )
357+
err = 'Provide either empty arguments or a single Block entity';
358+
testName = 'testDataArray1';
359+
360+
f = nix.File(fullfile(pwd, 'tests', 'testRW.h5'), nix.FileMode.Overwrite);
361+
b1 = f.create_block('testBlock1', 'nixBlock');
362+
d1 = b1.create_data_array(testName, 'nixDataArray', nix.DataType.Double, [1 2]);
363+
b2 = f.create_block('testBlock2', 'nixBlock');
364+
d2 = b2.create_data_array('testDataArray2', 'nixDataArray', nix.DataType.Double, [1 2]);
365+
s = f.create_section('testSection', 'nixSection');
366+
367+
d1.set_metadata(s);
368+
d2.set_metadata(s);
369+
370+
% test multiple arguments fail
371+
try
372+
s.referring_data_arrays('a', 'b');
373+
catch ME
374+
assert(strcmp(ME.message, err));
375+
end
376+
377+
% test non block entity argument fail
378+
try
379+
s.referring_data_arrays(s);
380+
catch ME
381+
assert(strcmp(ME.message, err));
382+
end
383+
384+
% test return only tags from block 1
385+
testDataArray = s.referring_data_arrays(b1);
386+
assert(size(testDataArray, 2) == 1);
387+
assert(strcmp(testDataArray{1}.name, testName));
388+
end
389+
354390
%% Test: referring tags
355391
function [] = test_referring_tags( varargin )
356392
f = nix.File(fullfile(pwd, 'tests', 'testRW.h5'), nix.FileMode.Overwrite);

0 commit comments

Comments
 (0)