[Bf-blender-cvs] [2c8ad4ef0b8] functions-experimental-refactor: cleanup
Jacques Lucke
noreply at git.blender.org
Sat Nov 2 21:32:52 CET 2019
Commit: 2c8ad4ef0b839446e0cf2cc7ae9e63afa88b162d
Author: Jacques Lucke
Date: Sat Nov 2 19:07:37 2019 +0100
Branches: functions-experimental-refactor
https://developer.blender.org/rB2c8ad4ef0b839446e0cf2cc7ae9e63afa88b162d
cleanup
===================================================================
M source/blender/functions2/intern/vtree_multi_function_network/builder.h
M source/blender/functions2/intern/vtree_multi_function_network/generate.cc
M source/blender/functions2/intern/vtree_multi_function_network/mappings.h
M source/blender/functions2/intern/vtree_multi_function_network/mappings_nodes.cc
M source/blender/functions2/intern/vtree_multi_function_network/mappings_sockets.cc
===================================================================
diff --git a/source/blender/functions2/intern/vtree_multi_function_network/builder.h b/source/blender/functions2/intern/vtree_multi_function_network/builder.h
index f54cac6c961..d51d3a597c0 100644
--- a/source/blender/functions2/intern/vtree_multi_function_network/builder.h
+++ b/source/blender/functions2/intern/vtree_multi_function_network/builder.h
@@ -2,22 +2,32 @@
#include "FN_vtree_multi_function_network.h"
+#include "mappings.h"
+
namespace FN {
-class VTreeMFNetworkBuilder {
+class VTreeMFNetworkBuilder : BLI::NonCopyable, BLI::NonMovable {
private:
const VirtualNodeTree &m_vtree;
- Vector<MFBuilderSocket *> m_socket_map;
- Vector<MFDataType> m_type_by_vsocket;
+ const VTreeMultiFunctionMappings &m_vtree_mappings;
+ Array<MFBuilderSocket *> m_socket_map;
+ Array<MFDataType> m_type_by_vsocket;
std::unique_ptr<MFNetworkBuilder> m_builder;
public:
- VTreeMFNetworkBuilder(const VirtualNodeTree &vtree, Vector<MFDataType> type_by_vsocket)
+ VTreeMFNetworkBuilder(const VirtualNodeTree &vtree,
+ const VTreeMultiFunctionMappings &vtree_mappings)
: m_vtree(vtree),
+ m_vtree_mappings(vtree_mappings),
m_socket_map(vtree.socket_count(), nullptr),
- m_type_by_vsocket(std::move(type_by_vsocket)),
+ m_type_by_vsocket(vtree.socket_count()),
m_builder(BLI::make_unique<MFNetworkBuilder>())
{
+ for (const VSocket *vsocket : vtree.all_sockets()) {
+ MFDataType data_type = vtree_mappings.data_type_by_idname.lookup_default(
+ vsocket->idname(), MFDataType::ForNone());
+ m_type_by_vsocket[vsocket->id()] = data_type;
+ }
}
const VirtualNodeTree &vtree() const
@@ -194,6 +204,11 @@ class VTreeMFNetworkBuilder {
return socket->as_input();
}
+ const CPPType &cpp_type_by_name(StringRef name) const
+ {
+ return *m_vtree_mappings.cpp_type_by_type_name.lookup(name);
+ }
+
std::unique_ptr<VTreeMFNetwork> build()
{
// m_builder->to_dot__clipboard();
diff --git a/source/blender/functions2/intern/vtree_multi_function_network/generate.cc b/source/blender/functions2/intern/vtree_multi_function_network/generate.cc
index 6b8bc9390c9..c07fd35249b 100644
--- a/source/blender/functions2/intern/vtree_multi_function_network/generate.cc
+++ b/source/blender/functions2/intern/vtree_multi_function_network/generate.cc
@@ -5,6 +5,7 @@
#include "BLI_string_map.h"
#include "mappings.h"
+#include "builder.h"
namespace FN {
@@ -19,7 +20,7 @@ static bool insert_nodes(VTreeMFNetworkBuilder &builder,
const InsertVNodeFunction *inserter = mappings.vnode_inserters.lookup_ptr(idname);
if (inserter != nullptr) {
- (*inserter)(builder, resources, mappings, *vnode);
+ (*inserter)(builder, resources, *vnode);
BLI_assert(builder.data_sockets_of_vnode_are_mapped(*vnode));
}
else if (builder.has_data_sockets(*vnode)) {
@@ -103,14 +104,7 @@ std::unique_ptr<VTreeMFNetwork> generate_vtree_multi_function_network(const Virt
{
const VTreeMultiFunctionMappings &mappings = get_vtree_multi_function_mappings();
- Vector<MFDataType> type_by_vsocket{vtree.socket_count()};
- for (const VSocket *vsocket : vtree.all_sockets()) {
- MFDataType data_type = mappings.data_type_by_idname.lookup_default(vsocket->idname(),
- MFDataType::ForNone());
- type_by_vsocket[vsocket->id()] = data_type;
- }
-
- VTreeMFNetworkBuilder builder(vtree, std::move(type_by_vsocket));
+ VTreeMFNetworkBuilder builder(vtree, mappings);
if (!insert_nodes(builder, resources, mappings)) {
BLI_assert(false);
}
diff --git a/source/blender/functions2/intern/vtree_multi_function_network/mappings.h b/source/blender/functions2/intern/vtree_multi_function_network/mappings.h
index 6af29056a9f..b42e8c7ea51 100644
--- a/source/blender/functions2/intern/vtree_multi_function_network/mappings.h
+++ b/source/blender/functions2/intern/vtree_multi_function_network/mappings.h
@@ -1,10 +1,11 @@
#pragma once
-#include "builder.h"
-
#include "BLI_map.h"
+#include "BLI_string_map.h"
#include "BLI_owned_resources.h"
+#include "FN_vtree_multi_function_network.h"
+
namespace FN {
using BLI::Map;
@@ -12,11 +13,10 @@ using BLI::OwnedResources;
using BLI::StringMap;
struct VTreeMultiFunctionMappings;
+class VTreeMFNetworkBuilder;
-using InsertVNodeFunction = std::function<void(VTreeMFNetworkBuilder &builder,
- OwnedResources &resources,
- const VTreeMultiFunctionMappings &mappings,
- const VNode &vnode)>;
+using InsertVNodeFunction = std::function<void(
+ VTreeMFNetworkBuilder &builder, OwnedResources &resources, const VNode &vnode)>;
using InsertUnlinkedInputFunction = std::function<MFBuilderOutputSocket &(
VTreeMFNetworkBuilder &builder, OwnedResources &resources, const VSocket &vsocket)>;
using InsertImplicitConversionFunction =
diff --git a/source/blender/functions2/intern/vtree_multi_function_network/mappings_nodes.cc b/source/blender/functions2/intern/vtree_multi_function_network/mappings_nodes.cc
index ca648087614..aa0ed527907 100644
--- a/source/blender/functions2/intern/vtree_multi_function_network/mappings_nodes.cc
+++ b/source/blender/functions2/intern/vtree_multi_function_network/mappings_nodes.cc
@@ -1,4 +1,6 @@
#include "mappings.h"
+#include "builder.h"
+
#include "FN_multi_functions.h"
namespace FN {
@@ -14,7 +16,6 @@ T &allocate_resource(const char *name, OwnedResources &resources, Args &&... arg
static void INSERT_vector_math(VTreeMFNetworkBuilder &builder,
OwnedResources &resources,
- const VTreeMultiFunctionMappings &UNUSED(mappings),
const VNode &vnode)
{
const MultiFunction &fn = allocate_resource<FN::MF_AddFloat3s>("vector math function",
@@ -49,7 +50,6 @@ static const MultiFunction &get_vectorized_function(
static void INSERT_float_math(VTreeMFNetworkBuilder &builder,
OwnedResources &resources,
- const VTreeMultiFunctionMappings &UNUSED(mappings),
const VNode &vnode)
{
const MultiFunction &base_fn = allocate_resource<FN::MF_AddFloats>("float math function",
@@ -62,7 +62,6 @@ static void INSERT_float_math(VTreeMFNetworkBuilder &builder,
static void INSERT_combine_vector(VTreeMFNetworkBuilder &builder,
OwnedResources &resources,
- const VTreeMultiFunctionMappings &UNUSED(mappings),
const VNode &vnode)
{
const MultiFunction &base_fn = allocate_resource<FN::MF_CombineVector>("combine vector function",
@@ -74,7 +73,6 @@ static void INSERT_combine_vector(VTreeMFNetworkBuilder &builder,
static void INSERT_separate_vector(VTreeMFNetworkBuilder &builder,
OwnedResources &resources,
- const VTreeMultiFunctionMappings &UNUSED(mappings),
const VNode &vnode)
{
const MultiFunction &base_fn = allocate_resource<FN::MF_SeparateVector>(
@@ -86,11 +84,10 @@ static void INSERT_separate_vector(VTreeMFNetworkBuilder &builder,
static void INSERT_list_length(VTreeMFNetworkBuilder &builder,
OwnedResources &resources,
- const VTreeMultiFunctionMappings &mappings,
const VNode &vnode)
{
char *type_name = RNA_string_get_alloc(vnode.rna(), "active_type", nullptr, 0);
- const CPPType &type = *mappings.cpp_type_by_type_name.lookup(type_name);
+ const CPPType &type = builder.cpp_type_by_name(type_name);
MEM_freeN(type_name);
const MultiFunction &fn = allocate_resource<FN::MF_ListLength>(
@@ -100,11 +97,10 @@ static void INSERT_list_length(VTreeMFNetworkBuilder &builder,
static void INSERT_get_list_element(VTreeMFNetworkBuilder &builder,
OwnedResources &resources,
- const VTreeMultiFunctionMappings &mappings,
const VNode &vnode)
{
char *type_name = RNA_string_get_alloc(vnode.rna(), "active_type", nullptr, 0);
- const CPPType &type = *mappings.cpp_type_by_type_name.lookup(type_name);
+ const CPPType &type = builder.cpp_type_by_name(type_name);
MEM_freeN(type_name);
const MultiFunction &fn = allocate_resource<FN::MF_GetListElement>(
@@ -153,11 +149,10 @@ static MFBuilderOutputSocket &build_pack_list_node(VTreeMFNetworkBuilder &builde
static void INSERT_pack_list(VTreeMFNetworkBuilder &builder,
OwnedResources &resources,
- const VTreeMultiFunctionMappings &mappings,
const VNode &vnode)
{
char *type_name = RNA_string_get_alloc(vnode.rna(), "active_type", nullptr, 0);
- const CPPType &type = *mappings.cpp_type_by_type_name.lookup(type_name);
+ const CPPType &type = builder.cpp_type_by_name(type_name);
MEM_freeN(type_name);
MFBuilderOutputSocket &packed_list_socket = build_pack_list_node(
@@ -167,7 +162,6 @@ static void INSERT_pack_list(VTreeMFNetworkBuilder &builder,
static void INSERT_object_location(VTreeMFNetworkBuilder &builder,
OwnedResources &resources,
- const VTreeMultiFunctionMappings &UNUSED(mappings),
const VNode &vnode)
{
const MultiFunction &fn = allocate_resource<FN::MF_ObjectWorldLocation>(
@@ -177,7 +171,6 @@ static void INSERT_object_location(VTreeMFNetworkBuilder &builder,
static void INSERT_text_length(VTreeMFNetworkBuilder &builder,
OwnedResources &resources,
- const VTreeMultiFunctionMappings &UNUSED(mappings),
const VNode &vnode)
{
const MultiFunction &fn = allocate_resource<FN::MF_TextLength>("text length function",
diff --git a/source/blender/f
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list