Skip to content

Commit 793fdaa

Browse files
committed
[c++] Refactor filter templates
1 parent a0d4f9e commit 793fdaa

File tree

9 files changed

+34
-35
lines changed

9 files changed

+34
-35
lines changed

src/filters.h

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,8 @@
1313
#include "mex.h"
1414
#include "datatypes.h"
1515

16-
// filter template
1716
template<typename T, typename FN>
18-
std::vector<T> filterFileEntity(const extractor &input, FN ff) {
17+
std::vector<T> filterFullEntity(const extractor &input, FN ff) {
1918
std::vector<T> res;
2019

2120
switch (input.num<uint8_t>(2)) {
@@ -35,14 +34,20 @@ std::vector<T> filterFileEntity(const extractor &input, FN ff) {
3534
case switchFilter::Name:
3635
res = ff(nix::util::NameFilter<T>(input.str(3)));
3736
break;
37+
case switchFilter::Metadata:
38+
res = ff(nix::util::MetadataFilter<T>(input.str(3)));
39+
break;
40+
case switchFilter::Source:
41+
res = ff(nix::util::SourceFilter<T>(input.str(3)));
42+
break;
3843
default: throw std::invalid_argument("unknown or unsupported filter");
3944
}
4045

4146
return res;
4247
}
4348

4449
template<typename T, typename FN>
45-
std::vector<T> filterEntity(const extractor &input, FN ff) {
50+
std::vector<T> filterNameTypeEntity(const extractor &input, FN ff) {
4651
std::vector<T> res;
4752

4853
switch (input.num<uint8_t>(2)) {
@@ -62,20 +67,14 @@ std::vector<T> filterEntity(const extractor &input, FN ff) {
6267
case switchFilter::Name:
6368
res = ff(nix::util::NameFilter<T>(input.str(3)));
6469
break;
65-
case switchFilter::Metadata:
66-
res = ff(nix::util::MetadataFilter<T>(input.str(3)));
67-
break;
68-
case switchFilter::Source:
69-
res = ff(nix::util::SourceFilter<T>(input.str(3)));
70-
break;
7170
default: throw std::invalid_argument("unknown or unsupported filter");
7271
}
7372

7473
return res;
7574
}
7675

7776
template<typename T, typename FN>
78-
std::vector<T> filterFeature(const extractor &input, FN ff) {
77+
std::vector<T> filterNamedEntity(const extractor &input, FN ff) {
7978
std::vector<T> res;
8079

8180
switch (input.num<uint8_t>(2)) {
@@ -89,14 +88,17 @@ std::vector<T> filterFeature(const extractor &input, FN ff) {
8988
// this will crash matlab, if its not a vector of strings...
9089
res = ff(nix::util::IdsFilter<T>(input.vec<std::string>(3)));
9190
break;
91+
case switchFilter::Name:
92+
res = ff(nix::util::NameFilter<T>(input.str(3)));
93+
break;
9294
default: throw std::invalid_argument("unknown or unsupported filter");
9395
}
9496

9597
return res;
9698
}
9799

98100
template<typename T, typename FN>
99-
std::vector<T> filterProperty(const extractor &input, FN ff) {
101+
std::vector<T> filterEntity(const extractor &input, FN ff) {
100102
std::vector<T> res;
101103

102104
switch (input.num<uint8_t>(2)) {
@@ -110,9 +112,6 @@ std::vector<T> filterProperty(const extractor &input, FN ff) {
110112
// this will crash matlab, if its not a vector of strings...
111113
res = ff(nix::util::IdsFilter<T>(input.vec<std::string>(3)));
112114
break;
113-
case switchFilter::Name:
114-
res = ff(nix::util::NameFilter<T>(input.str(3)));
115-
break;
116115
default: throw std::invalid_argument("unknown or unsupported filter");
117116
}
118117

src/nixblock.cc

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ namespace nixblock {
9999

100100
void sourcesFiltered(const extractor &input, infusor &output) {
101101
nix::Block currObj = input.entity<nix::Block>(1);
102-
std::vector<nix::Source> res = filterEntity<nix::Source>(input,
102+
std::vector<nix::Source> res = filterFullEntity<nix::Source>(input,
103103
[currObj](const nix::util::Filter<nix::Source>::type &filter) {
104104
return currObj.sources(filter);
105105
});
@@ -108,7 +108,7 @@ namespace nixblock {
108108

109109
void groupsFiltered(const extractor &input, infusor &output) {
110110
nix::Block currObj = input.entity<nix::Block>(1);
111-
std::vector<nix::Group> res = filterEntity<nix::Group>(input,
111+
std::vector<nix::Group> res = filterFullEntity<nix::Group>(input,
112112
[currObj](const nix::util::Filter<nix::Group>::type &filter) {
113113
return currObj.groups(filter);
114114
});
@@ -117,7 +117,7 @@ namespace nixblock {
117117

118118
void tagsFiltered(const extractor &input, infusor &output) {
119119
nix::Block currObj = input.entity<nix::Block>(1);
120-
std::vector<nix::Tag> res = filterEntity<nix::Tag>(input,
120+
std::vector<nix::Tag> res = filterFullEntity<nix::Tag>(input,
121121
[currObj](const nix::util::Filter<nix::Tag>::type &filter) {
122122
return currObj.tags(filter);
123123
});
@@ -126,7 +126,7 @@ namespace nixblock {
126126

127127
void multiTagsFiltered(const extractor &input, infusor &output) {
128128
nix::Block currObj = input.entity<nix::Block>(1);
129-
std::vector<nix::MultiTag> res = filterEntity<nix::MultiTag>(input,
129+
std::vector<nix::MultiTag> res = filterFullEntity<nix::MultiTag>(input,
130130
[currObj](const nix::util::Filter<nix::MultiTag>::type &filter) {
131131
return currObj.multiTags(filter);
132132
});
@@ -135,7 +135,7 @@ namespace nixblock {
135135

136136
void dataArraysFiltered(const extractor &input, infusor &output) {
137137
nix::Block currObj = input.entity<nix::Block>(1);
138-
std::vector<nix::DataArray> res = filterEntity<nix::DataArray>(input,
138+
std::vector<nix::DataArray> res = filterFullEntity<nix::DataArray>(input,
139139
[currObj](const nix::util::Filter<nix::DataArray>::type &filter) {
140140
return currObj.dataArrays(filter);
141141
});

src/nixdataarray.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ namespace nixdataarray {
180180

181181
void sourcesFiltered(const extractor &input, infusor &output) {
182182
nix::DataArray currObj = input.entity<nix::DataArray>(1);
183-
std::vector<nix::Source> res = filterEntity<nix::Source>(input,
183+
std::vector<nix::Source> res = filterFullEntity<nix::Source>(input,
184184
[currObj](const nix::util::Filter<nix::Source>::type &filter) {
185185
return currObj.sources(filter);
186186
});

src/nixfile.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -117,7 +117,7 @@ namespace nixfile {
117117

118118
void sectionsFiltered(const extractor &input, infusor &output) {
119119
nix::File currObj = input.entity<nix::File>(1);
120-
std::vector<nix::Section> res = filterFileEntity<nix::Section>(input,
120+
std::vector<nix::Section> res = filterNameTypeEntity<nix::Section>(input,
121121
[currObj](const nix::util::Filter<nix::Section>::type &filter) {
122122
return currObj.sections(filter);
123123
});
@@ -126,7 +126,7 @@ namespace nixfile {
126126

127127
void blocksFiltered(const extractor &input, infusor &output) {
128128
nix::File currObj = input.entity<nix::File>(1);
129-
std::vector<nix::Block> res = filterFileEntity<nix::Block>(input,
129+
std::vector<nix::Block> res = filterNameTypeEntity<nix::Block>(input,
130130
[currObj](const nix::util::Filter<nix::Block>::type &filter) {
131131
return currObj.blocks(filter);
132132
});

src/nixgroup.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,7 @@ namespace nixgroup {
106106

107107
void sourcesFiltered(const extractor &input, infusor &output) {
108108
nix::Group currObj = input.entity<nix::Group>(1);
109-
std::vector<nix::Source> res = filterEntity<nix::Source>(input,
109+
std::vector<nix::Source> res = filterFullEntity<nix::Source>(input,
110110
[currObj](const nix::util::Filter<nix::Source>::type &filter) {
111111
return currObj.sources(filter);
112112
});
@@ -115,7 +115,7 @@ namespace nixgroup {
115115

116116
void tagsFiltered(const extractor &input, infusor &output) {
117117
nix::Group currObj = input.entity<nix::Group>(1);
118-
std::vector<nix::Tag> res = filterEntity<nix::Tag>(input,
118+
std::vector<nix::Tag> res = filterFullEntity<nix::Tag>(input,
119119
[currObj](const nix::util::Filter<nix::Tag>::type &filter) {
120120
return currObj.tags(filter);
121121
});
@@ -124,7 +124,7 @@ namespace nixgroup {
124124

125125
void multiTagsFiltered(const extractor &input, infusor &output) {
126126
nix::Group currObj = input.entity<nix::Group>(1);
127-
std::vector<nix::MultiTag> res = filterEntity<nix::MultiTag>(input,
127+
std::vector<nix::MultiTag> res = filterFullEntity<nix::MultiTag>(input,
128128
[currObj](const nix::util::Filter<nix::MultiTag>::type &filter) {
129129
return currObj.multiTags(filter);
130130
});
@@ -133,7 +133,7 @@ namespace nixgroup {
133133

134134
void dataArraysFiltered(const extractor &input, infusor &output) {
135135
nix::Group currObj = input.entity<nix::Group>(1);
136-
std::vector<nix::DataArray> res = filterEntity<nix::DataArray>(input,
136+
std::vector<nix::DataArray> res = filterFullEntity<nix::DataArray>(input,
137137
[currObj](const nix::util::Filter<nix::DataArray>::type &filter) {
138138
return currObj.dataArrays(filter);
139139
});

src/nixmultitag.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,7 +110,7 @@ namespace nixmultitag {
110110

111111
void sourcesFiltered(const extractor &input, infusor &output) {
112112
nix::MultiTag currObj = input.entity<nix::MultiTag>(1);
113-
std::vector<nix::Source> res = filterEntity<nix::Source>(input,
113+
std::vector<nix::Source> res = filterFullEntity<nix::Source>(input,
114114
[currObj](const nix::util::Filter<nix::Source>::type &filter) {
115115
return currObj.sources(filter);
116116
});
@@ -119,7 +119,7 @@ namespace nixmultitag {
119119

120120
void referencesFiltered(const extractor &input, infusor &output) {
121121
nix::MultiTag currObj = input.entity<nix::MultiTag>(1);
122-
std::vector<nix::DataArray> res = filterEntity<nix::DataArray>(input,
122+
std::vector<nix::DataArray> res = filterFullEntity<nix::DataArray>(input,
123123
[currObj](const nix::util::Filter<nix::DataArray>::type &filter) {
124124
return currObj.references(filter);
125125
});
@@ -128,7 +128,7 @@ namespace nixmultitag {
128128

129129
void featuresFiltered(const extractor &input, infusor &output) {
130130
nix::MultiTag currObj = input.entity<nix::MultiTag>(1);
131-
std::vector<nix::Feature> res = filterFeature<nix::Feature>(input,
131+
std::vector<nix::Feature> res = filterEntity<nix::Feature>(input,
132132
[currObj](const nix::util::Filter<nix::Feature>::type &filter) {
133133
return currObj.features(filter);
134134
});

src/nixsection.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -126,7 +126,7 @@ namespace nixsection {
126126

127127
void sectionsFiltered(const extractor &input, infusor &output) {
128128
nix::Section currObj = input.entity<nix::Section>(1);
129-
std::vector<nix::Section> res = filterFileEntity<nix::Section>(input,
129+
std::vector<nix::Section> res = filterNameTypeEntity<nix::Section>(input,
130130
[currObj](const nix::util::Filter<nix::Section>::type &filter) {
131131
return currObj.sections(filter);
132132
});
@@ -135,7 +135,7 @@ namespace nixsection {
135135

136136
void propertiesFiltered(const extractor &input, infusor &output) {
137137
nix::Section currObj = input.entity<nix::Section>(1);
138-
std::vector<nix::Property> res = filterProperty<nix::Property>(input,
138+
std::vector<nix::Property> res = filterNamedEntity<nix::Property>(input,
139139
[currObj](const nix::util::Filter<nix::Property>::type &filter) {
140140
return currObj.properties(filter);
141141
});

src/nixsource.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ namespace nixsource {
4242

4343
void sourcesFiltered(const extractor &input, infusor &output) {
4444
nix::Source currObj = input.entity<nix::Source>(1);
45-
std::vector<nix::Source> res = filterEntity<nix::Source>(input,
45+
std::vector<nix::Source> res = filterFullEntity<nix::Source>(input,
4646
[currObj](const nix::util::Filter<nix::Source>::type &filter) {
4747
return currObj.sources(filter);
4848
});

src/nixtag.cc

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ namespace nixtag {
105105

106106
void sourcesFiltered(const extractor &input, infusor &output) {
107107
nix::Tag currObj = input.entity<nix::Tag>(1);
108-
std::vector<nix::Source> res = filterEntity<nix::Source>(input,
108+
std::vector<nix::Source> res = filterFullEntity<nix::Source>(input,
109109
[currObj](const nix::util::Filter<nix::Source>::type &filter) {
110110
return currObj.sources(filter);
111111
});
@@ -114,7 +114,7 @@ namespace nixtag {
114114

115115
void referencesFiltered(const extractor &input, infusor &output) {
116116
nix::Tag currObj = input.entity<nix::Tag>(1);
117-
std::vector<nix::DataArray> res = filterEntity<nix::DataArray>(input,
117+
std::vector<nix::DataArray> res = filterFullEntity<nix::DataArray>(input,
118118
[currObj](const nix::util::Filter<nix::DataArray>::type &filter) {
119119
return currObj.references(filter);
120120
});
@@ -123,7 +123,7 @@ namespace nixtag {
123123

124124
void featuresFiltered(const extractor &input, infusor &output) {
125125
nix::Tag currObj = input.entity<nix::Tag>(1);
126-
std::vector<nix::Feature> res = filterFeature<nix::Feature>(input,
126+
std::vector<nix::Feature> res = filterEntity<nix::Feature>(input,
127127
[currObj](const nix::util::Filter<nix::Feature>::type &filter) {
128128
return currObj.features(filter);
129129
});

0 commit comments

Comments
 (0)