Skip to content

Commit 4511b91

Browse files
authored
Merge pull request #157 from mpsonntag/retrieveData
looks good to me
2 parents 80010ba + cb69eb9 commit 4511b91

File tree

10 files changed

+579
-94
lines changed

10 files changed

+579
-94
lines changed

+nix/MultiTag.m

Lines changed: 22 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -62,15 +62,17 @@
6262
'MultiTag::openReferenceIdx', idx, @nix.DataArray);
6363
end;
6464

65-
function data = retrieve_data(obj, pos_index, ref_index)
66-
% convert Matlab-like to C-like index
67-
assert(pos_index > 0, 'Position index must be positive');
68-
assert(ref_index > 0, 'Reference index must be positive');
69-
tmp = nix_mx('MultiTag::retrieveData', obj.nix_handle, ...
70-
pos_index - 1, ref_index - 1);
65+
function data = retrieve_data(obj, pos_idx, id_or_name)
66+
tmp = nix_mx('MultiTag::retrieveData', obj.nix_handle, pos_idx, id_or_name);
7167

72-
% data must agree with file & dimensions
73-
% see mkarray.cc(42)
68+
% data must agree with file & dimensions see mkarray.cc(42)
69+
data = permute(tmp, length(size(tmp)):-1:1);
70+
end;
71+
72+
function data = retrieve_data_idx(obj, pos_idx, ref_idx)
73+
tmp = nix_mx('MultiTag::retrieveDataIdx', obj.nix_handle, pos_idx, ref_idx);
74+
75+
% data must agree with file & dimensions see mkarray.cc(42)
7476
data = permute(tmp, length(size(tmp)):-1:1);
7577
end;
7678

@@ -116,15 +118,19 @@
116118
'MultiTag::openFeatureIdx', idx, @nix.Feature);
117119
end;
118120

119-
function data = retrieve_feature_data(obj, pos_index, fea_index)
120-
% convert Matlab-like to C-like index
121-
assert(pos_index > 0, 'Position index must be positive');
122-
assert(fea_index > 0, 'Feature index must be positive');
123-
tmp = nix_mx('MultiTag::featureRetrieveData', obj.nix_handle, ...
124-
pos_index - 1, fea_index - 1);
121+
function data = retrieve_feature_data(obj, pos_idx, id_or_name)
122+
tmp = nix_mx('MultiTag::featureRetrieveData', ...
123+
obj.nix_handle, pos_idx, id_or_name);
124+
125+
% data must agree with file & dimensions; see mkarray.cc(42)
126+
data = permute(tmp, length(size(tmp)):-1:1);
127+
end;
128+
129+
function data = retrieve_feature_data_idx(obj, pos_idx, feat_idx)
130+
tmp = nix_mx('MultiTag::featureRetrieveDataIdx', ...
131+
obj.nix_handle, pos_idx, feat_idx);
125132

126-
% data must agree with file & dimensions
127-
% see mkarray.cc(42)
133+
% data must agree with file & dimensions; see mkarray.cc(42)
128134
data = permute(tmp, length(size(tmp)):-1:1);
129135
end;
130136

+nix/Tag.m

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -63,10 +63,16 @@
6363
'Tag::openReferenceIdx', idx, @nix.DataArray);
6464
end;
6565

66-
function data = retrieve_data(obj, index)
67-
% convert Matlab-like to C-like index
68-
assert(index > 0, 'Subscript indices must be positive');
69-
tmp = nix_mx('Tag::retrieveData', obj.nix_handle, index - 1);
66+
function data = retrieve_data(obj, id_or_name)
67+
tmp = nix_mx('Tag::retrieveData', obj.nix_handle, id_or_name);
68+
69+
% data must agree with file & dimensions
70+
% see mkarray.cc(42)
71+
data = permute(tmp, length(size(tmp)):-1:1);
72+
end;
73+
74+
function data = retrieve_data_idx(obj, idx)
75+
tmp = nix_mx('Tag::retrieveDataIdx', obj.nix_handle, idx);
7076

7177
% data must agree with file & dimensions
7278
% see mkarray.cc(42)
@@ -115,10 +121,16 @@
115121
'Tag::openFeatureIdx', idx, @nix.Feature);
116122
end;
117123

118-
function data = retrieve_feature_data(obj, index)
119-
% convert Matlab-like to C-like index
120-
assert(index > 0, 'Subscript indices must be positive');
121-
tmp = nix_mx('Tag::featureRetrieveData', obj.nix_handle, index - 1);
124+
function data = retrieve_feature_data(obj, id_or_name)
125+
tmp = nix_mx('Tag::featureRetrieveData', obj.nix_handle, id_or_name);
126+
127+
% data must agree with file & dimensions
128+
% see mkarray.cc(42)
129+
data = permute(tmp, length(size(tmp)):-1:1);
130+
end
131+
132+
function data = retrieve_feature_data_idx(obj, idx)
133+
tmp = nix_mx('Tag::featureRetrieveDataIdx', obj.nix_handle, idx);
122134

123135
% data must agree with file & dimensions
124136
% see mkarray.cc(42)

nix_mx.cc

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -317,8 +317,6 @@ void mexFunction(int nlhs,
317317
.reg("sourceCount", GETTER(nix::ndsize_t, nix::Tag, sourceCount))
318318
.reg("referenceCount", GETTER(nix::ndsize_t, nix::Tag, referenceCount))
319319
.reg("featureCount", GETTER(nix::ndsize_t, nix::Tag, featureCount));
320-
methods->add("Tag::retrieveData", nixtag::retrieveData);
321-
methods->add("Tag::featureRetrieveData", nixtag::retrieveFeatureData);
322320
methods->add("Tag::addReference", nixtag::addReference);
323321
methods->add("Tag::addReferences", nixtag::addReferences);
324322
methods->add("Tag::addSource", nixtag::addSource);
@@ -331,6 +329,10 @@ void mexFunction(int nlhs,
331329
methods->add("Tag::sourcesFiltered", nixtag::sourcesFiltered);
332330
methods->add("Tag::referencesFiltered", nixtag::referencesFiltered);
333331
methods->add("Tag::featuresFiltered", nixtag::featuresFiltered);
332+
methods->add("Tag::retrieveData", nixtag::retrieveData);
333+
methods->add("Tag::retrieveDataIdx", nixtag::retrieveDataIdx);
334+
methods->add("Tag::featureRetrieveData", nixtag::retrieveFeatureData);
335+
methods->add("Tag::featureRetrieveDataIdx", nixtag::retrieveFeatureDataIdx);
334336

335337
classdef<nix::MultiTag>("MultiTag", methods)
336338
.desc(&nixmultitag::describe)
@@ -362,8 +364,6 @@ void mexFunction(int nlhs,
362364
.reg("sourceCount", GETTER(nix::ndsize_t, nix::MultiTag, sourceCount))
363365
.reg("referenceCount", GETTER(nix::ndsize_t, nix::MultiTag, referenceCount))
364366
.reg("featureCount", GETTER(nix::ndsize_t, nix::MultiTag, featureCount));
365-
methods->add("MultiTag::retrieveData", nixmultitag::retrieveData);
366-
methods->add("MultiTag::featureRetrieveData", nixmultitag::retrieveFeatureData);
367367
methods->add("MultiTag::addReference", nixmultitag::addReference);
368368
methods->add("MultiTag::addReferences", nixmultitag::addReferences);
369369
methods->add("MultiTag::addSource", nixmultitag::addSource);
@@ -377,6 +377,10 @@ void mexFunction(int nlhs,
377377
methods->add("MultiTag::sourcesFiltered", nixmultitag::sourcesFiltered);
378378
methods->add("MultiTag::referencesFiltered", nixmultitag::referencesFiltered);
379379
methods->add("MultiTag::featuresFiltered", nixmultitag::featuresFiltered);
380+
methods->add("MultiTag::retrieveData", nixmultitag::retrieveData);
381+
methods->add("MultiTag::retrieveDataIdx", nixmultitag::retrieveDataIdx);
382+
methods->add("MultiTag::featureRetrieveData", nixmultitag::retrieveFeatureData);
383+
methods->add("MultiTag::featureRetrieveDataIdx", nixmultitag::retrieveFeatureDataIdx);
380384

381385
classdef<nix::Section>("Section", methods)
382386
.desc(&nixsection::describe)

src/nixmultitag.cc

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -61,24 +61,6 @@ namespace nixmultitag {
6161
output.set(0, handle(newFeat));
6262
}
6363

64-
void retrieveData(const extractor &input, infusor &output) {
65-
nix::MultiTag currObj = input.entity<nix::MultiTag>(1);
66-
double p_index = input.num<double>(2);
67-
double f_index = input.num<double>(3);
68-
69-
mxArray *data = make_mx_array_from_ds(currObj.retrieveData(p_index, f_index));
70-
output.set(0, data);
71-
}
72-
73-
void retrieveFeatureData(const extractor &input, infusor &output) {
74-
nix::MultiTag currObj = input.entity<nix::MultiTag>(1);
75-
double p_index = input.num<double>(2);
76-
double f_index = input.num<double>(3);
77-
78-
mxArray *data = make_mx_array_from_ds(currObj.retrieveFeatureData(p_index, f_index));
79-
output.set(0, data);
80-
}
81-
8264
void addPositions(const extractor &input, infusor &output) {
8365
nix::MultiTag currObj = input.entity<nix::MultiTag>(1);
8466
currObj.positions(input.str(2));
@@ -135,4 +117,40 @@ namespace nixmultitag {
135117
output.set(0, res);
136118
}
137119

120+
void retrieveData(const extractor &input, infusor &output) {
121+
nix::MultiTag currObj = input.entity<nix::MultiTag>(1);
122+
size_t pos_idx = (size_t)input.num<double>(2);
123+
std::string name_id = input.str(3);
124+
125+
mxArray *data = make_mx_array_from_ds(currObj.retrieveData(pos_idx, name_id));
126+
output.set(0, data);
127+
}
128+
129+
void retrieveDataIdx(const extractor &input, infusor &output) {
130+
nix::MultiTag currObj = input.entity<nix::MultiTag>(1);
131+
size_t pos_idx = (size_t)input.num<double>(2);
132+
size_t ref_idx = (size_t)input.num<double>(3);
133+
134+
mxArray *data = make_mx_array_from_ds(currObj.retrieveData(pos_idx, ref_idx));
135+
output.set(0, data);
136+
}
137+
138+
void retrieveFeatureData(const extractor &input, infusor &output) {
139+
nix::MultiTag currObj = input.entity<nix::MultiTag>(1);
140+
size_t pos_idx = (size_t)input.num<double>(2);
141+
std::string name_id = input.str(3);
142+
143+
mxArray *data = make_mx_array_from_ds(currObj.retrieveFeatureData(pos_idx, name_id));
144+
output.set(0, data);
145+
}
146+
147+
void retrieveFeatureDataIdx(const extractor &input, infusor &output) {
148+
nix::MultiTag currObj = input.entity<nix::MultiTag>(1);
149+
size_t pos_idx = (size_t)input.num<double>(2);
150+
size_t ref_idx = (size_t)input.num<double>(3);
151+
152+
mxArray *data = make_mx_array_from_ds(currObj.retrieveFeatureData(pos_idx, ref_idx));
153+
output.set(0, data);
154+
}
155+
138156
} // namespace nixmultitag

src/nixmultitag.h

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,6 @@ namespace nixmultitag {
2525

2626
void createFeature(const extractor &input, infusor &output);
2727

28-
void retrieveData(const extractor &input, infusor &output);
29-
30-
void retrieveFeatureData(const extractor &input, infusor &output);
31-
3228
void addPositions(const extractor &input, infusor &output);
3329

3430
void openReferenceIdx(const extractor &input, infusor &output);
@@ -45,6 +41,14 @@ namespace nixmultitag {
4541

4642
void featuresFiltered(const extractor &input, infusor &output);
4743

44+
void retrieveData(const extractor &input, infusor &output);
45+
46+
void retrieveDataIdx(const extractor &input, infusor &output);
47+
48+
void retrieveFeatureData(const extractor &input, infusor &output);
49+
50+
void retrieveFeatureDataIdx(const extractor &input, infusor &output);
51+
4852
} // namespace nixmultitag
4953

5054
#endif

src/nixtag.cc

Lines changed: 32 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -63,22 +63,6 @@ namespace nixtag {
6363
output.set(0, handle(newFeat));
6464
}
6565

66-
void retrieveData(const extractor &input, infusor &output) {
67-
nix::Tag currObj = input.entity<nix::Tag>(1);
68-
double index = input.num<double>(2);
69-
70-
mxArray *data = make_mx_array_from_ds(currObj.retrieveData(index));
71-
output.set(0, data);
72-
}
73-
74-
void retrieveFeatureData(const extractor &input, infusor &output) {
75-
nix::Tag currObj = input.entity<nix::Tag>(1);
76-
double index = input.num<double>(2);
77-
78-
mxArray *data = make_mx_array_from_ds(currObj.retrieveFeatureData(index));
79-
output.set(0, data);
80-
}
81-
8266
void openReferenceIdx(const extractor &input, infusor &output) {
8367
nix::Tag currObj = input.entity<nix::Tag>(1);
8468
nix::ndsize_t idx = (nix::ndsize_t)input.num<double>(2);
@@ -130,4 +114,36 @@ namespace nixtag {
130114
output.set(0, res);
131115
}
132116

117+
void retrieveData(const extractor &input, infusor &output) {
118+
nix::Tag currObj = input.entity<nix::Tag>(1);
119+
std::string name_id = input.str(2);
120+
121+
mxArray *data = make_mx_array_from_ds(currObj.retrieveData(name_id));
122+
output.set(0, data);
123+
}
124+
125+
void retrieveDataIdx(const extractor &input, infusor &output) {
126+
nix::Tag currObj = input.entity<nix::Tag>(1);
127+
nix::ndsize_t idx = (nix::ndsize_t)input.num<double>(2);
128+
129+
mxArray *data = make_mx_array_from_ds(currObj.retrieveData(idx));
130+
output.set(0, data);
131+
}
132+
133+
void retrieveFeatureData(const extractor &input, infusor &output) {
134+
nix::Tag currObj = input.entity<nix::Tag>(1);
135+
std::string name_id = input.str(2);
136+
137+
mxArray *data = make_mx_array_from_ds(currObj.retrieveFeatureData(name_id));
138+
output.set(0, data);
139+
}
140+
141+
void retrieveFeatureDataIdx(const extractor &input, infusor &output) {
142+
nix::Tag currObj = input.entity<nix::Tag>(1);
143+
nix::ndsize_t idx = (nix::ndsize_t)input.num<double>(2);
144+
145+
mxArray *data = make_mx_array_from_ds(currObj.retrieveFeatureData(idx));
146+
output.set(0, data);
147+
}
148+
133149
} // namespace nixtag

src/nixtag.h

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,6 @@ namespace nixtag {
2525

2626
void createFeature(const extractor &input, infusor &output);
2727

28-
void retrieveData(const extractor &input, infusor &output);
29-
30-
void retrieveFeatureData(const extractor &input, infusor &output);
31-
3228
void openReferenceIdx(const extractor &input, infusor &output);
3329

3430
void openFeatureIdx(const extractor &input, infusor &output);
@@ -43,6 +39,14 @@ namespace nixtag {
4339

4440
void featuresFiltered(const extractor &input, infusor &output);
4541

42+
void retrieveData(const extractor &input, infusor &output);
43+
44+
void retrieveDataIdx(const extractor &input, infusor &output);
45+
46+
void retrieveFeatureData(const extractor &input, infusor &output);
47+
48+
void retrieveFeatureDataIdx(const extractor &input, infusor &output);
49+
4650
} // namespace nixtag
4751

4852
#endif

src/utils/handle.h

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -50,31 +50,31 @@ struct entity_to_id<nix::Source> {
5050
template<>
5151
struct entity_to_id<nix::Feature> {
5252
static const bool is_valid = true;
53-
static const int value = 5;
53+
static const int value = 6;
5454
};
5555

5656
template<>
5757
struct entity_to_id<nix::MultiTag> {
5858
static const bool is_valid = true;
59-
static const int value = 6;
59+
static const int value = 7;
6060
};
6161

6262
template<>
6363
struct entity_to_id<nix::Section> {
6464
static const bool is_valid = true;
65-
static const int value = 7;
65+
static const int value = 8;
6666
};
6767

6868
template<>
6969
struct entity_to_id<nix::Property> {
7070
static const bool is_valid = true;
71-
static const int value = 8;
71+
static const int value = 9;
7272
};
7373

7474
template<>
7575
struct entity_to_id<nix::Group> {
7676
static const bool is_valid = true;
77-
static const int value = 9;
77+
static const int value = 10;
7878
};
7979

8080
/*

0 commit comments

Comments
 (0)