[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