Skip to content

Commit 1741ba7

Browse files
authored
Merge pull request #137 from mpsonntag/createMulti
Add multiple entities LGTM
2 parents 1d15be8 + affefd6 commit 1741ba7

19 files changed

+478
-0
lines changed

+nix/Group.m

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,11 @@
4949
'nix.DataArray', 'Group::addDataArray');
5050
end;
5151

52+
function [] = add_data_arrays(obj, add_cell_array)
53+
nix.Utils.add_entity_array(obj, add_cell_array, ...
54+
'nix.DataArray', strcat(obj.alias, '::addDataArrays'));
55+
end
56+
5257
function delCheck = remove_data_array(obj, del)
5358
delCheck = nix.Utils.delete_entity(obj, del, ...
5459
'nix.DataArray', 'Group::removeDataArray');
@@ -63,6 +68,11 @@
6368
'nix.Tag', 'Group::addTag');
6469
end;
6570

71+
function [] = add_tags(obj, add_cell_array)
72+
nix.Utils.add_entity_array(obj, add_cell_array, ...
73+
'nix.Tag', strcat(obj.alias, '::addTags'));
74+
end
75+
6676
function hasTag = has_tag(obj, id_or_name)
6777
hasTag = nix_mx('Group::hasTag', obj.nix_handle, id_or_name);
6878
end;
@@ -90,6 +100,11 @@
90100
'nix.MultiTag', 'Group::addMultiTag');
91101
end;
92102

103+
function [] = add_multi_tags(obj, add_cell_array)
104+
nix.Utils.add_entity_array(obj, add_cell_array, ...
105+
'nix.MultiTag', strcat(obj.alias, '::addMultiTags'));
106+
end
107+
93108
function hasMTag = has_multi_tag(obj, id_or_name)
94109
hasMTag = nix_mx('Group::hasMultiTag', ...
95110
obj.nix_handle, id_or_name);

+nix/MultiTag.m

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@
3737
'nix.DataArray', 'MultiTag::addReference');
3838
end;
3939

40+
function [] = add_references(obj, add_cell_array)
41+
nix.Utils.add_entity_array(obj, add_cell_array, ...
42+
'nix.DataArray', strcat(obj.alias, '::addReferences'));
43+
end
44+
4045
function hasRef = has_reference(obj, id_or_name)
4146
hasRef = nix_mx('MultiTag::hasReference', ...
4247
obj.nix_handle, id_or_name);

+nix/SourcesMixIn.m

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@
3838
'nix.Source', strcat(obj.alias, '::addSource'));
3939
end
4040

41+
function [] = add_sources(obj, add_cell_array)
42+
nix.Utils.add_entity_array(obj, add_cell_array, ...
43+
'nix.Source', strcat(obj.alias, '::addSources'));
44+
end
45+
4146
function delCheck = remove_source(obj, del)
4247
delCheck = nix.Utils.delete_entity(obj, del, ...
4348
'nix.Source', strcat(obj.alias, '::removeSource'));
@@ -48,6 +53,7 @@
4853
strcat(obj.alias, '::openSource'), id_or_name, ...
4954
@nix.Source);
5055
end
56+
5157
end
5258

5359
end

+nix/Tag.m

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,11 @@
3939
'nix.DataArray', 'Tag::addReference');
4040
end;
4141

42+
function [] = add_references(obj, add_cell_array)
43+
nix.Utils.add_entity_array(obj, add_cell_array, ...
44+
'nix.DataArray', strcat(obj.alias, '::addReferences'));
45+
end
46+
4247
function hasRef = has_reference(obj, id_or_name)
4348
hasRef = nix_mx('Tag::hasReference', obj.nix_handle, id_or_name);
4449
end;

+nix/Utils.m

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,20 @@
3535
nix_mx(mxMethod, obj.nix_handle, addID);
3636
end;
3737

38+
function [] = add_entity_array(obj, add_cell_array, nixEntity, mxMethod)
39+
if(~iscell(add_cell_array))
40+
error('Expected cell array');
41+
end
42+
handle_array = cell(1, length(add_cell_array));
43+
for i = 1:length(add_cell_array)
44+
if (~strcmpi(class(add_cell_array{i}), nixEntity))
45+
error(sprintf('Element #%s is not a %s.', num2str(i), nixEntity));
46+
end
47+
handle_array{i} = add_cell_array{i}.nix_handle;
48+
end
49+
nix_mx(mxMethod, obj.nix_handle, handle_array);
50+
end
51+
3852
% Function can be used for both nix delete and remove methods.
3953
% The first actually removes the entity, the latter
4054
% removes only the reference to the entity.

nix_mx.cc

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,9 +188,13 @@ void mexFunction(int nlhs,
188188
.reg("tagCount", GETTER(nix::ndsize_t, nix::Group, tagCount))
189189
.reg("multiTagCount", GETTER(nix::ndsize_t, nix::Group, multiTagCount));
190190
methods->add("Group::addDataArray", nixgroup::addDataArray);
191+
methods->add("Group::addDataArrays", nixgroup::addDataArrays);
191192
methods->add("Group::addSource", nixgroup::addSource);
193+
methods->add("Group::addSources", nixgroup::addSources);
192194
methods->add("Group::addTag", nixgroup::addTag);
195+
methods->add("Group::addTags", nixgroup::addTags);
193196
methods->add("Group::addMultiTag", nixgroup::addMultiTag);
197+
methods->add("Group::addMultiTags", nixgroup::addMultiTags);
194198

195199
classdef<nix::DataArray>("DataArray", methods)
196200
.desc(&nixdataarray::describe)
@@ -218,6 +222,7 @@ void mexFunction(int nlhs,
218222
methods->add("DataArray::readAll", nixdataarray::readAll);
219223
methods->add("DataArray::writeAll", nixdataarray::writeAll);
220224
methods->add("DataArray::addSource", nixdataarray::addSource);
225+
methods->add("DataArray::addSources", nixdataarray::addSources);
221226
// REMOVER for DataArray.removeSource leads to an error, therefore use method->add for now
222227
methods->add("DataArray::removeSource", nixdataarray::removeSource);
223228
methods->add("DataArray::openSource", nixdataarray::getSource);
@@ -271,7 +276,9 @@ void mexFunction(int nlhs,
271276
methods->add("Tag::retrieveData", nixtag::retrieveData);
272277
methods->add("Tag::featureRetrieveData", nixtag::retrieveFeatureData);
273278
methods->add("Tag::addReference", nixtag::addReference);
279+
methods->add("Tag::addReferences", nixtag::addReferences);
274280
methods->add("Tag::addSource", nixtag::addSource);
281+
methods->add("Tag::addSources", nixtag::addSources);
275282
methods->add("Tag::createFeature", nixtag::createFeature);
276283

277284
classdef<nix::MultiTag>("MultiTag", methods)
@@ -307,7 +314,9 @@ void mexFunction(int nlhs,
307314
methods->add("MultiTag::retrieveData", nixmultitag::retrieveData);
308315
methods->add("MultiTag::featureRetrieveData", nixmultitag::retrieveFeatureData);
309316
methods->add("MultiTag::addReference", nixmultitag::addReference);
317+
methods->add("MultiTag::addReferences", nixmultitag::addReferences);
310318
methods->add("MultiTag::addSource", nixmultitag::addSource);
319+
methods->add("MultiTag::addSources", nixmultitag::addSources);
311320
methods->add("MultiTag::createFeature", nixmultitag::createFeature);
312321
methods->add("MultiTag::addPositions", nixmultitag::addPositions);
313322

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);

src/nixgroup.cc

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,19 +34,43 @@ namespace nixgroup {
3434
currObj.addDataArray(input.str(2));
3535
}
3636

37+
void addDataArrays(const extractor &input, infusor &output) {
38+
nix::Group currObj = input.entity<nix::Group>(1);
39+
std::vector<nix::DataArray> curr = input.entity_vec<nix::DataArray>(2);
40+
currObj.dataArrays(curr);
41+
}
42+
3743
void addSource(const extractor &input, infusor & output) {
3844
nix::Group currObj = input.entity<nix::Group>(1);
3945
currObj.addSource(input.str(2));
4046
}
4147

48+
void addSources(const extractor &input, infusor &output) {
49+
nix::Group currObj = input.entity<nix::Group>(1);
50+
std::vector<nix::Source> curr = input.entity_vec<nix::Source>(2);
51+
currObj.sources(curr);
52+
}
53+
4254
void addTag(const extractor &input, infusor &output) {
4355
nix::Group currObj = input.entity<nix::Group>(1);
4456
currObj.addTag(input.str(2));
4557
}
4658

59+
void addTags(const extractor &input, infusor &output) {
60+
nix::Group currObj = input.entity<nix::Group>(1);
61+
std::vector<nix::Tag> curr = input.entity_vec<nix::Tag>(2);
62+
currObj.tags(curr);
63+
}
64+
4765
void addMultiTag(const extractor &input, infusor &output) {
4866
nix::Group currObj = input.entity<nix::Group>(1);
4967
currObj.addMultiTag(input.str(2));
5068
}
5169

70+
void addMultiTags(const extractor &input, infusor &output) {
71+
nix::Group currObj = input.entity<nix::Group>(1);
72+
std::vector<nix::MultiTag> curr = input.entity_vec<nix::MultiTag>(2);
73+
currObj.multiTags(curr);
74+
}
75+
5276
} // namespace nixgroup

src/nixgroup.h

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,12 +17,20 @@ namespace nixgroup {
1717

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

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

24+
void addSources(const extractor &input, infusor & output);
25+
2226
void addTag(const extractor &input, infusor &output);
2327

28+
void addTags(const extractor &input, infusor &output);
29+
2430
void addMultiTag(const extractor &input, infusor &output);
2531

32+
void addMultiTags(const extractor &input, infusor &output);
33+
2634
} // namespace nixgroup
2735

2836
#endif

0 commit comments

Comments
 (0)