Add support for StringAnsi in scripting api

This commit is contained in:
Wojciech Figat
2022-10-26 15:00:39 +02:00
parent 19f1c4251c
commit 0dec70847f

View File

@@ -109,6 +109,35 @@ struct MConverter<String>
}
};
// Converter for StringAnsi.
template<>
struct MConverter<StringAnsi>
{
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<StringAnsi>& data)
{
for (int32 i = 0; i < data.Length(); i++)
mono_array_setref(result, i, MUtils::ToString(data[i]));
}
template<typename AllocationType = HeapAllocation>
void ToNativeArray(Array<StringAnsi, AllocationType>& 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<StringView>
@@ -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