From 4f66b8d8f7a0b5cd49a412c4041716e4e37c8859 Mon Sep 17 00:00:00 2001 From: alk <45172705+altalk23@users.noreply.github.com> Date: Tue, 22 Nov 2022 16:46:03 +0300 Subject: [PATCH] add operator= to msvc string (#82) * add operator= to msvc string --- codegen/src/BindingGen.cpp | 8 +++++++- loader/include/Geode/c++stl/msvcstl.hpp | 7 +++++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/codegen/src/BindingGen.cpp b/codegen/src/BindingGen.cpp index c5edbbe0..6ce399fa 100644 --- a/codegen/src/BindingGen.cpp +++ b/codegen/src/BindingGen.cpp @@ -8,12 +8,18 @@ namespace { namespace format_strings { )GEN"; char const* class_includes = R"GEN(#pragma once +#include <Geode/platform/platform.hpp> #include <Geode/c++stl/gdstdlib.hpp> #include <cocos2d.h> #include <cocos-ext.h> #include <Geode/GeneratedPredeclare.hpp> #include <Geode/Enums.hpp> +)GEN"; + + char const* class_no_includes = R"GEN(#pragma once +#include <Geode/platform/platform.hpp> + )GEN"; char const* class_include_prereq = R"GEN(#include "{file_name}" @@ -79,7 +85,7 @@ std::string generateBindingHeader(Root& root, ghc::filesystem::path const& singl if (cls.name != "GDString") { single_output += format_strings::class_includes; } else { - single_output += "#pragma once\n#include <Geode/platform/platform.hpp>\n"; + single_output += format_strings::class_no_includes; } for (auto dep : cls.depends) { diff --git a/loader/include/Geode/c++stl/msvcstl.hpp b/loader/include/Geode/c++stl/msvcstl.hpp index 8f0026b1..d7c404da 100644 --- a/loader/include/Geode/c++stl/msvcstl.hpp +++ b/loader/include/Geode/c++stl/msvcstl.hpp @@ -43,6 +43,13 @@ namespace gd { (void)this->winAssign(val.c_str(), val.size()); } + template <class Param> + string& operator=(Params&& param) { + std::string val; + val = std::forward<Params>(param); + (void)this->winAssign(val.c_str(), val.size()); + } + ~string() { (void)this->winDtor(); }