[Bf-blender-cvs] [36310012ff7] functions-experimental-refactor: allow passing destruct_ptr to OwnedResources

Jacques Lucke noreply at git.blender.org
Fri Oct 18 17:53:27 CEST 2019


Commit: 36310012ff71349be443a8602dedad06e6c54d92
Author: Jacques Lucke
Date:   Fri Oct 18 17:08:55 2019 +0200
Branches: functions-experimental-refactor
https://developer.blender.org/rB36310012ff71349be443a8602dedad06e6c54d92

allow passing destruct_ptr to OwnedResources

===================================================================

M	source/blender/blenlib/BLI_owned_resources.h

===================================================================

diff --git a/source/blender/blenlib/BLI_owned_resources.h b/source/blender/blenlib/BLI_owned_resources.h
index 362f06227ed..d468414bb99 100644
--- a/source/blender/blenlib/BLI_owned_resources.h
+++ b/source/blender/blenlib/BLI_owned_resources.h
@@ -35,14 +35,33 @@ class OwnedResources : NonCopyable {
   template<typename T> void add(std::unique_ptr<T> resource, const char *name)
   {
     BLI_assert(resource.get() != nullptr);
+    this->add(
+        resource.release(),
+        [](void *data) {
+          T *typed_data = static_cast<T *>(data);
+          delete typed_data;
+        },
+        name);
+  }
+
+  template<typename T> void add(destruct_ptr<T> resource, const char *name)
+  {
+    BLI_assert(resource.get() != nullptr);
+    this->add(
+        resource.release(),
+        [](void *data) {
+          T *typed_data = static_cast<T *>(data);
+          typed_data->~T();
+        },
+        name);
+  }
 
+  void add(void *userdata, void (*free)(void *), const char *name)
+  {
     ResourceData data;
     data.name = name;
-    data.data = static_cast<void *>(resource.release());
-    data.free = [](void *data) {
-      T *typed_data = static_cast<T *>(data);
-      delete typed_data;
-    };
+    data.data = userdata;
+    data.free = free;
     m_resources.append(data);
   }



More information about the Bf-blender-cvs mailing list