[Bf-blender-cvs] [b65a28b9d7e] functions: use make_unique in some places
Jacques Lucke
noreply at git.blender.org
Thu Sep 26 16:51:53 CEST 2019
Commit: b65a28b9d7eaa7b7e7cbd5ac1755e4c079664066
Author: Jacques Lucke
Date: Thu Sep 26 16:18:53 2019 +0200
Branches: functions
https://developer.blender.org/rBb65a28b9d7eaa7b7e7cbd5ac1755e4c079664066
use make_unique in some places
===================================================================
M source/blender/blenlib/BLI_memory_utils_cxx.h
M source/blender/functions/frontends/data_flow_nodes/function_generation.cpp
M source/blender/functions/frontends/data_flow_nodes/mappings.cpp
M source/blender/functions/frontends/data_flow_nodes/unlinked_input_inserters.cpp
M source/blender/simulations/bparticles/particle_function.cpp
M source/blender/simulations/bparticles/particle_function.hpp
M source/blender/simulations/bparticles/particle_function_builder.cpp
===================================================================
diff --git a/source/blender/blenlib/BLI_memory_utils_cxx.h b/source/blender/blenlib/BLI_memory_utils_cxx.h
index 22f333c6303..c814b9dce3e 100644
--- a/source/blender/blenlib/BLI_memory_utils_cxx.h
+++ b/source/blender/blenlib/BLI_memory_utils_cxx.h
@@ -79,6 +79,11 @@ template<typename T> void relocate_n(T *src, uint n, T *dst)
destruct_n(src, n);
}
+template<typename T, typename... Args> std::unique_ptr<T> make_unique(Args &&... args)
+{
+ return std::unique_ptr<T>(new T(std::forward<Args>(args)...));
+}
+
} // namespace BLI
#endif /* __BLI_MEMORY_UTILS_CXX_H__ */
diff --git a/source/blender/functions/frontends/data_flow_nodes/function_generation.cpp b/source/blender/functions/frontends/data_flow_nodes/function_generation.cpp
index 3cde6f3ef3a..462a6f7ef32 100644
--- a/source/blender/functions/frontends/data_flow_nodes/function_generation.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/function_generation.cpp
@@ -34,7 +34,7 @@ static void find_interface_sockets(VirtualNodeTree &vtree,
Optional<SharedFunction> generate_function(bNodeTree *btree)
{
- auto vtree = std::unique_ptr<VirtualNodeTree>(new VirtualNodeTree());
+ auto vtree = make_unique<VirtualNodeTree>();
vtree->add_all_of_tree(btree);
vtree->freeze_and_index();
diff --git a/source/blender/functions/frontends/data_flow_nodes/mappings.cpp b/source/blender/functions/frontends/data_flow_nodes/mappings.cpp
index 7dba845f28d..dced74ecc7c 100644
--- a/source/blender/functions/frontends/data_flow_nodes/mappings.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/mappings.cpp
@@ -8,28 +8,28 @@ namespace DataFlowNodes {
BLI_LAZY_INIT(std::unique_ptr<TypeMappings>, MAPPING_types)
{
- auto mappings = std::unique_ptr<TypeMappings>(new TypeMappings());
+ auto mappings = make_unique<TypeMappings>();
REGISTER_type_mappings(mappings);
return mappings;
}
BLI_LAZY_INIT(std::unique_ptr<NodeInserters>, MAPPING_node_inserters)
{
- auto inserters = std::unique_ptr<NodeInserters>(new NodeInserters());
+ auto inserters = make_unique<NodeInserters>();
REGISTER_node_inserters(inserters);
return inserters;
}
BLI_LAZY_INIT(std::unique_ptr<SocketLoaders>, MAPPING_socket_loaders)
{
- auto loaders = std::unique_ptr<SocketLoaders>(new SocketLoaders());
+ auto loaders = make_unique<SocketLoaders>();
REGISTER_socket_loaders(loaders);
return loaders;
}
BLI_LAZY_INIT(std::unique_ptr<LinkInserters>, MAPPING_link_inserters)
{
- auto inserters = std::unique_ptr<LinkInserters>(new LinkInserters());
+ auto inserters = make_unique<LinkInserters>();
REGISTER_conversion_inserters(inserters);
return inserters;
}
diff --git a/source/blender/functions/frontends/data_flow_nodes/unlinked_input_inserters.cpp b/source/blender/functions/frontends/data_flow_nodes/unlinked_input_inserters.cpp
index c0c7f371b0c..6a56cb0e13a 100644
--- a/source/blender/functions/frontends/data_flow_nodes/unlinked_input_inserters.cpp
+++ b/source/blender/functions/frontends/data_flow_nodes/unlinked_input_inserters.cpp
@@ -167,13 +167,11 @@ void ConstantInputsHandler::insert(VTreeDataGraphBuilder &builder,
SharedFunction fn = fn_builder.build("Unlinked Inputs");
- std::unique_ptr<TupleMeta> inputs_meta = std::unique_ptr<TupleMeta>(
- new TupleMeta(fn->output_types()));
+ std::unique_ptr<TupleMeta> inputs_meta = make_unique<TupleMeta>(fn->output_types());
- auto inputs_tuple_data_init = std::unique_ptr<Array<char>>(
- new Array<char>(inputs_meta->size_of_data_and_init()));
- std::unique_ptr<Tuple> inputs_tuple = std::unique_ptr<Tuple>(
- new Tuple(*inputs_meta, (void *)inputs_tuple_data_init->begin()));
+ auto inputs_tuple_data_init = make_unique<Array<char>>(inputs_meta->size_of_data_and_init());
+ std::unique_ptr<Tuple> inputs_tuple = make_unique<Tuple>(
+ *inputs_meta, (void *)inputs_tuple_data_init->begin());
ConstantOutput &tuple_call_body = *fn->add_body<ConstantOutput>();
ConstantOutputGen &build_ir_body = *fn->add_body<ConstantOutputGen>();
diff --git a/source/blender/simulations/bparticles/particle_function.cpp b/source/blender/simulations/bparticles/particle_function.cpp
index 378e1e03a23..e3a8f281694 100644
--- a/source/blender/simulations/bparticles/particle_function.cpp
+++ b/source/blender/simulations/bparticles/particle_function.cpp
@@ -91,7 +91,7 @@ std::unique_ptr<ParticleFunctionResult> ParticleFunction::compute(ArrayRef<uint>
{
uint parameter_amount = m_parameter_depends_on_particle.size();
- ParticleFunctionResult *result = new ParticleFunctionResult();
+ auto result = make_unique<ParticleFunctionResult>();
result->m_buffers.append_n_times(nullptr, parameter_amount);
result->m_only_first.append_n_times(false, parameter_amount);
result->m_strides.append_n_times(0, parameter_amount);
@@ -100,10 +100,10 @@ std::unique_ptr<ParticleFunctionResult> ParticleFunction::compute(ArrayRef<uint>
result->m_output_indices = m_output_indices;
result->m_pindices = pindices;
- this->init_without_deps(result);
- this->init_with_deps(result, pindices, attributes, particle_times, action_context);
+ this->init_without_deps(result.get());
+ this->init_with_deps(result.get(), pindices, attributes, particle_times, action_context);
- return std::unique_ptr<ParticleFunctionResult>(result);
+ return result;
}
void ParticleFunction::init_without_deps(ParticleFunctionResult *result)
diff --git a/source/blender/simulations/bparticles/particle_function.hpp b/source/blender/simulations/bparticles/particle_function.hpp
index 6b314e1bc48..7ed281ba092 100644
--- a/source/blender/simulations/bparticles/particle_function.hpp
+++ b/source/blender/simulations/bparticles/particle_function.hpp
@@ -10,6 +10,7 @@
namespace BParticles {
using BLI::ArrayRef;
+using BLI::make_unique;
using BLI::Optional;
using BLI::TemporaryArray;
using BLI::TemporaryVector;
diff --git a/source/blender/simulations/bparticles/particle_function_builder.cpp b/source/blender/simulations/bparticles/particle_function_builder.cpp
index be65e6861dd..cda1fb71038 100644
--- a/source/blender/simulations/bparticles/particle_function_builder.cpp
+++ b/source/blender/simulations/bparticles/particle_function_builder.cpp
@@ -246,9 +246,8 @@ static Optional<std::unique_ptr<ParticleFunction>> create_particle_function_from
SharedFunction fn_with_deps = create_function__with_deps(
data_graph, name, sockets_with_deps, dependencies, input_providers);
- ParticleFunction *particle_fn = new ParticleFunction(
+ return make_unique<ParticleFunction>(
fn_without_deps, fn_with_deps, input_providers, depends_on_particle_flags);
- return std::unique_ptr<ParticleFunction>(particle_fn);
}
Optional<std::unique_ptr<ParticleFunction>> create_particle_function(VirtualNode *vnode,
More information about the Bf-blender-cvs
mailing list