summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRĂ©mi Verschelde <rverschelde@gmail.com>2022-02-17 10:15:14 +0100
committerGitHub <noreply@github.com>2022-02-17 10:15:14 +0100
commit6a464b53f1cba8f17f7d423cfe9b4b5a92c538d7 (patch)
treec7b80a705e17df7b9e7ea4a394a985240db1c882
parent6f9d3c31d09296008bc47c0df7f9365d9a7a0e1d (diff)
parent65dc3e89c7fbd19a0bafb0eefa60b140c41ababe (diff)
downloadredot-cpp-6a464b53f1cba8f17f7d423cfe9b4b5a92c538d7.tar.gz
Merge pull request #706 from bruvzg/str_errors
-rw-r--r--include/godot_cpp/core/error_macros.hpp6
-rw-r--r--src/core/error_macros.cpp34
2 files changed, 40 insertions, 0 deletions
diff --git a/include/godot_cpp/core/error_macros.hpp b/include/godot_cpp/core/error_macros.hpp
index 5a7f4e9..81ef733 100644
--- a/include/godot_cpp/core/error_macros.hpp
+++ b/include/godot_cpp/core/error_macros.hpp
@@ -32,14 +32,20 @@
#define GODOT_CPP_ERROR_MACROS_HPP
#include <godot_cpp/core/defs.hpp>
+#include <godot_cpp/variant/string.hpp>
#include <cstdint>
namespace godot {
void _err_print_error(const char *p_function, const char *p_file, int p_line, const char *p_error, bool p_is_warning = false);
+void _err_print_error(const char *p_function, const char *p_file, int p_line, const String &p_error, bool p_is_warning = false);
void _err_print_error(const char *p_function, const char *p_file, int p_line, const char *p_error, const char *p_message, bool p_is_warning = false);
+void _err_print_error(const char *p_function, const char *p_file, int p_line, const char *p_error, const String &p_message, bool p_is_warning = false);
+void _err_print_error(const char *p_function, const char *p_file, int p_line, const String &p_error, const char *p_message, bool p_is_warning = false);
+void _err_print_error(const char *p_function, const char *p_file, int p_line, const String &p_error, const String &p_message, bool p_is_warning = false);
void _err_print_index_error(const char *p_function, const char *p_file, int p_line, int64_t p_index, int64_t p_size, const char *p_index_str, const char *p_size_str, const char *p_message = "", bool fatal = false);
+void _err_print_index_error(const char *p_function, const char *p_file, int p_line, int64_t p_index, int64_t p_size, const char *p_index_str, const char *p_size_str, const String &p_message, bool fatal = false);
// Used to strip debug messages in release mode
#ifdef DEBUG_ENABLED
diff --git a/src/core/error_macros.cpp b/src/core/error_macros.cpp
index d0c922e..4ef3f1d 100644
--- a/src/core/error_macros.cpp
+++ b/src/core/error_macros.cpp
@@ -44,14 +44,48 @@ void _err_print_error(const char *p_function, const char *p_file, int p_line, co
}
}
+void _err_print_error(const char *p_function, const char *p_file, int p_line, const String &p_error, const char *p_message, bool p_is_warning) {
+ if (p_is_warning) {
+ internal::gdn_interface->print_warning(p_message, p_function, p_file, p_line);
+ } else {
+ internal::gdn_interface->print_error(p_message, p_function, p_file, p_line);
+ }
+}
+
+void _err_print_error(const char *p_function, const char *p_file, int p_line, const char *p_error, const String &p_message, bool p_is_warning) {
+ if (p_is_warning) {
+ internal::gdn_interface->print_warning(p_message.utf8().get_data(), p_function, p_file, p_line);
+ } else {
+ internal::gdn_interface->print_error(p_message.utf8().get_data(), p_function, p_file, p_line);
+ }
+}
+
+void _err_print_error(const char *p_function, const char *p_file, int p_line, const String &p_error, const String &p_message, bool p_is_warning) {
+ if (p_is_warning) {
+ internal::gdn_interface->print_warning(p_message.utf8().get_data(), p_function, p_file, p_line);
+ } else {
+ internal::gdn_interface->print_error(p_message.utf8().get_data(), p_function, p_file, p_line);
+ }
+}
+
void _err_print_error(const char *p_function, const char *p_file, int p_line, const char *p_error, bool p_is_warning) {
_err_print_error(p_function, p_file, p_line, "", p_error, p_is_warning);
}
+void _err_print_error(const char *p_function, const char *p_file, int p_line, const String &p_error, bool p_is_warning) {
+ _err_print_error(p_function, p_file, p_line, "", p_error, p_is_warning);
+}
+
void _err_print_index_error(const char *p_function, const char *p_file, int p_line, int64_t p_index, int64_t p_size, const char *p_index_str, const char *p_size_str, const char *p_message, bool fatal) {
std::string fstr(fatal ? "FATAL: " : "");
std::string err(fstr + "Index " + p_index_str + " = " + std::to_string(p_index) + " is out of bounds (" + p_size_str + " = " + std::to_string(p_size) + ").");
_err_print_error(p_function, p_file, p_line, err.c_str(), p_message);
}
+void _err_print_index_error(const char *p_function, const char *p_file, int p_line, int64_t p_index, int64_t p_size, const char *p_index_str, const char *p_size_str, const String &p_message, bool fatal) {
+ std::string fstr(fatal ? "FATAL: " : "");
+ std::string err(fstr + "Index " + p_index_str + " = " + std::to_string(p_index) + " is out of bounds (" + p_size_str + " = " + std::to_string(p_size) + ").");
+ _err_print_error(p_function, p_file, p_line, err.c_str(), p_message);
+}
+
} // namespace godot