Skip to content

Commit 365f421

Browse files
author
ayla
committed
Merge remote-tracking branch 'origin/master' into headless_build_fix
2 parents ea995b4 + fc9c97a commit 365f421

File tree

102 files changed

+3217
-1967
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

102 files changed

+3217
-1967
lines changed

src/Core/Algorithms/Base/Variable.h

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@
3434
#include <iosfwd>
3535
#include <boost/variant.hpp>
3636
#include <boost/filesystem/path.hpp>
37+
#ifndef Q_MOC_RUN
38+
#include <boost/iterator/counting_iterator.hpp>
39+
#endif
3740
#include <Core/Datatypes/DatatypeFwd.h>
3841
#include <Core/Algorithms/Base/Name.h>
3942
#include <Core/Algorithms/Base/Option.h>
@@ -93,7 +96,7 @@ namespace Algorithms {
9396
SCISHARE Variable makeVariable(const std::string& name, const Variable::Value& value);
9497

9598
template <typename ... Ts>
96-
Variable::List makeVariableList(Ts&&... params)
99+
Variable::List makeAnonymousVariableList(Ts&&... params)
97100
{
98101
std::vector<Variable::Value> values{params...};
99102
Variable::List vars;
@@ -102,6 +105,26 @@ namespace Algorithms {
102105
return vars;
103106
}
104107

108+
template <typename ... Ts, size_t N>
109+
Variable::List makeNamedVariableList(const Name (&namesList)[N], Ts&&... params)
110+
{
111+
std::vector<Variable::Value> values{ params... };
112+
113+
auto namesIter = &namesList[0];
114+
Variable::List vars;
115+
std::transform(values.begin(), values.end(), std::back_inserter(vars),
116+
[&namesIter](const Variable::Value& val) { return Variable(*namesIter++, val); });
117+
return vars;
118+
}
119+
120+
template <typename Func>
121+
Variable::List makeHomogeneousVariableList(Func valueGenerator, size_t num)
122+
{
123+
Variable::List vars;
124+
std::transform(boost::counting_iterator<size_t>(0), boost::counting_iterator<size_t>(num), std::back_inserter(vars), [valueGenerator](size_t i) { return makeVariable("", valueGenerator(i)); });
125+
return vars;
126+
}
127+
105128
typedef Variable AlgorithmParameter;
106129
typedef Variable::List VariableList;
107130
typedef Datatypes::SharedPointer<Variable> VariableHandle;

0 commit comments

Comments
 (0)