[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