scripts
This commit is contained in:
@@ -0,0 +1,267 @@
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace System
|
||||
{
|
||||
// Token: 0x020006BE RID: 1726
|
||||
[StructLayout(LayoutKind.Explicit)]
|
||||
internal struct Variant
|
||||
{
|
||||
// Token: 0x06004118 RID: 16664 RVA: 0x000DD8F8 File Offset: 0x000DBAF8
|
||||
public void SetValue(object obj)
|
||||
{
|
||||
this.vt = 0;
|
||||
if (obj == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
Type type = obj.GetType();
|
||||
if (type.IsEnum)
|
||||
{
|
||||
type = Enum.GetUnderlyingType(type);
|
||||
}
|
||||
if (type == typeof(sbyte))
|
||||
{
|
||||
this.vt = 16;
|
||||
this.cVal = (sbyte)obj;
|
||||
}
|
||||
else if (type == typeof(byte))
|
||||
{
|
||||
this.vt = 17;
|
||||
this.bVal = (byte)obj;
|
||||
}
|
||||
else if (type == typeof(short))
|
||||
{
|
||||
this.vt = 2;
|
||||
this.iVal = (short)obj;
|
||||
}
|
||||
else if (type == typeof(ushort))
|
||||
{
|
||||
this.vt = 18;
|
||||
this.uiVal = (ushort)obj;
|
||||
}
|
||||
else if (type == typeof(int))
|
||||
{
|
||||
this.vt = 3;
|
||||
this.lVal = (int)obj;
|
||||
}
|
||||
else if (type == typeof(uint))
|
||||
{
|
||||
this.vt = 19;
|
||||
this.ulVal = (uint)obj;
|
||||
}
|
||||
else if (type == typeof(long))
|
||||
{
|
||||
this.vt = 20;
|
||||
this.llVal = (long)obj;
|
||||
}
|
||||
else if (type == typeof(ulong))
|
||||
{
|
||||
this.vt = 21;
|
||||
this.ullVal = (ulong)obj;
|
||||
}
|
||||
else if (type == typeof(float))
|
||||
{
|
||||
this.vt = 4;
|
||||
this.fltVal = (float)obj;
|
||||
}
|
||||
else if (type == typeof(double))
|
||||
{
|
||||
this.vt = 5;
|
||||
this.dblVal = (double)obj;
|
||||
}
|
||||
else if (type == typeof(string))
|
||||
{
|
||||
this.vt = 8;
|
||||
this.bstrVal = Marshal.StringToBSTR((string)obj);
|
||||
}
|
||||
else if (type == typeof(bool))
|
||||
{
|
||||
this.vt = 11;
|
||||
this.lVal = ((!(bool)obj) ? 0 : (-1));
|
||||
}
|
||||
else if (type == typeof(BStrWrapper))
|
||||
{
|
||||
this.vt = 8;
|
||||
this.bstrVal = Marshal.StringToBSTR(((BStrWrapper)obj).WrappedObject);
|
||||
}
|
||||
else if (type == typeof(UnknownWrapper))
|
||||
{
|
||||
this.vt = 13;
|
||||
this.pdispVal = Marshal.GetIUnknownForObject(((UnknownWrapper)obj).WrappedObject);
|
||||
}
|
||||
else if (type == typeof(DispatchWrapper))
|
||||
{
|
||||
this.vt = 9;
|
||||
this.pdispVal = Marshal.GetIDispatchForObject(((DispatchWrapper)obj).WrappedObject);
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
this.pdispVal = Marshal.GetIDispatchForObject(obj);
|
||||
this.vt = 9;
|
||||
return;
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
try
|
||||
{
|
||||
this.vt = 13;
|
||||
this.pdispVal = Marshal.GetIUnknownForObject(obj);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
throw new NotImplementedException(string.Format("Variant couldn't handle object of type {0}", obj.GetType()), ex);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x06004119 RID: 16665 RVA: 0x000DDC4C File Offset: 0x000DBE4C
|
||||
public object GetValue()
|
||||
{
|
||||
object obj = null;
|
||||
switch (this.vt)
|
||||
{
|
||||
case 2:
|
||||
obj = this.iVal;
|
||||
break;
|
||||
case 3:
|
||||
obj = this.lVal;
|
||||
break;
|
||||
case 4:
|
||||
obj = this.fltVal;
|
||||
break;
|
||||
case 5:
|
||||
obj = this.dblVal;
|
||||
break;
|
||||
case 8:
|
||||
obj = Marshal.PtrToStringBSTR(this.bstrVal);
|
||||
break;
|
||||
case 9:
|
||||
case 13:
|
||||
if (this.pdispVal != IntPtr.Zero)
|
||||
{
|
||||
obj = Marshal.GetObjectForIUnknown(this.pdispVal);
|
||||
}
|
||||
break;
|
||||
case 11:
|
||||
obj = this.boolVal != 0;
|
||||
break;
|
||||
case 16:
|
||||
obj = this.cVal;
|
||||
break;
|
||||
case 17:
|
||||
obj = this.bVal;
|
||||
break;
|
||||
case 18:
|
||||
obj = this.uiVal;
|
||||
break;
|
||||
case 19:
|
||||
obj = this.ulVal;
|
||||
break;
|
||||
case 20:
|
||||
obj = this.llVal;
|
||||
break;
|
||||
case 21:
|
||||
obj = this.ullVal;
|
||||
break;
|
||||
}
|
||||
return obj;
|
||||
}
|
||||
|
||||
// Token: 0x0600411A RID: 16666 RVA: 0x000DDDB8 File Offset: 0x000DBFB8
|
||||
public void Clear()
|
||||
{
|
||||
if (this.vt == 8)
|
||||
{
|
||||
Marshal.FreeBSTR(this.bstrVal);
|
||||
}
|
||||
else if ((this.vt == 9 || this.vt == 13) && this.pdispVal != IntPtr.Zero)
|
||||
{
|
||||
Marshal.Release(this.pdispVal);
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04001A25 RID: 6693
|
||||
[FieldOffset(0)]
|
||||
public short vt;
|
||||
|
||||
// Token: 0x04001A26 RID: 6694
|
||||
[FieldOffset(2)]
|
||||
public ushort wReserved1;
|
||||
|
||||
// Token: 0x04001A27 RID: 6695
|
||||
[FieldOffset(4)]
|
||||
public ushort wReserved2;
|
||||
|
||||
// Token: 0x04001A28 RID: 6696
|
||||
[FieldOffset(6)]
|
||||
public ushort wReserved3;
|
||||
|
||||
// Token: 0x04001A29 RID: 6697
|
||||
[FieldOffset(8)]
|
||||
public long llVal;
|
||||
|
||||
// Token: 0x04001A2A RID: 6698
|
||||
[FieldOffset(8)]
|
||||
public int lVal;
|
||||
|
||||
// Token: 0x04001A2B RID: 6699
|
||||
[FieldOffset(8)]
|
||||
public byte bVal;
|
||||
|
||||
// Token: 0x04001A2C RID: 6700
|
||||
[FieldOffset(8)]
|
||||
public short iVal;
|
||||
|
||||
// Token: 0x04001A2D RID: 6701
|
||||
[FieldOffset(8)]
|
||||
public float fltVal;
|
||||
|
||||
// Token: 0x04001A2E RID: 6702
|
||||
[FieldOffset(8)]
|
||||
public double dblVal;
|
||||
|
||||
// Token: 0x04001A2F RID: 6703
|
||||
[FieldOffset(8)]
|
||||
public short boolVal;
|
||||
|
||||
// Token: 0x04001A30 RID: 6704
|
||||
[FieldOffset(8)]
|
||||
public IntPtr bstrVal;
|
||||
|
||||
// Token: 0x04001A31 RID: 6705
|
||||
[FieldOffset(8)]
|
||||
public sbyte cVal;
|
||||
|
||||
// Token: 0x04001A32 RID: 6706
|
||||
[FieldOffset(8)]
|
||||
public ushort uiVal;
|
||||
|
||||
// Token: 0x04001A33 RID: 6707
|
||||
[FieldOffset(8)]
|
||||
public uint ulVal;
|
||||
|
||||
// Token: 0x04001A34 RID: 6708
|
||||
[FieldOffset(8)]
|
||||
public ulong ullVal;
|
||||
|
||||
// Token: 0x04001A35 RID: 6709
|
||||
[FieldOffset(8)]
|
||||
public int intVal;
|
||||
|
||||
// Token: 0x04001A36 RID: 6710
|
||||
[FieldOffset(8)]
|
||||
public uint uintVal;
|
||||
|
||||
// Token: 0x04001A37 RID: 6711
|
||||
[FieldOffset(8)]
|
||||
public IntPtr pdispVal;
|
||||
|
||||
// Token: 0x04001A38 RID: 6712
|
||||
[FieldOffset(8)]
|
||||
public BRECORD bRecord;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user