From 2b815df3c19499f9fcf1575cfce1477876030e81 Mon Sep 17 00:00:00 2001 From: Juan Linietsky Date: Sun, 8 Jan 2023 00:55:54 +0100 Subject: Use BitField<> in core type masks * All core types masks are now correctly marked as bitfields. * The enum hacks in MouseButtonMask and many other types are gone. This ensures that binders to other languages non C++ can actually implement type safe bitmasks. * Most bitmask operations replaced by functions in BitField<> * Key is still a problem because its enum and mask at the same time. While it kind of works in C++, this most likely can't be implemented safely in other languages and will have to be changed at some point. Mostly left as-is. * Documentation and API dump updated to reflect bitfields in core types. --- core/extension/extension_api_dump.cpp | 2 ++ 1 file changed, 2 insertions(+) (limited to 'core/extension/extension_api_dump.cpp') diff --git a/core/extension/extension_api_dump.cpp b/core/extension/extension_api_dump.cpp index 1957ad987a..312064a36c 100644 --- a/core/extension/extension_api_dump.cpp +++ b/core/extension/extension_api_dump.cpp @@ -463,12 +463,14 @@ Dictionary GDExtensionAPIDump::generate_extension_api() { int64_t value = CoreConstants::get_global_constant_value(i); String enum_name = CoreConstants::get_global_constant_enum(i); String name = CoreConstants::get_global_constant_name(i); + bool bitfield = CoreConstants::is_global_constant_bitfield(i); if (!enum_name.is_empty()) { enum_list[enum_name].push_back(Pair(name, value)); } else { Dictionary d; d["name"] = name; d["value"] = value; + d["is_bitfield"] = bitfield; constants.push_back(d); } } -- cgit v1.2.3