74 lines
2.7 KiB
C#
74 lines
2.7 KiB
C#
|
|
using System;
|
|||
|
|
using EpicGames.UHT.Types;
|
|||
|
|
using UnrealSharpScriptGenerator.Utilities;
|
|||
|
|
|
|||
|
|
namespace UnrealSharpScriptGenerator.PropertyTranslators;
|
|||
|
|
|
|||
|
|
public class StringPropertyTranslator : PropertyTranslator
|
|||
|
|
{
|
|||
|
|
public StringPropertyTranslator() : base(EPropertyUsageFlags.Any, PropertyKind.String)
|
|||
|
|
{
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override bool CacheProperty => true;
|
|||
|
|
|
|||
|
|
public override bool CanExport(UhtProperty property)
|
|||
|
|
{
|
|||
|
|
return property is UhtStrProperty;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override string GetManagedType(UhtProperty property)
|
|||
|
|
{
|
|||
|
|
return "string";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override string GetMarshaller(UhtProperty property)
|
|||
|
|
{
|
|||
|
|
return "StringMarshaller";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override string ExportMarshallerDelegates(UhtProperty property)
|
|||
|
|
{
|
|||
|
|
return "StringMarshaller.ToNative, StringMarshaller.FromNative";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override string GetNullValue(UhtProperty property)
|
|||
|
|
{
|
|||
|
|
return "\"\"";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ExportFunctionReturnStatement(GeneratorStringBuilder builder, UhtProperty property, string nativePropertyName,
|
|||
|
|
string functionName, string paramsCallString)
|
|||
|
|
{
|
|||
|
|
builder.AppendLine($"return {ExporterCallbacks.FStringCallbacks}.CallConvertTCHARToUTF8(Invoke_{functionName}(NativeObject, {functionName}_NativeFunction{paramsCallString}));");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ExportCleanupMarshallingBuffer(GeneratorStringBuilder builder, UhtProperty property,
|
|||
|
|
string paramName)
|
|||
|
|
{
|
|||
|
|
builder.AppendLine($"StringMarshaller.DestructInstance({paramName}_NativePtr, 0);");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ExportFromNative(GeneratorStringBuilder builder, UhtProperty property, string propertyName, string assignmentOrReturn,
|
|||
|
|
string sourceBuffer, string offset, bool bCleanupSourceBuffer, bool reuseRefMarshallers)
|
|||
|
|
{
|
|||
|
|
if (!reuseRefMarshallers)
|
|||
|
|
{
|
|||
|
|
builder.AppendLine($"IntPtr {propertyName}_NativePtr = IntPtr.Add({sourceBuffer},{offset});");
|
|||
|
|
}
|
|||
|
|
builder.AppendLine($"{assignmentOrReturn} StringMarshaller.FromNative({propertyName}_NativePtr,0);");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override void ExportToNative(GeneratorStringBuilder builder, UhtProperty property, string propertyName, string destinationBuffer, string offset, string source)
|
|||
|
|
{
|
|||
|
|
builder.AppendLine($"IntPtr {propertyName}_NativePtr = IntPtr.Add({destinationBuffer}, {offset});");
|
|||
|
|
builder.AppendLine($"StringMarshaller.ToNative({propertyName}_NativePtr,0,{source});");
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override string ConvertCPPDefaultValue(string defaultValue, UhtFunction function, UhtProperty parameter)
|
|||
|
|
{
|
|||
|
|
return "\"" + defaultValue + "\"";
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public override bool CanSupportGenericType(UhtProperty property) => false;
|
|||
|
|
}
|