This repository has been archived on 2023-10-09. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
blender-archive/source/blender/nodes/function/nodes/node_fn_string_length.cc
Jacques Lucke eedcf1876a Functions: introduce multi-function namespace
This moves all multi-function related code in the `functions` module
into a new `multi_function` namespace. This is similar to how there
is a `lazy_function` namespace.

The main benefit of this is that many types names that were prefixed
with `MF` (for "multi function") can be simplified.

There is also a common shorthand for the `multi_function` namespace: `mf`.
This is also similar to lazy-functions where the shortened namespace
is called `lf`.
2023-01-07 17:32:28 +01:00

37 lines
1023 B
C++

/* SPDX-License-Identifier: GPL-2.0-or-later */
#include "BLI_string_utf8.h"
#include <iomanip>
#include "node_function_util.hh"
namespace blender::nodes::node_fn_string_length_cc {
static void node_declare(NodeDeclarationBuilder &b)
{
b.add_input<decl::String>(N_("String"));
b.add_output<decl::Int>(N_("Length"));
}
static void node_build_multi_function(NodeMultiFunctionBuilder &builder)
{
static auto str_len_fn = mf::build::SI1_SO<std::string, int>(
"String Length", [](const std::string &a) { return BLI_strlen_utf8(a.c_str()); });
builder.set_matching_fn(&str_len_fn);
}
} // namespace blender::nodes::node_fn_string_length_cc
void register_node_type_fn_string_length()
{
namespace file_ns = blender::nodes::node_fn_string_length_cc;
static bNodeType ntype;
fn_node_type_base(&ntype, FN_NODE_STRING_LENGTH, "String Length", NODE_CLASS_CONVERTER);
ntype.declare = file_ns::node_declare;
ntype.build_multi_function = file_ns::node_build_multi_function;
nodeRegisterType(&ntype);
}