[Bf-blender-cvs] [0e0f6a92161] functions: provide faster access to builtin CPPTypes

Jacques Lucke noreply at git.blender.org
Fri Feb 14 11:06:03 CET 2020


Commit: 0e0f6a92161a890f71d01d45a204a9b26e4066f3
Author: Jacques Lucke
Date:   Fri Feb 14 10:59:37 2020 +0100
Branches: functions
https://developer.blender.org/rB0e0f6a92161a890f71d01d45a204a9b26e4066f3

provide faster access to builtin CPPTypes

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

M	source/blender/functions/FN_cpp_type.h
M	source/blender/functions/intern/cpp_types.cc

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

diff --git a/source/blender/functions/FN_cpp_type.h b/source/blender/functions/FN_cpp_type.h
index 49d5f389b6a..957dce1cbf4 100644
--- a/source/blender/functions/FN_cpp_type.h
+++ b/source/blender/functions/FN_cpp_type.h
@@ -369,6 +369,8 @@ class CPPType {
 };
 
 template<typename T> const CPPType &CPP_TYPE();
+extern const CPPType &CPPType_float;
+extern const CPPType &CPPType_int32;
 
 }  // namespace FN
 
diff --git a/source/blender/functions/intern/cpp_types.cc b/source/blender/functions/intern/cpp_types.cc
index 119b2ee80d1..f3e15559777 100644
--- a/source/blender/functions/intern/cpp_types.cc
+++ b/source/blender/functions/intern/cpp_types.cc
@@ -198,16 +198,18 @@ static std::unique_ptr<const CPPType> create_cpp_type(StringRef name,
 
 #define MAKE_CPP_TYPE(IDENTIFIER, TYPE_NAME) \
   static TYPE_NAME default_value_##IDENTIFIER; \
-  static std::unique_ptr<const CPPType> CPPTYPE_##IDENTIFIER = create_cpp_type<TYPE_NAME>( \
-      STRINGIFY(IDENTIFIER), BLI_RAND_PER_LINE_UINT32, default_value_##IDENTIFIER); \
+  static std::unique_ptr<const CPPType> CPPTYPE_##IDENTIFIER##_owner = \
+      create_cpp_type<TYPE_NAME>( \
+          STRINGIFY(IDENTIFIER), BLI_RAND_PER_LINE_UINT32, default_value_##IDENTIFIER); \
+  const CPPType &CPPType_##IDENTIFIER = *CPPTYPE_##IDENTIFIER##_owner; \
   template<> const CPPType &CPP_TYPE<TYPE_NAME>() \
   { \
-    return *CPPTYPE_##IDENTIFIER; \
+    return CPPType_##IDENTIFIER; \
   }
 
 MAKE_CPP_TYPE(float, float)
-MAKE_CPP_TYPE(uint32_t, uint32_t)
-MAKE_CPP_TYPE(uint8_t, uint8_t)
+MAKE_CPP_TYPE(uint32, uint32_t)
+MAKE_CPP_TYPE(uint8, uint8_t)
 MAKE_CPP_TYPE(bool, bool)
 MAKE_CPP_TYPE(ObjectIDHandle, BKE::ObjectIDHandle)
 MAKE_CPP_TYPE(ImageIDHandle, BKE::ImageIDHandle)



More information about the Bf-blender-cvs mailing list