Functions: provide dummy multi function

Sometimes it is convenient to be able to return a reference to some
dummy function.
This commit is contained in:
Jacques Lucke 2020-06-30 18:05:44 +02:00
parent 67da2bd23a
commit c2ebf3edb4
3 changed files with 45 additions and 2 deletions

View File

@ -29,6 +29,7 @@ set(INC_SYS
set(SRC
intern/attributes_ref.cc
intern/cpp_types.cc
intern/multi_function.cc
intern/multi_function_network.cc
intern/multi_function_network_evaluation.cc

View File

@ -88,9 +88,9 @@ class MultiFunction {
}
protected:
MFSignatureBuilder get_builder(StringRef function_name)
MFSignatureBuilder get_builder(std::string function_name)
{
m_signature.function_name = function_name;
m_signature.function_name = std::move(function_name);
return MFSignatureBuilder(m_signature);
}
};
@ -100,6 +100,8 @@ inline MFParamsBuilder::MFParamsBuilder(const class MultiFunction &fn, uint min_
{
}
extern const MultiFunction &dummy_multi_function;
} // namespace fn
} // namespace blender

View File

@ -0,0 +1,40 @@
/*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include "FN_multi_function.hh"
namespace blender {
namespace fn {
class DummyMultiFunction : public MultiFunction {
public:
DummyMultiFunction()
{
this->get_builder("Dummy");
}
void call(IndexMask UNUSED(mask),
MFParams UNUSED(params),
MFContext UNUSED(context)) const override
{
}
};
static DummyMultiFunction dummy_multi_function_;
const MultiFunction &dummy_multi_function = dummy_multi_function_;
} // namespace fn
} // namespace blender