112 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
		
		
			
		
	
	
			112 lines
		
	
	
		
			3.1 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
|   | #if UNITY_ANDROID && !UNITY_EDITOR | ||
|  | using System.Runtime.InteropServices; | ||
|  | 
 | ||
|  | namespace Burst.Compiler.IL.Tests | ||
|  | { | ||
|  |     public class DllImportAndroid | ||
|  |     { | ||
|  |         public unsafe struct HandleStruct | ||
|  |         { | ||
|  |             public void* Handle; | ||
|  |         } | ||
|  | 
 | ||
|  |         public struct NestedHandleStruct | ||
|  |         { | ||
|  |             public HandleStruct Handle; | ||
|  |         } | ||
|  | 
 | ||
|  |         public unsafe struct TypedHandleStruct | ||
|  |         { | ||
|  |             public byte* Handle; | ||
|  |         } | ||
|  | 
 | ||
|  |         public struct IntInStruct | ||
|  |         { | ||
|  |             public int Handle; | ||
|  |         } | ||
|  | 
 | ||
|  |         public struct LongInStruct | ||
|  |         { | ||
|  |             public long Handle; | ||
|  |         } | ||
|  | 
 | ||
|  |         [DllImport("burst-dllimport-native")] | ||
|  |         public static extern void allVoid(); | ||
|  | 
 | ||
|  |         [TestCompiler] | ||
|  |         public static void AllVoid() | ||
|  |         { | ||
|  |             allVoid(); | ||
|  |         } | ||
|  | 
 | ||
|  |         [DllImport("burst-dllimport-native")] | ||
|  |         public static extern int incrementByOne(int x); | ||
|  | 
 | ||
|  |         [TestCompiler] | ||
|  |         public static int UseDllImportedFunction() | ||
|  |         { | ||
|  |             return incrementByOne(41); | ||
|  |         } | ||
|  | 
 | ||
|  |         [DllImport("burst-dllimport-native")] | ||
|  |         public static extern int readFromPtr(ref int x); | ||
|  | 
 | ||
|  |         [TestCompiler] | ||
|  |         public static int ReadFromPtr() | ||
|  |         { | ||
|  |             int x = 37; | ||
|  |             return readFromPtr(ref x); | ||
|  |         } | ||
|  | 
 | ||
|  |         [DllImport("burst-dllimport-native")] | ||
|  |         public static extern HandleStruct handleStruct(HandleStruct handle); | ||
|  | 
 | ||
|  |         [TestCompiler] | ||
|  |         public unsafe static long HandleStructByVal() | ||
|  |         { | ||
|  |             var handle = new HandleStruct { Handle = (void*)0x42 }; | ||
|  |             return (long)handleStruct(handle).Handle; | ||
|  |         } | ||
|  | 
 | ||
|  |         [DllImport("burst-dllimport-native")] | ||
|  |         public static extern NestedHandleStruct nestedHandleStruct(NestedHandleStruct handle); | ||
|  | 
 | ||
|  |         [TestCompiler] | ||
|  |         public unsafe static long NestedHandleStructByVal() | ||
|  |         { | ||
|  |             var handle = new NestedHandleStruct { Handle = new HandleStruct { Handle = (void*)0x42 } }; | ||
|  |             return (long)nestedHandleStruct(handle).Handle.Handle; | ||
|  |         } | ||
|  | 
 | ||
|  |         [DllImport("burst-dllimport-native")] | ||
|  |         public static extern TypedHandleStruct typedHandleStruct(TypedHandleStruct handle); | ||
|  | 
 | ||
|  |         [TestCompiler] | ||
|  |         public unsafe static long TypedHandleStructByVal() | ||
|  |         { | ||
|  |             var handle = new TypedHandleStruct { Handle = (byte*)0x42 }; | ||
|  |             return (long)typedHandleStruct(handle).Handle; | ||
|  |         } | ||
|  | 
 | ||
|  |         [DllImport("burst-dllimport-native")] | ||
|  |         public static extern IntInStruct intInStruct(IntInStruct handle); | ||
|  | 
 | ||
|  |         [TestCompiler] | ||
|  |         public unsafe static long IntInStructByVal() | ||
|  |         { | ||
|  |             var handle = new IntInStruct { Handle = 0x42424242 }; | ||
|  |             return (long)intInStruct(handle).Handle; | ||
|  |         } | ||
|  | 
 | ||
|  |         [DllImport("burst-dllimport-native")] | ||
|  |         public static extern LongInStruct longInStruct(LongInStruct handle); | ||
|  | 
 | ||
|  |         [TestCompiler] | ||
|  |         public unsafe static long LongInStructByVal() | ||
|  |         { | ||
|  |             var handle = new LongInStruct { Handle = 0x4242424242424242 }; | ||
|  |             return (long)longInStruct(handle).Handle; | ||
|  |         } | ||
|  |     } | ||
|  | } | ||
|  | #endif |