Skip to content

Commit 03622d1

Browse files
committed
Merge pull request #52 from mpsonntag/dev
migrate to glue: MutiTag, DataArray, Section entities
2 parents 31dde14 + dba0f2c commit 03622d1

File tree

11 files changed

+116
-146
lines changed

11 files changed

+116
-146
lines changed

+nix/MultiTag.m

Lines changed: 30 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -79,9 +79,12 @@
7979
refList = nix_mx('MultiTag::listReferences', obj.nix_handle);
8080
end;
8181

82-
function dataArray = open_reference(obj, id_or_name)
83-
daHandle = nix_mx('MultiTag::openReferences', obj.nix_handle, id_or_name);
84-
dataArray = nix.DataArray(daHandle);
82+
function retObj = open_reference(obj, id_or_name)
83+
handle = nix_mx('MultiTag::openReferences', obj.nix_handle, id_or_name);
84+
retObj = {};
85+
if handle ~= 0
86+
retObj = nix.DataArray(handle);
87+
end;
8588
end;
8689

8790
function da = get.references(obj)
@@ -109,9 +112,12 @@
109112
featureList = nix_mx('MultiTag::listFeatures', obj.nix_handle);
110113
end;
111114

112-
function feature = open_feature(obj, id_or_name)
113-
featureHandle = nix_mx('MultiTag::openFeatures', obj.nix_handle, id_or_name);
114-
feature = nix.Feature(featureHandle);
115+
function retObj = open_feature(obj, id_or_name)
116+
handle = nix_mx('MultiTag::openFeature', obj.nix_handle, id_or_name);
117+
retObj = {};
118+
if handle ~= 0
119+
retObj = nix.Feature(handle);
120+
end;
115121
end;
116122

117123
function feat = get.features(obj)
@@ -139,9 +145,12 @@
139145
sourceList = nix_mx('MultiTag::listSources', obj.nix_handle);
140146
end;
141147

142-
function source = open_source(obj, id_or_name)
143-
sourceHandle = nix_mx('MultiTag::openSource', obj.nix_handle, id_or_name);
144-
source = nix.Source(sourceHandle);
148+
function retObj = open_source(obj, id_or_name)
149+
handle = nix_mx('MultiTag::openSource', obj.nix_handle, id_or_name);
150+
retObj = {};
151+
if handle ~= 0
152+
retObj = nix.Source(handle);
153+
end;
145154
end;
146155

147156
function sources = get.sources(obj)
@@ -155,25 +164,27 @@
155164

156165
function hasPositions = has_positions(obj)
157166
getHasPositions = nix_mx('MultiTag::hasPositions', obj.nix_handle);
158-
hasPositions = getHasPositions.hasPositions;
167+
hasPositions = logical(getHasPositions.hasPositions);
159168
end;
160169

161-
function positions = open_positions(obj)
162-
if obj.has_positions
163-
positionsHandle = nix_mx('MultiTag::openPositions', obj.nix_handle);
164-
positions = nix.DataArray(positionsHandle);
165-
else
166-
positions = 'No positions available';
170+
function retObj = open_positions(obj)
171+
handle = nix_mx('MultiTag::openPositions', obj.nix_handle);
172+
retObj = {};
173+
if handle ~= 0
174+
retObj = nix.DataArray(handle);
167175
end;
168176
end;
169177

170178
% ------------------
171179
% Extents methods
172180
% ------------------
173181

174-
function extents = open_extent(obj)
175-
extentsHandle = nix_mx('MultiTag::openExtents', obj.nix_handle);
176-
extents = nix.DataArray(extentsHandle);
182+
function retObj = open_extents(obj)
183+
handle = nix_mx('MultiTag::openExtents', obj.nix_handle);
184+
retObj = {};
185+
if handle ~= 0
186+
retObj = nix.DataArray(handle);
187+
end;
177188
end;
178189

179190
% ------------------

+nix/Section.m

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,9 +82,12 @@
8282
'Section::sections', obj.nix_handle, obj.sectionsCache, @nix.Section);
8383
end
8484

85-
function section = open_section(obj, id_or_name)
86-
sh = nix_mx('Section::openSection', obj.nix_handle, id_or_name);
87-
section = nix.Section(sh);
85+
function retObj = open_section(obj, id_or_name)
86+
handle = nix_mx('Section::openSection', obj.nix_handle, id_or_name);
87+
retObj = {};
88+
if handle ~= 0
89+
retObj = nix.Section(handle);
90+
end;
8891
end;
8992

9093
function hs = has_section(obj, id_or_name)

nix_mx.cc

Lines changed: 19 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,6 @@ const std::vector<fendpoint> funcs = {
8080
{ "DataArray::readAll", nixdataarray::read_all },
8181
{ "DataArray::hasMetadataSection", nixdataarray::has_metadata_section },
8282
{ "DataArray::openMetadataSection", nixdataarray::open_metadata_section },
83-
{ "DataArray::sources", nixdataarray::sources },
8483

8584
// Tag
8685
{ "Tag::describe", nixtag::describe },
@@ -97,15 +96,7 @@ const std::vector<fendpoint> funcs = {
9796
{ "MultiTag::listReferences", nixmultitag::list_references_array },
9897
{ "MultiTag::listFeatures", nixmultitag::list_features },
9998
{ "MultiTag::listSources", nixmultitag::list_sources },
100-
{ "MultiTag::references", nixmultitag::references },
101-
{ "MultiTag::features", nixmultitag::features },
102-
{ "MultiTag::sources", nixmultitag::sources },
10399
{ "MultiTag::hasPositions", nixmultitag::has_positions },
104-
{ "MultiTag::openPositions", nixmultitag::open_positions },
105-
{ "MultiTag::openExtents", nixmultitag::open_extents },
106-
{ "MultiTag::openReferences", nixmultitag::open_references },
107-
{ "MultiTag::openFeature", nixmultitag::open_features },
108-
{ "MultiTag::openSource", nixmultitag::open_source },
109100
{ "MultiTag::hasMetadataSection", nixmultitag::has_metadata_section },
110101
{ "MultiTag::openMetadataSection", nixmultitag::open_metadata_section },
111102
{ "MultiTag::retrieveData", nixmultitag::retrieve_data },
@@ -124,12 +115,8 @@ const std::vector<fendpoint> funcs = {
124115

125116
// Section
126117
{ "Section::describe", nixsection::describe },
127-
{ "Section::link", nixsection::link },
128-
{ "Section::parent", nixsection::parent },
129118
{ "Section::hasSection", nixsection::has_section },
130-
{ "Section::openSection", nixsection::open_section },
131119
{ "Section::listSections", nixsection::list_sections },
132-
{ "Section::sections", nixsection::sections },
133120
{ "Section::hasProperty", nixsection::has_property },
134121
{ "Section::listProperties", nixsection::list_properties }
135122
};
@@ -192,6 +179,9 @@ void mexFunction(int nlhs,
192179
.reg("openTag", GETBYSTR(nix::Tag, nix::Block, getTag))
193180
.reg("openMultiTag", GETBYSTR(nix::MultiTag, nix::Block, getMultiTag));
194181

182+
classdef<nix::DataArray>("DataArray", methods)
183+
.reg("sources", static_cast<std::vector<nix::Source>(nix::base::EntityWithSources<nix::base::IDataArray>::*)(std::function<bool(const nix::Source &)>)const>(&nix::base::EntityWithSources<nix::base::IDataArray>::sources));
184+
195185
classdef<nix::Source>("Source", methods)
196186
.reg("sources", &nix::Source::sources)
197187
.reg("openSource", GETBYSTR(nix::Source, nix::Source, getSource));
@@ -204,6 +194,22 @@ void mexFunction(int nlhs,
204194
.reg("openFeature", GETBYSTR(nix::Feature, nix::Tag, getFeature))
205195
.reg("openSource", GETBYSTR(nix::Source, nix::Tag, getSource));
206196

197+
classdef<nix::MultiTag>("MultiTag", methods)
198+
.reg("references", GETTER(std::vector<nix::DataArray>, nix::MultiTag, references))
199+
.reg("features", &nix::MultiTag::features)
200+
.reg("sources", static_cast<std::vector<nix::Source>(nix::base::EntityWithSources<nix::base::IMultiTag>::*)(std::function<bool(const nix::Source &)>)const>(&nix::base::EntityWithSources<nix::base::IMultiTag>::sources))
201+
.reg("openPositions", GETCONTENT(nix::DataArray, nix::MultiTag, positions))
202+
.reg("openExtents", GETCONTENT(nix::DataArray, nix::MultiTag, extents))
203+
.reg("openReferences", GETBYSTR(nix::DataArray, nix::MultiTag, getReference))
204+
.reg("openFeature", GETBYSTR(nix::Feature, nix::MultiTag, getFeature))
205+
.reg("openSource", GETBYSTR(nix::Source, nix::MultiTag, getSource));
206+
207+
classdef<nix::Section>("Section", methods)
208+
.reg("sections", &nix::Section::sections)
209+
.reg("openSection", GETBYSTR(nix::Section, nix::Section, getSection))
210+
.reg("link", GETCONTENT(nix::Section, nix::Section, link))
211+
.reg("parent", GETCONTENT(nix::Section, nix::Section, parent));
212+
207213
mexAtExit(on_exit);
208214
});
209215

src/nixdataarray.cc

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -75,12 +75,4 @@ namespace nixdataarray {
7575
output.set(0, nixgen::get_handle_or_none(currObj.metadata()));
7676
}
7777

78-
void sources(const extractor &input, infusor &output)
79-
{
80-
nix::DataArray currObj = input.entity<nix::DataArray>(1);
81-
std::vector<nix::Source> arr = currObj.sources();
82-
83-
output.set(0, arr);
84-
}
85-
8678
} // namespace nixdataarray

src/nixdataarray.h

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

1414
void open_metadata_section(const extractor &input, infusor &output);
1515

16-
void sources(const extractor &input, infusor &output);
17-
1816
} // namespace nixdataarray
1917

2018
#endif

src/nixmultitag.cc

Lines changed: 0 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -25,24 +25,6 @@ namespace nixmultitag {
2525
output.set(0, sb.array());
2626
}
2727

28-
void open_references(const extractor &input, infusor &output)
29-
{
30-
nix::MultiTag currObj = input.entity<nix::MultiTag>(1);
31-
output.set(0, nixgen::open_data_array(currObj.getReference(input.str(2))));
32-
}
33-
34-
void open_positions(const extractor &input, infusor &output)
35-
{
36-
nix::MultiTag currObj = input.entity<nix::MultiTag>(1);
37-
output.set(0, nixgen::open_data_array(currObj.positions()));
38-
}
39-
40-
void open_extents(const extractor &input, infusor &output)
41-
{
42-
nix::MultiTag currObj = input.entity<nix::MultiTag>(1);
43-
output.set(0, nixgen::open_data_array(currObj.extents()));
44-
}
45-
4628
void list_references_array(const extractor &input, infusor &output)
4729
{
4830
nix::MultiTag currObj = input.entity<nix::MultiTag>(1);
@@ -67,18 +49,6 @@ namespace nixmultitag {
6749
output.set(0, nixgen::list_sources(currObj.sources()));
6850
}
6951

70-
void open_source(const extractor &input, infusor &output)
71-
{
72-
nix::MultiTag currObj = input.entity<nix::MultiTag>(1);
73-
output.set(0, nixgen::open_source(currObj.getSource(input.str(2))));
74-
}
75-
76-
void open_features(const extractor &input, infusor &output)
77-
{
78-
nix::MultiTag currObj = input.entity<nix::MultiTag>(1);
79-
output.set(0, nixgen::open_feature(currObj.getFeature(input.str(2))));
80-
}
81-
8252
void has_metadata_section(const extractor &input, infusor &output)
8353
{
8454
nix::MultiTag currObj = input.entity<nix::MultiTag>(1);
@@ -91,28 +61,6 @@ namespace nixmultitag {
9161
output.set(0, nixgen::get_handle_or_none(currObj.metadata()));
9262
}
9363

94-
void references(const extractor &input, infusor &output)
95-
{
96-
nix::MultiTag currObj = input.entity<nix::MultiTag>(1);
97-
std::vector<nix::DataArray> arr = currObj.references();
98-
output.set(0, arr);
99-
}
100-
101-
void features(const extractor &input, infusor &output)
102-
{
103-
nix::MultiTag currObj = input.entity<nix::MultiTag>(1);
104-
std::vector<nix::Feature> arr = currObj.features();
105-
output.set(0, arr);
106-
}
107-
108-
void sources(const extractor &input, infusor &output)
109-
{
110-
nix::MultiTag currObj = input.entity<nix::MultiTag>(1);
111-
std::vector<nix::Source> arr = currObj.sources();
112-
113-
output.set(0, arr);
114-
}
115-
11664
void retrieve_data(const extractor &input, infusor &output) {
11765
nix::MultiTag currObj = input.entity<nix::MultiTag>(1);
11866
double p_index = input.num<double>(2);

src/nixmultitag.h

Lines changed: 0 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -7,12 +7,6 @@ namespace nixmultitag {
77

88
void describe(const extractor &input, infusor &output);
99

10-
void open_references(const extractor &input, infusor &output);
11-
12-
void open_positions(const extractor &input, infusor &output);
13-
14-
void open_extents(const extractor &input, infusor &output);
15-
1610
void list_references_array(const extractor &input, infusor &output);
1711

1812
void has_positions(const extractor &input, infusor &output);
@@ -21,20 +15,10 @@ namespace nixmultitag {
2115

2216
void list_sources(const extractor &input, infusor &output);
2317

24-
void open_source(const extractor &input, infusor &output);
25-
26-
void open_features(const extractor &input, infusor &output);
27-
2818
void has_metadata_section(const extractor &input, infusor &output);
2919

3020
void open_metadata_section(const extractor &input, infusor &output);
3121

32-
void references(const extractor &input, infusor &output);
33-
34-
void features(const extractor &input, infusor &output);
35-
36-
void sources(const extractor &input, infusor &output);
37-
3822
void retrieve_data(const extractor &input, infusor &output);
3923

4024
void retrieve_feature_data(const extractor &input, infusor &output);

src/nixsection.cc

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -29,32 +29,12 @@ void describe(const extractor &input, infusor &output)
2929
output.set(0, sb.array());
3030
}
3131

32-
void link(const extractor &input, infusor &output)
33-
{
34-
nix::Section section = input.entity<nix::Section>(1);
35-
output.set(0, nixgen::get_handle_or_none(section.link()));
36-
}
37-
38-
void parent(const extractor &input, infusor &output)
39-
{
40-
nix::Section section = input.entity<nix::Section>(1);
41-
output.set(0, nixgen::get_handle_or_none(section.parent()));
42-
}
43-
4432
void has_section(const extractor &input, infusor &output)
4533
{
4634
nix::Section section = input.entity<nix::Section>(1);
4735
output.set(0, nixgen::has_entity(section.hasSection(input.str(2)), { "hasSection" }));
4836
}
4937

50-
void open_section(const extractor &input, infusor &output)
51-
{
52-
nix::Section section = input.entity<nix::Section>(1);
53-
nix::Section sec = section.getSection(input.str(2));
54-
handle h = handle(sec);
55-
output.set(0, h);
56-
}
57-
5838
void list_sections(const extractor &input, infusor &output)
5939
{
6040
nix::Section section = input.entity<nix::Section>(1);
@@ -73,13 +53,6 @@ void list_sections(const extractor &input, infusor &output)
7353
output.set(0, sb.array());
7454
}
7555

76-
void sections(const extractor &input, infusor &output)
77-
{
78-
nix::Section section = input.entity<nix::Section>(1);
79-
std::vector<nix::Section> sections = section.sections();
80-
output.set(0, sections);
81-
}
82-
8356
void has_property(const extractor &input, infusor &output)
8457
{
8558
nix::Section section = input.entity<nix::Section>(1);

src/nixsection.h

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,12 @@ namespace nixsection {
77

88
void describe(const extractor &input, infusor &output);
99

10-
void link(const extractor &input, infusor &output);
11-
12-
void parent(const extractor &input, infusor &output);
13-
1410
void has_section(const extractor &input, infusor &output);
1511

1612
void open_section(const extractor &input, infusor &output);
1713

1814
void list_sections(const extractor &input, infusor &output);
1915

20-
void sections(const extractor &input, infusor &output);
21-
2216
void has_property(const extractor &input, infusor &output);
2317

2418
void list_properties(const extractor &input, infusor &output);

0 commit comments

Comments
 (0)