Merge pull request #1018 from vnen/typed-array-constructor

Support typed array default values in extension API
pull/1023/head
Rémi Verschelde 2023-01-28 19:43:04 +01:00 committed by GitHub
commit 0f3a0913f1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 6 additions and 4 deletions

View File

@ -2129,6 +2129,8 @@ def correct_default_value(value, type_name):
return value_map[value] return value_map[value]
if value == "": if value == "":
return f"{type_name}()" return f"{type_name}()"
if value.startswith("Array["):
return f"{{}}"
return value return value

View File

@ -108,7 +108,7 @@ public:
template <class T> template <class T>
void memdelete(T *p_class, typename std::enable_if<!std::is_base_of_v<godot::Wrapped, T>>::type * = nullptr) { void memdelete(T *p_class, typename std::enable_if<!std::is_base_of_v<godot::Wrapped, T>>::type * = nullptr) {
if (!__has_trivial_destructor(T)) { if (!std::is_trivially_destructible<T>::value) {
p_class->~T(); p_class->~T();
} }
@ -122,7 +122,7 @@ void memdelete(T *p_class) {
template <class T, class A> template <class T, class A>
void memdelete_allocator(T *p_class) { void memdelete_allocator(T *p_class) {
if (!__has_trivial_destructor(T)) { if (!std::is_trivially_destructible<T>::value) {
p_class->~T(); p_class->~T();
} }
@ -145,7 +145,7 @@ T *memnew_arr_template(size_t p_elements, const char *p_descr = "") {
ERR_FAIL_COND_V(!mem, failptr); ERR_FAIL_COND_V(!mem, failptr);
*(mem - 1) = p_elements; *(mem - 1) = p_elements;
if (!__has_trivial_constructor(T)) { if (!std::is_trivially_destructible<T>::value) {
T *elems = (T *)mem; T *elems = (T *)mem;
/* call operator new */ /* call operator new */
@ -161,7 +161,7 @@ template <typename T>
void memdelete_arr(T *p_class) { void memdelete_arr(T *p_class) {
uint64_t *ptr = (uint64_t *)p_class; uint64_t *ptr = (uint64_t *)p_class;
if (!__has_trivial_destructor(T)) { if (!std::is_trivially_destructible<T>::value) {
uint64_t elem_count = *(ptr - 1); uint64_t elem_count = *(ptr - 1);
for (uint64_t i = 0; i < elem_count; i++) { for (uint64_t i = 0; i < elem_count; i++) {