Skip to content

Commit 9d9ac38

Browse files
committed
[c++/m] Add Section referringTags(Block)
1 parent c17760d commit 9d9ac38

File tree

5 files changed

+50
-5
lines changed

5 files changed

+50
-5
lines changed

+nix/Section.m

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -160,9 +160,8 @@
160160
obj.nix_handle, @nix.DataArray);
161161
end
162162

163-
function ret = referring_tags(obj)
164-
ret = nix.Utils.fetchObjList('Section::referringTags', ...
165-
obj.nix_handle, @nix.Tag);
163+
function ret = referring_tags(obj, varargin)
164+
ret = obj.referring_util(@nix.Tag, 'Tags', varargin{:});
166165
end
167166

168167
function ret = referring_multi_tags(obj)

nix_mx.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,7 @@ void mexFunction(int nlhs,
357357
methods->add("Section::createProperty", nixsection::createProperty);
358358
methods->add("Section::createPropertyWithValue", nixsection::createPropertyWithValue);
359359
methods->add("Section::referringBlockSources", nixsection::referringBlockSources);
360+
methods->add("Section::referringBlockTags", nixsection::referringBlockTags);
360361

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

src/nixsection.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,4 +87,10 @@ namespace nixsection {
8787
output.set(0, currSec.referringSources(currBlock));
8888
}
8989

90+
void referringBlockTags(const extractor &input, infusor &output) {
91+
nix::Section currSec = input.entity<nix::Section>(1);
92+
nix::Block currBlock = input.entity<nix::Block>(2);
93+
output.set(0, currSec.referringTags(currBlock));
94+
}
95+
9096
} // namespace nixsection

src/nixsection.h

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

2424
void referringBlockSources(const extractor &input, infusor &output);
2525

26+
void referringBlockTags(const extractor &input, infusor &output);
27+
2628
} // namespace nixsection
2729

2830
#endif

tests/TestSection.m

Lines changed: 39 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
funcs{end+1} = @test_inherited_properties;
3030
funcs{end+1} = @test_referring_data_arrays;
3131
funcs{end+1} = @test_referring_tags;
32+
funcs{end+1} = @test_referring_block_tags;
3233
funcs{end+1} = @test_referring_multi_tags;
3334
funcs{end+1} = @test_referring_sources;
3435
funcs{end+1} = @test_referring_block_sources;
@@ -350,7 +351,7 @@
350351
end
351352

352353
%% Test: referring tags
353-
function [] = test_referring_multi_tags( varargin )
354+
function [] = test_referring_tags( varargin )
354355
f = nix.File(fullfile(pwd, 'tests', 'testRW.h5'), nix.FileMode.Overwrite);
355356
b1 = f.create_block('testBlock1', 'nixBlock');
356357
t1 = b1.create_tag('testTag1', 'nixTag', [1, 2]);
@@ -371,8 +372,44 @@
371372
assert(isempty(s.referring_tags));
372373
end
373374

375+
%% Test: referring block tags
376+
function [] = test_referring_block_tags( varargin )
377+
err = 'Provide either empty arguments or a single Block entity';
378+
testName = 'testTag1';
379+
380+
f = nix.File(fullfile(pwd, 'tests', 'testRW.h5'), nix.FileMode.Overwrite);
381+
b1 = f.create_block('testBlock1', 'nixBlock');
382+
t1 = b1.create_tag(testName, 'nixTag', [1, 2]);
383+
b2 = f.create_block('testBlock2', 'nixBlock');
384+
t2 = b2.create_tag('testTag2', 'nixTag', [3, 4]);
385+
s = f.create_section('testSection', 'nixSection');
386+
387+
t1.set_metadata(s);
388+
t2.set_metadata(s);
389+
390+
% test multiple arguments fail
391+
try
392+
s.referring_tags('a', 'b');
393+
catch ME
394+
assert(strcmp(ME.message, err));
395+
end
396+
397+
% test non block entity argument fail
398+
try
399+
s.referring_tags(s);
400+
catch ME
401+
assert(strcmp(ME.message, err));
402+
end
403+
404+
% test return only tags from block 1
405+
testTag = s.referring_tags(b1);
406+
assert(size(testTag, 2) == 1);
407+
assert(strcmp(testTag{1}.name, testName));
408+
end
409+
410+
374411
%% Test: referring multi tags
375-
function [] = test_referring_tags( varargin )
412+
function [] = test_referring_multi_tags( varargin )
376413
f = nix.File(fullfile(pwd, 'tests', 'testRW.h5'), nix.FileMode.Overwrite);
377414
b1 = f.create_block('testBlock1', 'nixBlock');
378415
d = b1.create_data_array('testDataArray1', 'nixDataArray', nix.DataType.Double, [1 2]);

0 commit comments

Comments
 (0)