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