Skip to content

Commit 478ac11

Browse files
committed
Macro for EntityWithSources::sources mem_fun cast
1 parent 9abc489 commit 478ac11

File tree

1 file changed

+4
-3
lines changed

1 file changed

+4
-3
lines changed

nix_mx.cc

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ static void on_exit() {
126126
#define GETTER(type, class, name) static_cast<type(class::*)()const>(&class::name)
127127
#define GETBYSTR(type, class, name) static_cast<type(class::*)(const std::string &)const>(&class::name)
128128
#define GETCONTENT(type, class, name) static_cast<type(class::*)()const>(&class::name)
129+
#define GETSOURCES(base__) static_cast<std::vector<nix::Source>(nix::base::EntityWithSources<nix::base::base__>::*)(std::function<bool(const nix::Source &)>)const>(&nix::base::EntityWithSources<nix::base::base__>::sources)
129130
#define REMOVER(type, class, name) static_cast<bool(class::*)(const std::string&)>(&class::name)
130131

131132
// main entry point
@@ -172,7 +173,7 @@ void mexFunction(int nlhs,
172173
.reg("openMultiTag", GETBYSTR(nix::MultiTag, nix::Block, getMultiTag));
173174

174175
classdef<nix::DataArray>("DataArray", methods)
175-
.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));
176+
.reg("sources", GETSOURCES(IDataArray));
176177

177178
classdef<nix::Source>("Source", methods)
178179
.reg("sources", &nix::Source::sources)
@@ -181,15 +182,15 @@ void mexFunction(int nlhs,
181182
classdef<nix::Tag>("Tag", methods)
182183
.reg("references", GETTER(std::vector<nix::DataArray>, nix::Tag, references))
183184
.reg("features", &nix::Tag::features)
184-
.reg("sources", static_cast<std::vector<nix::Source>(nix::base::EntityWithSources<nix::base::ITag>::*)(std::function<bool(const nix::Source &)>)const>(&nix::base::EntityWithSources<nix::base::ITag>::sources))
185+
.reg("sources", GETSOURCES(ITag))
185186
.reg("openReferenceDataArray", GETBYSTR(nix::DataArray, nix::Tag, getReference))
186187
.reg("openFeature", GETBYSTR(nix::Feature, nix::Tag, getFeature))
187188
.reg("openSource", GETBYSTR(nix::Source, nix::Tag, getSource));
188189

189190
classdef<nix::MultiTag>("MultiTag", methods)
190191
.reg("references", GETTER(std::vector<nix::DataArray>, nix::MultiTag, references))
191192
.reg("features", &nix::MultiTag::features)
192-
.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))
193+
.reg("sources", GETSOURCES(IMultiTag))
193194
.reg("hasPositions", GETCONTENT(bool, nix::MultiTag, hasPositions))
194195
.reg("openPositions", GETCONTENT(nix::DataArray, nix::MultiTag, positions))
195196
.reg("openExtents", GETCONTENT(nix::DataArray, nix::MultiTag, extents))

0 commit comments

Comments
 (0)