Skip to content

Commit ec039d3

Browse files
authored
Merge pull request #146 from mpsonntag/compare
Add 'compare(NamedEntity)' function
2 parents c7ebdc3 + 8c9dbfa commit ec039d3

23 files changed

+180
-0
lines changed

+nix/NamedEntity.m

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,16 @@
2020
nix.Dynamic.add_dyn_attr(obj, 'type', 'rw');
2121
nix.Dynamic.add_dyn_attr(obj, 'definition', 'rw');
2222
end
23+
24+
function res = compare(obj, entity)
25+
% Compares first name and second id, return > 0 if the entity
26+
% is larger than the other, 0 if both are equal, and < 0 otherwise.
27+
if(~strcmp(class(obj), class(entity)))
28+
error('Only entities of the same class can be compared.');
29+
end;
30+
res = nix_mx(strcat(obj.alias, '::compare'), ...
31+
obj.nix_handle, entity.nix_handle);
32+
end;
2333
end
2434

2535
end

nix_mx.cc

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ void mexFunction(int nlhs,
165165
methods->add("Block::openTagIdx", nixblock::openTagIdx);
166166
methods->add("Block::openMultiTagIdx", nixblock::openMultiTagIdx);
167167
methods->add("Block::openSourceIdx", nixblock::openSourceIdx);
168+
methods->add("Block::compare", nixblock::compare);
168169

169170
classdef<nix::Group>("Group", methods)
170171
.desc(&nixgroup::describe)
@@ -206,6 +207,7 @@ void mexFunction(int nlhs,
206207
methods->add("Group::openTagIdx", nixgroup::openTagIdx);
207208
methods->add("Group::openMultiTagIdx", nixgroup::openMultiTagIdx);
208209
methods->add("Group::openSourceIdx", nixgroup::openSourceIdx);
210+
methods->add("Group::compare", nixgroup::compare);
209211

210212
classdef<nix::DataArray>("DataArray", methods)
211213
.desc(&nixdataarray::describe)
@@ -248,6 +250,7 @@ void mexFunction(int nlhs,
248250
methods->add("DataArray::setDataExtent", nixdataarray::setDataExtent);
249251
methods->add("DataArray::openSourceIdx", nixdataarray::openSourceIdx);
250252
methods->add("DataArray::openDimensionIdx", nixdataarray::openDimensionIdx);
253+
methods->add("DataArray::compare", nixdataarray::compare);
251254

252255
classdef<nix::Source>("Source", methods)
253256
.desc(&nixsource::describe)
@@ -268,6 +271,7 @@ void mexFunction(int nlhs,
268271
.reg("referringTags", GETTER(std::vector<nix::Tag>, nix::Source, referringTags))
269272
.reg("referringMultiTags", GETTER(std::vector<nix::MultiTag>, nix::Source, referringMultiTags));
270273
methods->add("Source::openSourceIdx", nixsource::openSourceIdx);
274+
methods->add("Source::compare", nixsource::compare);
271275

272276
classdef<nix::Tag>("Tag", methods)
273277
.desc(&nixtag::describe)
@@ -307,6 +311,7 @@ void mexFunction(int nlhs,
307311
methods->add("Tag::openReferenceIdx", nixtag::openReferenceIdx);
308312
methods->add("Tag::openFeatureIdx", nixtag::openFeatureIdx);
309313
methods->add("Tag::openSourceIdx", nixtag::openSourceIdx);
314+
methods->add("Tag::compare", nixtag::compare);
310315

311316
classdef<nix::MultiTag>("MultiTag", methods)
312317
.desc(&nixmultitag::describe)
@@ -349,6 +354,7 @@ void mexFunction(int nlhs,
349354
methods->add("MultiTag::openReferenceIdx", nixmultitag::openReferenceIdx);
350355
methods->add("MultiTag::openFeatureIdx", nixmultitag::openFeatureIdx);
351356
methods->add("MultiTag::openSourceIdx", nixmultitag::openSourceIdx);
357+
methods->add("MultiTag::compare", nixmultitag::compare);
352358

353359
classdef<nix::Section>("Section", methods)
354360
.desc(&nixsection::describe)
@@ -388,6 +394,7 @@ void mexFunction(int nlhs,
388394
methods->add("Section::referringBlockDataArrays", nixsection::referringBlockDataArrays);
389395
methods->add("Section::openSectionIdx", nixsection::openSectionIdx);
390396
methods->add("Section::openPropertyIdx", nixsection::openPropertyIdx);
397+
methods->add("Section::compare", nixsection::compare);
391398

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

src/nixblock.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -90,4 +90,10 @@ namespace nixblock {
9090
output.set(0, currObj.getSource(idx));
9191
}
9292

93+
void compare(const extractor &input, infusor &output) {
94+
nix::Block currObj = input.entity<nix::Block>(1);
95+
nix::Block other = input.entity<nix::Block>(2);
96+
output.set(0, currObj.compare(other));
97+
}
98+
9399
} // namespace nixblock

src/nixblock.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,8 @@ namespace nixblock {
3131

3232
void openSourceIdx(const extractor &input, infusor &output);
3333

34+
void compare(const extractor &input, infusor &output);
35+
3436
} // namespace nixblock
3537

3638
#endif

src/nixdataarray.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -170,4 +170,10 @@ namespace nixdataarray {
170170
output.set(0, sb.array());
171171
}
172172

173+
void compare(const extractor &input, infusor &output) {
174+
nix::DataArray currObj = input.entity<nix::DataArray>(1);
175+
nix::DataArray other = input.entity<nix::DataArray>(2);
176+
output.set(0, currObj.compare(other));
177+
}
178+
173179
} // namespace nixdataarray

src/nixdataarray.h

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

4646
void openDimensionIdx(const extractor &input, infusor &output);
4747

48+
void compare(const extractor &input, infusor &output);
49+
4850
} // namespace nixdataarray
4951

5052
#endif

src/nixgroup.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,4 +97,10 @@ namespace nixgroup {
9797
output.set(0, currObj.getSource(idx));
9898
}
9999

100+
void compare(const extractor &input, infusor &output) {
101+
nix::Group currObj = input.entity<nix::Group>(1);
102+
nix::Group other = input.entity<nix::Group>(2);
103+
output.set(0, currObj.compare(other));
104+
}
105+
100106
} // namespace nixgroup

src/nixgroup.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,8 @@ namespace nixgroup {
3939

4040
void openSourceIdx(const extractor &input, infusor &output);
4141

42+
void compare(const extractor &input, infusor &output);
43+
4244
} // namespace nixgroup
4345

4446
#endif

src/nixmultitag.cc

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,4 +101,10 @@ namespace nixmultitag {
101101
output.set(0, currObj.getSource(idx));
102102
}
103103

104+
void compare(const extractor &input, infusor &output) {
105+
nix::MultiTag currObj = input.entity<nix::MultiTag>(1);
106+
nix::MultiTag other = input.entity<nix::MultiTag>(2);
107+
output.set(0, currObj.compare(other));
108+
}
109+
104110
} // namespace nixmultitag

src/nixmultitag.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,8 @@ namespace nixmultitag {
3737

3838
void openSourceIdx(const extractor &input, infusor &output);
3939

40+
void compare(const extractor &input, infusor &output);
41+
4042
} // namespace nixmultitag
4143

4244
#endif

0 commit comments

Comments
 (0)