Remove dependency of variant.h in print_string.h

Co-authored-by: Lukas Tenbrink <lukas.tenbrink@gmail.com>
Co-authored-by: A Thousand Ships <96648715+AThousandShips@users.noreply.github.com>
This commit is contained in:
Yufeng Ying
2025-06-19 18:22:49 +08:00
parent 9dde5688a5
commit 05dae23f18
6 changed files with 25 additions and 26 deletions

View File

@ -30,7 +30,9 @@
#pragma once
#include "core/variant/variant.h"
#include "core/string/ustring.h"
class Variant;
extern void (*_print_func)(String);
@ -45,12 +47,7 @@ struct PrintHandlerList {
PrintHandlerList() {}
};
String stringify_variants(const Variant &p_var);
template <typename... Args>
String stringify_variants(const Variant &p_var, Args... p_args) {
return p_var.operator String() + " " + stringify_variants(p_args...);
}
String stringify_variants(const Span<Variant> &p_vars);
void add_print_handler(PrintHandlerList *p_handler);
void remove_print_handler(const PrintHandlerList *p_handler);
@ -69,20 +66,14 @@ extern bool is_print_verbose_enabled();
} \
}
inline void print_line(const Variant &v) {
__print_line(stringify_variants(v));
}
inline void print_line_rich(const Variant &v) {
__print_line_rich(stringify_variants(v));
template <typename... Args>
void print_line(Args... p_args) {
Variant variants[sizeof...(p_args)] = { p_args... };
__print_line(stringify_variants(Span(variants)));
}
template <typename... Args>
void print_line(const Variant &p_var, Args... p_args) {
__print_line(stringify_variants(p_var, p_args...));
}
template <typename... Args>
void print_line_rich(const Variant &p_var, Args... p_args) {
__print_line_rich(stringify_variants(p_var, p_args...));
void print_line_rich(Args... p_args) {
Variant variants[sizeof...(p_args)] = { p_args... };
__print_line_rich(stringify_variants(Span(variants)));
}