summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDavid Snopek <dsnopek@gmail.com>2024-10-29 13:09:45 -0500
committerGitHub <noreply@github.com>2024-10-29 13:09:45 -0500
commit7fca5458854c30fed862609cf516910e432508c1 (patch)
tree957304f3c4004fd947c5a83c60273a40c4916f5f
parentdfdc0474597a5c7918a3101529f0e2c69cf18d8b (diff)
parent536ea8561e00b8d6183ddc522476dd232c1d3bef (diff)
downloadredot-cpp-7fca5458854c30fed862609cf516910e432508c1.tar.gz
Merge pull request #1574 from dsnopek/unicode-class-names
Allow unicode class names
-rw-r--r--.github/workflows/ci.yml15
-rw-r--r--include/godot_cpp/classes/wrapped.hpp2
-rw-r--r--test/CMakeLists.txt1
-rw-r--r--test/project/main.gd4
-rw-r--r--test/src/example.cpp8
-rw-r--r--test/src/example.h10
-rw-r--r--test/src/register_types.cpp1
7 files changed, 34 insertions, 7 deletions
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 13b7243..a9c5090 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -6,6 +6,9 @@ env:
GODOT_BASE_BRANCH: master
# Used to select the version of Godot to run the tests with.
GODOT_TEST_VERSION: master
+ # Use UTF-8 on Linux.
+ LANG: en_US.UTF-8
+ LC_ALL: en_US.UTF-8
concurrency:
group: ci-${{github.actor}}-${{github.head_ref || github.run_number}}-${{github.ref}}
@@ -20,7 +23,7 @@ jobs:
matrix:
include:
- name: 🐧 Linux (GCC)
- os: ubuntu-20.04
+ os: ubuntu-22.04
platform: linux
artifact-name: godot-cpp-linux-glibc2.27-x86_64-release
artifact-path: bin/libgodot-cpp.linux.template_release.x86_64.a
@@ -28,7 +31,7 @@ jobs:
cache-name: linux-x86_64
- name: 🐧 Linux (GCC, Double Precision)
- os: ubuntu-20.04
+ os: ubuntu-22.04
platform: linux
artifact-name: godot-cpp-linux-glibc2.27-x86_64-double-release
artifact-path: bin/libgodot-cpp.linux.template_release.double.x86_64.a
@@ -63,7 +66,7 @@ jobs:
cache-name: macos-universal
- name: 🀖 Android (arm64)
- os: ubuntu-20.04
+ os: ubuntu-22.04
platform: android
artifact-name: godot-cpp-android-arm64-release
artifact-path: bin/libgodot-cpp.android.template_release.arm64.a
@@ -81,7 +84,7 @@ jobs:
cache-name: ios-arm64
- name: 🌐 Web (wasm32)
- os: ubuntu-20.04
+ os: ubuntu-22.04
platform: web
artifact-name: godot-cpp-web-wasm32-release
artifact-path: bin/libgodot-cpp.web.template_release.wasm32.a
@@ -206,7 +209,7 @@ jobs:
linux-cmake:
name: 🐧 Build (Linux, GCC, CMake)
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
@@ -230,7 +233,7 @@ jobs:
linux-cmake-ninja:
name: 🐧 Build (Linux, GCC, CMake Ninja)
- runs-on: ubuntu-20.04
+ runs-on: ubuntu-22.04
steps:
- name: Checkout
uses: actions/checkout@v4
diff --git a/include/godot_cpp/classes/wrapped.hpp b/include/godot_cpp/classes/wrapped.hpp
index a0bcec7..12198b5 100644
--- a/include/godot_cpp/classes/wrapped.hpp
+++ b/include/godot_cpp/classes/wrapped.hpp
@@ -245,7 +245,7 @@ public:
} \
\
static const ::godot::StringName &get_class_static() { \
- static const ::godot::StringName string_name = ::godot::StringName(#m_class); \
+ static const ::godot::StringName string_name = ::godot::StringName(U## #m_class); \
return string_name; \
} \
\
diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
index 42ea6e0..f1c4c0d 100644
--- a/test/CMakeLists.txt
+++ b/test/CMakeLists.txt
@@ -38,6 +38,7 @@ if ("${CMAKE_CXX_COMPILER_ID}" STREQUAL "MSVC")
# using Visual Studio C++
set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} /WX") # /GF /MP
set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} /DTYPED_METHOD_BIND")
+ set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} /utf-8")
if(CMAKE_BUILD_TYPE MATCHES Debug)
set(GODOT_COMPILE_FLAGS "${GODOT_COMPILE_FLAGS} /MDd") # /Od /RTC1 /Zi
diff --git a/test/project/main.gd b/test/project/main.gd
index 386d188..b75dc6e 100644
--- a/test/project/main.gd
+++ b/test/project/main.gd
@@ -279,6 +279,10 @@ func _ready():
assert_equal(library_path, ProjectSettings.globalize_path(library_path))
assert_equal(FileAccess.file_exists(library_path), true)
+ # Test a class with a unicode name.
+ var przykład = ExamplePrzykład.new()
+ assert_equal(przykład.get_the_word(), "słowo to przykład")
+
exit_with_status()
func _on_Example_custom_signal(signal_name, value):
diff --git a/test/src/example.cpp b/test/src/example.cpp
index 692d004..f51db57 100644
--- a/test/src/example.cpp
+++ b/test/src/example.cpp
@@ -755,3 +755,11 @@ ExampleRuntime::ExampleRuntime() {
ExampleRuntime::~ExampleRuntime() {
}
+
+void ExamplePrzykład::_bind_methods() {
+ ClassDB::bind_method(D_METHOD("get_the_word"), &ExamplePrzykład::get_the_word);
+}
+
+String ExamplePrzykład::get_the_word() const {
+ return U"słowo to przykład";
+}
diff --git a/test/src/example.h b/test/src/example.h
index a28deff..3ce390a 100644
--- a/test/src/example.h
+++ b/test/src/example.h
@@ -275,4 +275,14 @@ public:
~ExampleRuntime();
};
+class ExamplePrzykład : public RefCounted {
+ GDCLASS(ExamplePrzykład, RefCounted);
+
+protected:
+ static void _bind_methods();
+
+public:
+ String get_the_word() const;
+};
+
#endif // EXAMPLE_CLASS_H
diff --git a/test/src/register_types.cpp b/test/src/register_types.cpp
index 7cfe689..d9290c8 100644
--- a/test/src/register_types.cpp
+++ b/test/src/register_types.cpp
@@ -30,6 +30,7 @@ void initialize_example_module(ModuleInitializationLevel p_level) {
GDREGISTER_CLASS(ExampleBase);
GDREGISTER_CLASS(ExampleChild);
GDREGISTER_RUNTIME_CLASS(ExampleRuntime);
+ GDREGISTER_CLASS(ExamplePrzykład);
}
void uninitialize_example_module(ModuleInitializationLevel p_level) {