diff --git a/include/natalie/string_object.hpp b/include/natalie/string_object.hpp index 852218fac9..285ac5b61f 100644 --- a/include/natalie/string_object.hpp +++ b/include/natalie/string_object.hpp @@ -39,89 +39,10 @@ class StringObject : public Object { Invalid, }; - static StringObject *create(ClassObject *klass) { - std::lock_guard lock(g_gc_recursive_mutex); - return new StringObject(klass); - } - - static StringObject *create() { - std::lock_guard lock(g_gc_recursive_mutex); - return new StringObject(); - } - - static StringObject *create(NonNullPtr encoding) { - std::lock_guard lock(g_gc_recursive_mutex); - return new StringObject(encoding); - } - - static StringObject *create(const char *str) { - std::lock_guard lock(g_gc_recursive_mutex); - return new StringObject(str); - } - - static StringObject *create(const char *str, NonNullPtr encoding) { - std::lock_guard lock(g_gc_recursive_mutex); - return new StringObject(str, encoding); - } - - static StringObject *create(const char *str, Encoding encoding) { - std::lock_guard lock(g_gc_recursive_mutex); - return new StringObject(str, encoding); - } - - static StringObject *create(const char *str, size_t length) { - std::lock_guard lock(g_gc_recursive_mutex); - return new StringObject(str, length); - } - - static StringObject *create(const char *str, size_t length, NonNullPtr encoding) { - std::lock_guard lock(g_gc_recursive_mutex); - return new StringObject(str, length, encoding); - } - - static StringObject *create(const char *str, size_t length, Encoding encoding) { - std::lock_guard lock(g_gc_recursive_mutex); - return new StringObject(str, length, encoding); - } - - static StringObject *create(const StringObject &other) { - std::lock_guard lock(g_gc_recursive_mutex); - return new StringObject(other); - } - - static StringObject *create(const String &str) { - std::lock_guard lock(g_gc_recursive_mutex); - return new StringObject(str); - } - - static StringObject *create(String &&str) { - std::lock_guard lock(g_gc_recursive_mutex); - return new StringObject(std::move(str)); - } - - static StringObject *create(const String &str, NonNullPtr encoding) { - std::lock_guard lock(g_gc_recursive_mutex); - return new StringObject(str, encoding); - } - - static StringObject *create(String &&str, NonNullPtr encoding) { - std::lock_guard lock(g_gc_recursive_mutex); - return new StringObject(std::move(str), encoding); - } - - static StringObject *create(const String &str, Encoding encoding) { - std::lock_guard lock(g_gc_recursive_mutex); - return new StringObject(str, encoding); - } - - static StringObject *create(String &&str, Encoding encoding) { - std::lock_guard lock(g_gc_recursive_mutex); - return new StringObject(std::move(str), encoding); - } - - static StringObject *create(const StringView &str, NonNullPtr encoding) { + template + static StringObject *create(Args &&...args) { std::lock_guard lock(g_gc_recursive_mutex); - return new StringObject(str, encoding); + return new StringObject(std::forward(args)...); } const String &string() const { return m_string; }