Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
EnumeratorToEnumVariantMarshaler.cs
Go to the documentation of this file.
4
6
7[SupportedOSPlatform("windows")]
9{
11
12 public static ICustomMarshaler GetInstance(string cookie)
13 {
15 }
16
20
21 public void CleanUpManagedData(object ManagedObj)
22 {
23 }
24
25 public void CleanUpNativeData(IntPtr pNativeData)
26 {
27 Marshal.Release(pNativeData);
28 }
29
30 public int GetNativeDataSize()
31 {
32 return -1;
33 }
34
35 public IntPtr MarshalManagedToNative(object ManagedObj)
36 {
37 if (ManagedObj == null)
38 {
39 throw new ArgumentNullException("ManagedObj");
40 }
41 if (ManagedObj is EnumeratorViewOfEnumVariant enumeratorViewOfEnumVariant)
42 {
43 return Marshal.GetComInterfaceForObject<object, IEnumVARIANT>(enumeratorViewOfEnumVariant.GetUnderlyingObject());
44 }
47 }
48
49 public object MarshalNativeToManaged(IntPtr pNativeData)
50 {
51 if (pNativeData == IntPtr.Zero)
52 {
53 throw new ArgumentNullException("pNativeData");
54 }
55 object objectForIUnknown = Marshal.GetObjectForIUnknown(pNativeData);
56 if (!objectForIUnknown.GetType().IsCOMObject)
57 {
58 if (objectForIUnknown is EnumVariantViewOfEnumerator enumVariantViewOfEnumerator)
59 {
60 return enumVariantViewOfEnumerator.Enumerator;
61 }
62 return objectForIUnknown as System.Collections.IEnumerator;
63 }
64 return ComDataHelpers.GetOrCreateManagedViewFromComData(objectForIUnknown, (IEnumVARIANT var) => new EnumeratorViewOfEnumVariant(var));
65 }
66}
static IntPtr GetComInterfaceForObject(object o, Type T)
Definition Marshal.cs:257
static unsafe int Release(IntPtr pUnk)
Definition Marshal.cs:766
static object GetObjectForIUnknown(IntPtr pUnk)
Definition Marshal.cs:295
static readonly IntPtr Zero
Definition IntPtr.cs:18