[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