diff --git a/Source/Engine/Scripting/ManagedCLR/MUtils.h b/Source/Engine/Scripting/ManagedCLR/MUtils.h index 34b2f8881..793d946ed 100644 --- a/Source/Engine/Scripting/ManagedCLR/MUtils.h +++ b/Source/Engine/Scripting/ManagedCLR/MUtils.h @@ -109,6 +109,35 @@ struct MConverter } }; +// Converter for StringAnsi. +template<> +struct MConverter +{ + MonoObject* Box(const StringAnsi& data, MonoClass* klass) + { + return (MonoObject*)MUtils::ToString(data); + } + + void Unbox(StringAnsi& result, MonoObject* data) + { + result = MUtils::ToStringAnsi((MonoString*)data); + } + + void ToManagedArray(MonoArray* result, const Span& data) + { + for (int32 i = 0; i < data.Length(); i++) + mono_array_setref(result, i, MUtils::ToString(data[i])); + } + + template + void ToNativeArray(Array& result, MonoArray* data, int32 length) + { + result.Resize(length); + for (int32 i = 0; i < length; i++) + MUtils::ToString(mono_array_get(data, MonoString*, i), result[i]); + } +}; + // Converter for StringView. template<> struct MConverter @@ -506,7 +535,6 @@ namespace MUtils extern void* VariantToManagedArgPtr(Variant& value, const MType& type, bool& failed); extern MonoObject* ToManaged(const Version& value); extern Version ToNative(MonoObject* value); - }; #endif