Commit: 144a90688cbcb225431079ae787e993a52f8c499
Author: Jacques Lucke
Date:   Tue Feb 19 17:54:00 2019 +0100
Branches: functions
https://developer.blender.org/rB144a90688cbcb225431079ae787e993a52f8c499

better lazy init macro

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

M       source/blender/blenlib/BLI_lazy_init.hpp
M       source/blender/functions/c_wrapper.cpp
M       source/blender/functions/types/numeric.cpp

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

diff --git a/source/blender/blenlib/BLI_lazy_init.hpp 
b/source/blender/blenlib/BLI_lazy_init.hpp
index 654674fa1c1..1e7cb9af72f 100644
--- a/source/blender/blenlib/BLI_lazy_init.hpp
+++ b/source/blender/blenlib/BLI_lazy_init.hpp
@@ -1,9 +1,18 @@
-#define LAZY_INIT_NO_ARG(final_ret_type, builder_ret_type, func_name) \
+#define LAZY_INIT__NO_ARG(final_ret_type, builder_ret_type, func_name) \
        static builder_ret_type func_name##_impl(void); \
-       final_ret_type func_name(void); \
        final_ret_type func_name(void) \
        { \
                static builder_ret_type value = func_name##_impl(); \
                return value; \
        } \
        builder_ret_type func_name##_impl(void)
+
+#define LAZY_INIT_STATIC__NO_ARG(final_ret_type, builder_ret_type, func_name) \
+       static final_ret_type func_name(void); \
+       LAZY_INIT__NO_ARG(final_ret_type, builder_ret_type, func_name)
+
+#define LAZY_INIT_REF__NO_ARG(type, func_name) \
+       LAZY_INIT__NO_ARG(type &, type, func_name)
+
+#define LAZY_INIT_REF_STATIC__NO_ARG(type, func_name) \
+       LAZY_INIT_STATIC__NO_ARG(type &, type, func_name)
diff --git a/source/blender/functions/c_wrapper.cpp 
b/source/blender/functions/c_wrapper.cpp
index 6f227a5d4aa..4ecf404571c 100644
--- a/source/blender/functions/c_wrapper.cpp
+++ b/source/blender/functions/c_wrapper.cpp
@@ -240,7 +240,7 @@ class GetFloatListElement : public FN::TupleCallBody {
        }
 };
 
-LAZY_INIT_NO_ARG(FN::SharedFunction&, FN::SharedFunction, 
get__get_float_list_element)
+LAZY_INIT_REF_STATIC__NO_ARG(FN::SharedFunction, get__get_float_list_element)
 {
        auto signature = FN::Signature({
                FN::InputParameter("List", FN::Types::get_float_list_type()),
diff --git a/source/blender/functions/types/numeric.cpp 
b/source/blender/functions/types/numeric.cpp
index b3b4ac231e0..fbf7045c2f4 100644
--- a/source/blender/functions/types/numeric.cpp
+++ b/source/blender/functions/types/numeric.cpp
@@ -3,33 +3,28 @@
 
 namespace FN { namespace Types {
 
-
-       struct Vector {
-               float x, y, z;
-       };
-
-       LAZY_INIT_NO_ARG(SharedType&, SharedType, get_float_type)
+       LAZY_INIT_REF__NO_ARG(SharedType, get_float_type)
        {
                SharedType type = SharedType::New("Float");
                type->extend(new CPPTypeInfoForType<float>());
                return type;
        }
 
-       LAZY_INIT_NO_ARG(SharedType&, SharedType, get_int32_type)
+       LAZY_INIT_REF__NO_ARG(SharedType, get_int32_type)
        {
                SharedType type = SharedType::New("Int32");
                type->extend(new CPPTypeInfoForType<int32_t>());
                return type;
        }
 
-       LAZY_INIT_NO_ARG(SharedType&, SharedType, get_fvec3_type)
+       LAZY_INIT_REF__NO_ARG(SharedType, get_fvec3_type)
        {
                SharedType type = SharedType::New("FloatVector3D");
                type->extend(new CPPTypeInfoForType<Vector>());
                return type;
        }
 
-       LAZY_INIT_NO_ARG(SharedType &, SharedType, get_float_list_type)
+       LAZY_INIT_REF__NO_ARG(SharedType, get_float_list_type)
        {
                SharedType type = SharedType::New("Float List");
                type->extend(new CPPTypeInfoForType<SmallVector<float>>());

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
https://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to