[Bf-blender-cvs] [5a524005503] simulation-tree: cleanup
Jacques Lucke
noreply at git.blender.org
Wed Feb 19 16:12:34 CET 2020
Commit: 5a524005503bc2fdc3e94664bfc71d9a5980e004
Author: Jacques Lucke
Date: Wed Feb 19 14:10:51 2020 +0100
Branches: simulation-tree
https://developer.blender.org/rB5a524005503bc2fdc3e94664bfc71d9a5980e004
cleanup
===================================================================
M source/blender/simulations/nodes/my_test_node.cc
===================================================================
diff --git a/source/blender/simulations/nodes/my_test_node.cc b/source/blender/simulations/nodes/my_test_node.cc
index 3cd066c0436..4c5e393d8df 100644
--- a/source/blender/simulations/nodes/my_test_node.cc
+++ b/source/blender/simulations/nodes/my_test_node.cc
@@ -354,124 +354,10 @@ static void free_node(bNode *node)
callbacks.m_free_storage(node->storage);
}
-static void setup_node_base(bNodeType *ntype,
- StringRef idname,
- StringRef ui_name,
- StringRef ui_description,
- DeclareNodeFunc declare_fn)
-{
- memset(ntype, 0, sizeof(bNodeType));
- ntype->minwidth = 20;
- ntype->minheight = 20;
- ntype->maxwidth = 1000;
- ntype->maxheight = 1000;
- ntype->height = 100;
- ntype->width = 140;
- ntype->type = NODE_CUSTOM;
-
- idname.copy(ntype->idname);
- ui_name.copy(ntype->ui_name);
- ui_description.copy(ntype->ui_description);
-
- NodeTypeCallbacks *callbacks = new NodeTypeCallbacks();
- ntype->userdata = (void *)callbacks;
- ntype->free_userdata = [](void *userdata) { delete (NodeTypeCallbacks *)userdata; };
-
- callbacks->m_declare_node = declare_fn;
- callbacks->m_init_storage = []() { return nullptr; };
- callbacks->m_copy_storage = [](void *storage) {
- BLI_assert(storage == nullptr);
- UNUSED_VARS_NDEBUG(storage);
- return nullptr;
- };
- callbacks->m_free_storage = [](void *storage) {
- BLI_assert(storage == nullptr);
- UNUSED_VARS_NDEBUG(storage);
- };
- callbacks->m_draw = [](struct uiLayout *UNUSED(layout),
- struct bContext *UNUSED(C),
- struct PointerRNA *UNUSED(ptr)) {};
- callbacks->m_copy_node = [](bNode *UNUSED(dst_node), const bNode *UNUSED(src_node)) {};
-
- ntype->poll = [](bNodeType *UNUSED(ntype), bNodeTree *UNUSED(ntree)) { return true; };
- ntype->initfunc = init_node;
- ntype->copyfunc = copy_node;
- ntype->freefunc = free_node;
-
- ntype->draw_buttons = [](struct uiLayout *layout, struct bContext *C, struct PointerRNA *ptr) {
- bNode *node = (bNode *)ptr->data;
- NodeTypeCallbacks *callbacks = (NodeTypeCallbacks *)node->typeinfo->userdata;
- callbacks->m_draw(layout, C, ptr);
- };
-
- ntype->draw_nodetype = node_draw_default;
- ntype->draw_nodetype_prepare = node_update_default;
- ntype->select_area_func = node_select_area_default;
- ntype->tweak_area_func = node_tweak_area_default;
- ntype->resize_area_func = node_resize_area_default;
- ntype->draw_buttons_ex = nullptr;
-}
-
-static void setup_node_storage(bNodeType *ntype,
- StringRef storage_name,
- InitStorageFunc init_storage_fn,
- CopyStorageFunc copy_storage_fn,
- FreeStorageFunc free_storage_fn)
-{
- storage_name.copy(ntype->storagename);
- NodeTypeCallbacks *callbacks = (NodeTypeCallbacks *)ntype->userdata;
- callbacks->m_init_storage = init_storage_fn;
- callbacks->m_copy_storage = copy_storage_fn;
- callbacks->m_free_storage = free_storage_fn;
-}
-
-template<typename T>
-static void setup_node_storage(bNodeType *ntype,
- StringRef storage_name,
- TypedInitStorageFunc<T> init_storage_fn)
-{
- setup_node_storage(
- ntype,
- storage_name,
- [init_storage_fn]() {
- void *buffer = MEM_callocN(sizeof(T), __func__);
- init_storage_fn((T *)buffer);
- return buffer;
- },
- [](void *buffer) {
- void *new_buffer = MEM_callocN(sizeof(T), __func__);
- memcpy(new_buffer, buffer, sizeof(T));
- return new_buffer;
- },
- [](void *buffer) { MEM_freeN(buffer); });
-}
-
-static void setup_node_draw(bNodeType *ntype, DrawFunc draw_fn)
-{
- NodeTypeCallbacks *callbacks = (NodeTypeCallbacks *)ntype->userdata;
- callbacks->m_draw = draw_fn;
-}
-
-static void setup_node_copy(bNodeType *ntype, CopyNodeFunc copy_fn)
-{
- NodeTypeCallbacks *callbacks = (NodeTypeCallbacks *)ntype->userdata;
- callbacks->m_copy_node = copy_fn;
-}
-
-template<typename T>
-void setup_node_copy(bNodeType *ntype,
- std::function<void(T *dst_storage, const T *src_storage)> copy_fn)
-{
- setup_node_copy(ntype, [copy_fn](bNode *dst_node, const bNode *src_node) {
- T *dst_storage = get_node_storage<T>(dst_node);
- const T *src_storage = get_node_storage<T>(src_node);
- copy_fn(dst_storage, src_storage);
- });
-}
-
class NodeTypeDefinition {
private:
bNodeType m_ntype;
+ NodeTypeCallbacks *m_callbacks;
public:
NodeTypeDefinition(StringRef idname,
@@ -479,7 +365,58 @@ class NodeTypeDefinition {
StringRef ui_description,
DeclareNodeFunc declare_fn)
{
- setup_node_base(&m_ntype, idname, ui_name, ui_description, declare_fn);
+ bNodeType *ntype = &m_ntype;
+
+ memset(ntype, 0, sizeof(bNodeType));
+ ntype->minwidth = 20;
+ ntype->minheight = 20;
+ ntype->maxwidth = 1000;
+ ntype->maxheight = 1000;
+ ntype->height = 100;
+ ntype->width = 140;
+ ntype->type = NODE_CUSTOM;
+
+ idname.copy(ntype->idname);
+ ui_name.copy(ntype->ui_name);
+ ui_description.copy(ntype->ui_description);
+
+ m_callbacks = new NodeTypeCallbacks();
+ ntype->userdata = (void *)m_callbacks;
+ ntype->free_userdata = [](void *userdata) { delete (NodeTypeCallbacks *)userdata; };
+
+ m_callbacks->m_declare_node = declare_fn;
+ m_callbacks->m_init_storage = []() { return nullptr; };
+ m_callbacks->m_copy_storage = [](void *storage) {
+ BLI_assert(storage == nullptr);
+ UNUSED_VARS_NDEBUG(storage);
+ return nullptr;
+ };
+ m_callbacks->m_free_storage = [](void *storage) {
+ BLI_assert(storage == nullptr);
+ UNUSED_VARS_NDEBUG(storage);
+ };
+ m_callbacks->m_draw = [](struct uiLayout *UNUSED(layout),
+ struct bContext *UNUSED(C),
+ struct PointerRNA *UNUSED(ptr)) {};
+ m_callbacks->m_copy_node = [](bNode *UNUSED(dst_node), const bNode *UNUSED(src_node)) {};
+
+ ntype->poll = [](bNodeType *UNUSED(ntype), bNodeTree *UNUSED(ntree)) { return true; };
+ ntype->initfunc = init_node;
+ ntype->copyfunc = copy_node;
+ ntype->freefunc = free_node;
+
+ ntype->draw_buttons = [](struct uiLayout *layout, struct bContext *C, struct PointerRNA *ptr) {
+ bNode *node = (bNode *)ptr->data;
+ NodeTypeCallbacks *callbacks = (NodeTypeCallbacks *)node->typeinfo->userdata;
+ callbacks->m_draw(layout, C, ptr);
+ };
+
+ ntype->draw_nodetype = node_draw_default;
+ ntype->draw_nodetype_prepare = node_update_default;
+ ntype->select_area_func = node_select_area_default;
+ ntype->tweak_area_func = node_tweak_area_default;
+ ntype->resize_area_func = node_resize_area_default;
+ ntype->draw_buttons_ex = nullptr;
}
void add_dna_storage(StringRef struct_name,
@@ -487,29 +424,48 @@ class NodeTypeDefinition {
CopyStorageFunc copy_storage_fn,
FreeStorageFunc free_storage_fn)
{
- setup_node_storage(&m_ntype, struct_name, init_storage_fn, copy_storage_fn, free_storage_fn);
+ struct_name.copy(m_ntype.storagename);
+ m_callbacks->m_init_storage = init_storage_fn;
+ m_callbacks->m_copy_storage = copy_storage_fn;
+ m_callbacks->m_free_storage = free_storage_fn;
}
template<typename T>
void add_dna_storage(StringRef struct_name, TypedInitStorageFunc<T> init_storage_fn)
{
- setup_node_storage(&m_ntype, struct_name, init_storage_fn);
+ this->add_dna_storage(
+ struct_name,
+ [init_storage_fn]() {
+ void *buffer = MEM_callocN(sizeof(T), __func__);
+ init_storage_fn((T *)buffer);
+ return buffer;
+ },
+ [](void *buffer) {
+ void *new_buffer = MEM_callocN(sizeof(T), __func__);
+ memcpy(new_buffer, buffer, sizeof(T));
+ return new_buffer;
+ },
+ [](void *buffer) { MEM_freeN(buffer); });
}
void add_copy_behavior(CopyNodeFunc copy_fn)
{
- setup_node_copy(&m_ntype, copy_fn);
+ m_callbacks->m_copy_node = copy_fn;
}
template<typename T>
void add_copy_behavior(std::function<void(T *dst_storage, const T *src_storage)> copy_fn)
{
- setup_node_copy(&m_ntype, copy_fn);
+ this->add_copy_behavior([copy_fn](bNode *dst_node, const bNode *src_node) {
+ T *dst_storage = get_node_storage<T>(dst_node);
+ const T *src_storage = get_node_storage<T>(src_node);
+ copy_fn(dst_storage, src_storage);
+ });
}
void add_draw_fn(DrawFunc draw_fn)
{
- setup_node_draw(&m_ntype, draw_fn);
+ m_callbacks->m_draw = draw_fn;
}
void register_type()
More information about the Bf-blender-cvs
mailing list