Merge pull request #73225 from bruvzg/wchar_to_from
Add GDScript `to_wchar_buffer` and `get_string_from_wchar` functions.
This commit is contained in:
commit
e4e63f976a
|
@ -5034,6 +5034,14 @@ Vector<uint8_t> String::to_utf32_buffer() const {
|
|||
return retval;
|
||||
}
|
||||
|
||||
Vector<uint8_t> String::to_wchar_buffer() const {
|
||||
#ifdef WINDOWS_ENABLED
|
||||
return to_utf16_buffer();
|
||||
#else
|
||||
return to_utf32_buffer();
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef TOOLS_ENABLED
|
||||
/**
|
||||
* "Tools TRanslate". Performs string replacement for internationalization
|
||||
|
|
|
@ -455,6 +455,7 @@ public:
|
|||
Vector<uint8_t> to_utf8_buffer() const;
|
||||
Vector<uint8_t> to_utf16_buffer() const;
|
||||
Vector<uint8_t> to_utf32_buffer() const;
|
||||
Vector<uint8_t> to_wchar_buffer() const;
|
||||
|
||||
String(const char *p_str);
|
||||
String(const wchar_t *p_str);
|
||||
|
|
|
@ -700,6 +700,19 @@ struct _VariantCall {
|
|||
return s;
|
||||
}
|
||||
|
||||
static String func_PackedByteArray_get_string_from_wchar(PackedByteArray *p_instance) {
|
||||
String s;
|
||||
if (p_instance->size() > 0) {
|
||||
const uint8_t *r = p_instance->ptr();
|
||||
#ifdef WINDOWS_ENABLED
|
||||
s.parse_utf16((const char16_t *)r, floor((double)p_instance->size() / (double)sizeof(char16_t)));
|
||||
#else
|
||||
s = String((const char32_t *)r, floor((double)p_instance->size() / (double)sizeof(char32_t)));
|
||||
#endif
|
||||
}
|
||||
return s;
|
||||
}
|
||||
|
||||
static PackedByteArray func_PackedByteArray_compress(PackedByteArray *p_instance, int p_mode) {
|
||||
PackedByteArray compressed;
|
||||
|
||||
|
@ -1721,6 +1734,7 @@ static void _register_variant_builtin_methods() {
|
|||
bind_string_method(to_utf8_buffer, sarray(), varray());
|
||||
bind_string_method(to_utf16_buffer, sarray(), varray());
|
||||
bind_string_method(to_utf32_buffer, sarray(), varray());
|
||||
bind_string_method(to_wchar_buffer, sarray(), varray());
|
||||
|
||||
bind_static_method(String, num_scientific, sarray("number"), varray());
|
||||
bind_static_method(String, num, sarray("number", "decimals"), varray(-1));
|
||||
|
@ -2258,6 +2272,7 @@ static void _register_variant_builtin_methods() {
|
|||
bind_function(PackedByteArray, get_string_from_utf8, _VariantCall::func_PackedByteArray_get_string_from_utf8, sarray(), varray());
|
||||
bind_function(PackedByteArray, get_string_from_utf16, _VariantCall::func_PackedByteArray_get_string_from_utf16, sarray(), varray());
|
||||
bind_function(PackedByteArray, get_string_from_utf32, _VariantCall::func_PackedByteArray_get_string_from_utf32, sarray(), varray());
|
||||
bind_function(PackedByteArray, get_string_from_wchar, _VariantCall::func_PackedByteArray_get_string_from_wchar, sarray(), varray());
|
||||
bind_function(PackedByteArray, hex_encode, _VariantCall::func_PackedByteArray_hex_encode, sarray(), varray());
|
||||
bind_function(PackedByteArray, compress, _VariantCall::func_PackedByteArray_compress, sarray("compression_mode"), varray(0));
|
||||
bind_function(PackedByteArray, decompress, _VariantCall::func_PackedByteArray_decompress, sarray("buffer_size", "compression_mode"), varray(0));
|
||||
|
|
|
@ -328,6 +328,12 @@
|
|||
Converts UTF-8 encoded array to [String]. Slower than [method get_string_from_ascii] but supports UTF-8 encoded data. Use this function if you are unsure about the source of the data. For user input this function should always be preferred. Returns empty string if source array is not valid UTF-8 string.
|
||||
</description>
|
||||
</method>
|
||||
<method name="get_string_from_wchar" qualifiers="const">
|
||||
<return type="String" />
|
||||
<description>
|
||||
Converts wide character ([code]wchar_t[/code], UTF-16 on Windows, UTF-32 on other platforms) encoded array to [String]. Returns empty string if source array is not valid wide string.
|
||||
</description>
|
||||
</method>
|
||||
<method name="has" qualifiers="const">
|
||||
<return type="bool" />
|
||||
<param index="0" name="value" type="int" />
|
||||
|
|
|
@ -946,6 +946,12 @@
|
|||
Converts the string to a [url=https://en.wikipedia.org/wiki/UTF-8]UTF-8[/url] encoded [PackedByteArray]. This method is slightly slower than [method to_ascii_buffer], but supports all UTF-8 characters. For most cases, prefer using this method.
|
||||
</description>
|
||||
</method>
|
||||
<method name="to_wchar_buffer" qualifiers="const">
|
||||
<return type="PackedByteArray" />
|
||||
<description>
|
||||
Converts the string to a [url=https://en.wikipedia.org/wiki/Wide_character]wide character[/url] ([code]wchar_t[/code], UTF-16 on Windows, UTF-32 on other platforms) encoded [PackedByteArray].
|
||||
</description>
|
||||
</method>
|
||||
<method name="trim_prefix" qualifiers="const">
|
||||
<return type="String" />
|
||||
<param index="0" name="prefix" type="String" />
|
||||
|
|
|
@ -853,6 +853,12 @@
|
|||
Converts the string to a [url=https://en.wikipedia.org/wiki/UTF-8]UTF-8[/url] encoded [PackedByteArray]. This method is slightly slower than [method to_ascii_buffer], but supports all UTF-8 characters. For most cases, prefer using this method.
|
||||
</description>
|
||||
</method>
|
||||
<method name="to_wchar_buffer" qualifiers="const">
|
||||
<return type="PackedByteArray" />
|
||||
<description>
|
||||
Converts the string to a [url=https://en.wikipedia.org/wiki/Wide_character]wide character[/url] ([code]wchar_t[/code], UTF-16 on Windows, UTF-32 on other platforms) encoded [PackedByteArray].
|
||||
</description>
|
||||
</method>
|
||||
<method name="trim_prefix" qualifiers="const">
|
||||
<return type="String" />
|
||||
<param index="0" name="prefix" type="String" />
|
||||
|
|
|
@ -1123,7 +1123,7 @@ bool ProjectConverter3To4::test_array_names() {
|
|||
|
||||
// List of excluded functions from builtin types and global namespace, because currently it is not possible to get list of functions from them.
|
||||
// This will be available when https://github.com/godotengine/godot/pull/49053 or similar will be included into Godot.
|
||||
static const char *builtin_types_excluded_functions[] = { "dict_to_inst", "inst_to_dict", "bytes_to_var", "bytes_to_var_with_objects", "db_to_linear", "deg_to_rad", "linear_to_db", "rad_to_deg", "randf_range", "snapped", "str_to_var", "var_to_str", "var_to_bytes", "var_to_bytes_with_objects", "move_toward", "uri_encode", "uri_decode", "remove_at", "get_rotation_quaternion", "limit_length", "grow_side", "is_absolute_path", "is_valid_int", "lerp", "to_ascii_buffer", "to_utf8_buffer", "to_utf32_buffer", "snapped", "remap", "rfind", nullptr };
|
||||
static const char *builtin_types_excluded_functions[] = { "dict_to_inst", "inst_to_dict", "bytes_to_var", "bytes_to_var_with_objects", "db_to_linear", "deg_to_rad", "linear_to_db", "rad_to_deg", "randf_range", "snapped", "str_to_var", "var_to_str", "var_to_bytes", "var_to_bytes_with_objects", "move_toward", "uri_encode", "uri_decode", "remove_at", "get_rotation_quaternion", "limit_length", "grow_side", "is_absolute_path", "is_valid_int", "lerp", "to_ascii_buffer", "to_utf8_buffer", "to_utf32_buffer", "to_wchar_buffer", "snapped", "remap", "rfind", nullptr };
|
||||
for (int current_index = 0; builtin_types_excluded_functions[current_index]; current_index++) {
|
||||
all_functions.insert(builtin_types_excluded_functions[current_index]);
|
||||
}
|
||||
|
|
|
@ -595,6 +595,7 @@ const char *RenamesMap3To4::gdscript_function_renames[][2] = {
|
|||
{ "find_last", "rfind" }, // Array, String
|
||||
{ "to_ascii", "to_ascii_buffer" }, // String
|
||||
{ "to_utf8", "to_utf8_buffer" }, // String
|
||||
{ "to_wchar", "to_wchar_buffer" }, // String
|
||||
|
||||
// @GlobalScope
|
||||
// Remember to add them to the builtin_types_excluded_functions variable, because for now these functions cannot be listed.
|
||||
|
|
Loading…
Reference in New Issue