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;
 | |
| } |