Skip to content

Commit c7ebdc3

Browse files
authored
Merge pull request #145 from mpsonntag/getByIndex
Support get NIX entity by index
2 parents 72ef882 + c651861 commit c7ebdc3

34 files changed

+688
-4
lines changed

+nix/Block.m

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,11 @@
5050
'Block::getGroup', id_or_name, @nix.Group);
5151
end;
5252

53+
function retObj = open_group_idx(obj, idx)
54+
retObj = nix.Utils.open_entity(obj, ...
55+
'Block::openGroupIdx', idx, @nix.Group);
56+
end
57+
5358
function delCheck = delete_group(obj, del)
5459
delCheck = nix.Utils.delete_entity(obj, ...
5560
del, 'nix.Group', 'Block::deleteGroup');
@@ -67,7 +72,12 @@
6772
retObj = nix.Utils.open_entity(obj, ...
6873
'Block::openDataArray', id_or_name, @nix.DataArray);
6974
end;
70-
75+
76+
function retObj = open_data_array_idx(obj, idx)
77+
retObj = nix.Utils.open_entity(obj, ...
78+
'Block::openDataArrayIdx', idx, @nix.DataArray);
79+
end
80+
7181
function da = create_data_array(obj, name, nixtype, datatype, shape)
7282
%-- Quick fix to enable alias range dimension with
7383
%-- 1D data arrays created with this function.
@@ -154,6 +164,11 @@
154164
'Block::openSource', id_or_name, @nix.Source);
155165
end;
156166

167+
function retObj = open_source_idx(obj, idx)
168+
retObj = nix.Utils.open_entity(obj, ...
169+
'Block::openSourceIdx', idx, @nix.Source);
170+
end
171+
157172
% -----------------
158173
% Tags methods
159174
% -----------------
@@ -170,7 +185,12 @@
170185
retObj = nix.Utils.open_entity(obj, ...
171186
'Block::openTag', id_or_name, @nix.Tag);
172187
end;
173-
188+
189+
function retObj = open_tag_idx(obj, idx)
190+
retObj = nix.Utils.open_entity(obj, ...
191+
'Block::openTagIdx', idx, @nix.Tag);
192+
end
193+
174194
function tag = create_tag(obj, name, type, position)
175195
th = nix_mx('Block::createTag', obj.nix_handle, ...
176196
name, type, position);
@@ -199,6 +219,11 @@
199219
'Block::openMultiTag', id_or_name, @nix.MultiTag);
200220
end;
201221

222+
function retObj = open_multi_tag_idx(obj, idx)
223+
retObj = nix.Utils.open_entity(obj, ...
224+
'Block::openMultiTagIdx', idx, @nix.MultiTag);
225+
end
226+
202227
%-- Creating a multitag requires an already existing data array
203228
function multitag = create_multi_tag(obj, name, type, add_data_array)
204229
if(strcmp(class(add_data_array), 'nix.DataArray'))

+nix/DataArray.m

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,21 @@
7373
dim = nix.RangeDimension(nix_mx(func_name, obj.nix_handle));
7474
end
7575

76+
function dim = open_dimension_idx(obj, idx)
77+
% Getting the dimension by index starts with 1
78+
% instead of 0 compared to all other index functions.
79+
func_name = strcat(obj.alias, '::openDimensionIdx');
80+
ret = nix_mx(func_name, obj.nix_handle, idx);
81+
switch(ret.dimension_type)
82+
case 'set'
83+
dim = nix.SetDimension(ret.handle);
84+
case 'sampled'
85+
dim = nix.SampledDimension(ret.handle);
86+
case 'range'
87+
dim = nix.RangeDimension(ret.handle);
88+
end;
89+
end
90+
7691
function delCheck = delete_dimensions(obj)
7792
func_name = strcat(obj.alias, '::deleteDimensions');
7893
delCheck = nix_mx(func_name, obj.nix_handle);

+nix/File.m

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,11 @@
6363
'File::openBlock', id_or_name, @nix.Block);
6464
end
6565

66+
function retObj = open_block_idx(obj, idx)
67+
retObj = nix.Utils.open_entity(obj, ...
68+
'File::openBlockIdx', idx, @nix.Block);
69+
end
70+
6671
function delCheck = delete_block(obj, del)
6772
delCheck = nix.Utils.delete_entity(obj, ...
6873
del, 'nix.Block', 'File::deleteBlock');
@@ -89,6 +94,11 @@
8994
'File::openSection', id_or_name, @nix.Section);
9095
end
9196

97+
function retObj = open_section_idx(obj, idx)
98+
retObj = nix.Utils.open_entity(obj, ...
99+
'File::openSectionIdx', idx, @nix.Section);
100+
end
101+
92102
function delCheck = delete_section(obj, del)
93103
delCheck = nix.Utils.delete_entity(obj, del, 'nix.Section', 'File::deleteSection');
94104
end;

+nix/Group.m

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,11 @@
4444
'Group::getDataArray', id_or_name, @nix.DataArray);
4545
end;
4646

47+
function retObj = open_data_array_idx(obj, idx)
48+
retObj = nix.Utils.open_entity(obj, ...
49+
'Group::openDataArrayIdx', idx, @nix.DataArray);
50+
end
51+
4752
function [] = add_data_array(obj, add_this)
4853
nix.Utils.add_entity(obj, add_this, ...
4954
'nix.DataArray', 'Group::addDataArray');
@@ -82,6 +87,11 @@
8287
'Group::getTag', id_or_name, @nix.Tag);
8388
end;
8489

90+
function retObj = open_tag_idx(obj, idx)
91+
retObj = nix.Utils.open_entity(obj, ...
92+
'Group::openTagIdx', idx, @nix.Tag);
93+
end
94+
8595
function delCheck = remove_tag(obj, del)
8696
delCheck = nix.Utils.delete_entity(obj, del, ...
8797
'nix.Tag', 'Group::removeTag');
@@ -115,6 +125,11 @@
115125
'Group::getMultiTag', id_or_name, @nix.MultiTag);
116126
end;
117127

128+
function retObj = open_multi_tag_idx(obj, idx)
129+
retObj = nix.Utils.open_entity(obj, ...
130+
'Group::openMultiTagIdx', idx, @nix.MultiTag);
131+
end
132+
118133
function delCheck = remove_multi_tag(obj, del)
119134
delCheck = nix.Utils.delete_entity(obj, del, ...
120135
'nix.MultiTag', 'Group::removeMultiTag');

+nix/MultiTag.m

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,12 @@
5656
retObj = nix.Utils.open_entity(obj, ...
5757
'MultiTag::openReferences', id_or_name, @nix.DataArray);
5858
end;
59-
59+
60+
function retObj = open_reference_idx(obj, idx)
61+
retObj = nix.Utils.open_entity(obj, ...
62+
'MultiTag::openReferenceIdx', idx, @nix.DataArray);
63+
end;
64+
6065
function data = retrieve_data(obj, pos_index, ref_index)
6166
% convert Matlab-like to C-like index
6267
assert(pos_index > 0, 'Position index must be positive');
@@ -101,6 +106,11 @@
101106
'MultiTag::openFeature', id_or_name, @nix.Feature);
102107
end;
103108

109+
function retObj = open_feature_idx(obj, idx)
110+
retObj = nix.Utils.open_entity(obj, ...
111+
'MultiTag::openFeatureIdx', idx, @nix.Feature);
112+
end;
113+
104114
function data = retrieve_feature_data(obj, pos_index, fea_index)
105115
% convert Matlab-like to C-like index
106116
assert(pos_index > 0, 'Position index must be positive');

+nix/Section.m

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,11 @@
8888
retObj = nix.Utils.open_entity(obj, ...
8989
'Section::openSection', id_or_name, @nix.Section);
9090
end;
91+
92+
function retObj = open_section_idx(obj, idx)
93+
retObj = nix.Utils.open_entity(obj, ...
94+
'Section::openSectionIdx', idx, @nix.Section);
95+
end;
9196

9297
function hs = has_section(obj, id_or_name)
9398
hs = nix_mx('Section::hasSection', obj.nix_handle, id_or_name);
@@ -134,6 +139,11 @@
134139
'Section::openProperty', id_or_name, @nix.Property);
135140
end;
136141

142+
function retObj = open_property_idx(obj, idx)
143+
retObj = nix.Utils.open_entity(obj, ...
144+
'Section::openPropertyIdx', idx, @nix.Property);
145+
end;
146+
137147
function props = get.allProperties(obj)
138148
props = nix_mx('Section::properties', obj.nix_handle);
139149
end;

+nix/Source.m

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@
4949
'Source::openSource', id_or_name, @nix.Source);
5050
end;
5151

52+
function retObj = open_source_idx(obj, idx)
53+
retObj = nix.Utils.open_entity(obj, ...
54+
'Source::openSourceIdx', idx, @nix.Source);
55+
end;
56+
5257
function retObj = parent_source(obj)
5358
retObj = nix.Utils.fetchObj('Source::parentSource', ...
5459
obj.nix_handle, @nix.Source);

+nix/SourcesMixIn.m

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@
5454
@nix.Source);
5555
end
5656

57+
function retObj = open_source_idx(obj, idx)
58+
retObj = nix.Utils.open_entity(obj, ...
59+
strcat(obj.alias, '::openSourceIdx'), idx, @nix.Source);
60+
end
61+
5762
end
5863

5964
end

+nix/Tag.m

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,11 @@
5858
'Tag::openReferenceDataArray', id_or_name, @nix.DataArray);
5959
end;
6060

61+
function retObj = open_reference_idx(obj, idx)
62+
retObj = nix.Utils.open_entity(obj, ...
63+
'Tag::openReferenceIdx', idx, @nix.DataArray);
64+
end;
65+
6166
function data = retrieve_data(obj, index)
6267
% convert Matlab-like to C-like index
6368
assert(index > 0, 'Subscript indices must be positive');
@@ -99,7 +104,12 @@
99104
retObj = nix.Utils.open_entity(obj, ...
100105
'Tag::openFeature', id_or_name, @nix.Feature);
101106
end;
102-
107+
108+
function retObj = open_feature_idx(obj, idx)
109+
retObj = nix.Utils.open_entity(obj, ...
110+
'Tag::openFeatureIdx', idx, @nix.Feature);
111+
end;
112+
103113
function data = retrieve_feature_data(obj, index)
104114
% convert Matlab-like to C-like index
105115
assert(index > 0, 'Subscript indices must be positive');

nix_mx.cc

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,8 @@ void mexFunction(int nlhs,
119119
.reg("isOpen", GETTER(bool, nix::File, isOpen));
120120
methods->add("File::fileMode", nixfile::fileMode);
121121
methods->add("File::validate", nixfile::validate);
122+
methods->add("File::openBlockIdx", nixfile::openBlockIdx);
123+
methods->add("File::openSectionIdx", nixfile::openSectionIdx);
122124

123125
classdef<nix::Block>("Block", methods)
124126
.desc(&nixblock::describe)
@@ -158,6 +160,11 @@ void mexFunction(int nlhs,
158160
methods->add("Block::createDataArray", nixblock::createDataArray);
159161
methods->add("Block::createMultiTag", nixblock::createMultiTag);
160162
methods->add("Block::createGroup", nixblock::createGroup);
163+
methods->add("Block::openGroupIdx", nixblock::openGroupIdx);
164+
methods->add("Block::openDataArrayIdx", nixblock::openDataArrayIdx);
165+
methods->add("Block::openTagIdx", nixblock::openTagIdx);
166+
methods->add("Block::openMultiTagIdx", nixblock::openMultiTagIdx);
167+
methods->add("Block::openSourceIdx", nixblock::openSourceIdx);
161168

162169
classdef<nix::Group>("Group", methods)
163170
.desc(&nixgroup::describe)
@@ -195,6 +202,10 @@ void mexFunction(int nlhs,
195202
methods->add("Group::addTags", nixgroup::addTags);
196203
methods->add("Group::addMultiTag", nixgroup::addMultiTag);
197204
methods->add("Group::addMultiTags", nixgroup::addMultiTags);
205+
methods->add("Group::openDataArrayIdx", nixgroup::openDataArrayIdx);
206+
methods->add("Group::openTagIdx", nixgroup::openTagIdx);
207+
methods->add("Group::openMultiTagIdx", nixgroup::openMultiTagIdx);
208+
methods->add("Group::openSourceIdx", nixgroup::openSourceIdx);
198209

199210
classdef<nix::DataArray>("DataArray", methods)
200211
.desc(&nixdataarray::describe)
@@ -235,6 +246,8 @@ void mexFunction(int nlhs,
235246
methods->add("DataArray::setPolynomCoefficients", nixdataarray::polynomCoefficients);
236247
methods->add("DataArray::dataType", nixdataarray::dataType);
237248
methods->add("DataArray::setDataExtent", nixdataarray::setDataExtent);
249+
methods->add("DataArray::openSourceIdx", nixdataarray::openSourceIdx);
250+
methods->add("DataArray::openDimensionIdx", nixdataarray::openDimensionIdx);
238251

239252
classdef<nix::Source>("Source", methods)
240253
.desc(&nixsource::describe)
@@ -254,6 +267,7 @@ void mexFunction(int nlhs,
254267
.reg("referringDataArrays", GETTER(std::vector<nix::DataArray>, nix::Source, referringDataArrays))
255268
.reg("referringTags", GETTER(std::vector<nix::Tag>, nix::Source, referringTags))
256269
.reg("referringMultiTags", GETTER(std::vector<nix::MultiTag>, nix::Source, referringMultiTags));
270+
methods->add("Source::openSourceIdx", nixsource::openSourceIdx);
257271

258272
classdef<nix::Tag>("Tag", methods)
259273
.desc(&nixtag::describe)
@@ -290,6 +304,9 @@ void mexFunction(int nlhs,
290304
methods->add("Tag::addSource", nixtag::addSource);
291305
methods->add("Tag::addSources", nixtag::addSources);
292306
methods->add("Tag::createFeature", nixtag::createFeature);
307+
methods->add("Tag::openReferenceIdx", nixtag::openReferenceIdx);
308+
methods->add("Tag::openFeatureIdx", nixtag::openFeatureIdx);
309+
methods->add("Tag::openSourceIdx", nixtag::openSourceIdx);
293310

294311
classdef<nix::MultiTag>("MultiTag", methods)
295312
.desc(&nixmultitag::describe)
@@ -329,6 +346,9 @@ void mexFunction(int nlhs,
329346
methods->add("MultiTag::addSources", nixmultitag::addSources);
330347
methods->add("MultiTag::createFeature", nixmultitag::createFeature);
331348
methods->add("MultiTag::addPositions", nixmultitag::addPositions);
349+
methods->add("MultiTag::openReferenceIdx", nixmultitag::openReferenceIdx);
350+
methods->add("MultiTag::openFeatureIdx", nixmultitag::openFeatureIdx);
351+
methods->add("MultiTag::openSourceIdx", nixmultitag::openSourceIdx);
332352

333353
classdef<nix::Section>("Section", methods)
334354
.desc(&nixsection::describe)
@@ -366,6 +386,8 @@ void mexFunction(int nlhs,
366386
methods->add("Section::referringBlockTags", nixsection::referringBlockTags);
367387
methods->add("Section::referringBlockMultiTags", nixsection::referringBlockMultiTags);
368388
methods->add("Section::referringBlockDataArrays", nixsection::referringBlockDataArrays);
389+
methods->add("Section::openSectionIdx", nixsection::openSectionIdx);
390+
methods->add("Section::openPropertyIdx", nixsection::openPropertyIdx);
369391

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

0 commit comments

Comments
 (0)