Modernization Fixes & Updates to Default Values (#3)

This commit is contained in:
Kamron Batman 2018-10-28 00:33:16 -07:00 committed by GitHub
parent 445eddff68
commit dcf64091b1
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
768 changed files with 10507 additions and 14196 deletions

View file

@ -1,5 +1,4 @@
using System;
using System.Collections;
using System.Collections.Generic;
namespace Server.Commands.Generic
@ -48,7 +47,7 @@ namespace Server.Commands.Generic
return true;
}
public void Filter(ArrayList list)
public void Filter(List<object> list)
{
for (int i = 0; i < Count; ++i)
this[i].Filter(list);
@ -127,7 +126,7 @@ namespace Server.Commands.Generic
return true;
}
public virtual void Filter(ArrayList list)
public virtual void Filter(List<object> list)
{
}
}

View file

@ -109,8 +109,8 @@ namespace Server.Commands.Generic
}
else
{
MethodInfo parseMethod = null;
object[] parseArgs = null;
MethodInfo parseMethod;
object[] parseArgs;
MethodInfo parseNumber = Type.GetMethod(
"Parse",

View file

@ -1,5 +1,4 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using System.Reflection.Emit;
@ -8,7 +7,7 @@ namespace Server.Commands.Generic
{
public static class DistinctCompiler
{
public static IComparer Compile(AssemblyEmitter assembly, Type objectType, Property[] props)
public static IComparer<T> Compile<T>(AssemblyEmitter assembly, Type objectType, Property[] props)
{
TypeBuilder typeBuilder = assembly.DefineType(
"__distinct",
@ -29,7 +28,8 @@ namespace Server.Commands.Generic
// : base()
il.Emit(OpCodes.Ldarg_0);
il.Emit(OpCodes.Call, typeof(object).GetConstructor(Type.EmptyTypes));
il.Emit(OpCodes.Call, typeof(T).GetConstructor(Type.EmptyTypes) ??
throw new Exception($"Could not find empty constructor for type {typeof(T).FullName}"));
// return;
il.Emit(OpCodes.Ret);
@ -39,7 +39,7 @@ namespace Server.Commands.Generic
#region IComparer
typeBuilder.AddInterfaceImplementation(typeof(IComparer));
typeBuilder.AddInterfaceImplementation(typeof(IComparer<T>));
MethodBuilder compareMethod;
@ -52,7 +52,7 @@ namespace Server.Commands.Generic
/* name */ "Compare",
/* attr */ MethodAttributes.Public | MethodAttributes.Virtual,
/* return */ typeof(int),
/* params */ new[] { typeof(object), typeof(object) });
/* params */ new[] { typeof(T), typeof(T) });
LocalBuilder a = emitter.CreateLocal(objectType);
LocalBuilder b = emitter.CreateLocal(objectType);
@ -105,14 +105,14 @@ namespace Server.Commands.Generic
typeBuilder.DefineMethodOverride(
emitter.Method,
typeof(IComparer).GetMethod(
typeof(IComparer<T>).GetMethod(
"Compare",
new[]
{
typeof(object),
typeof(object)
typeof(T),
typeof(T)
}
)
) ?? throw new Exception($"No Compare method found for type {typeof(T).FullName}")
);
compareMethod = emitter.Method;
@ -124,7 +124,7 @@ namespace Server.Commands.Generic
#region IEqualityComparer
typeBuilder.AddInterfaceImplementation(typeof(IEqualityComparer<object>));
typeBuilder.AddInterfaceImplementation(typeof(IEqualityComparer<T>));
#region Equals
@ -135,7 +135,7 @@ namespace Server.Commands.Generic
/* name */ "Equals",
/* attr */ MethodAttributes.Public | MethodAttributes.Virtual,
/* return */ typeof(bool),
/* params */ new[] { typeof(object), typeof(object) });
/* params */ new[] { typeof(T), typeof(T) });
emitter.Generator.Emit(OpCodes.Ldarg_0);
emitter.Generator.Emit(OpCodes.Ldarg_1);
@ -151,14 +151,14 @@ namespace Server.Commands.Generic
typeBuilder.DefineMethodOverride(
emitter.Method,
typeof(IEqualityComparer<object>).GetMethod(
typeof(IEqualityComparer<T>).GetMethod(
"Equals",
new[]
{
typeof(object),
typeof(object)
typeof(T),
typeof(T)
}
)
) ?? throw new Exception($"No Equals method found for type {typeof(T).FullName}")
);
}
@ -173,7 +173,7 @@ namespace Server.Commands.Generic
/* name */ "GetHashCode",
/* attr */ MethodAttributes.Public | MethodAttributes.Virtual,
/* return */ typeof(int),
/* params */ new[] { typeof(object) });
/* params */ new[] { typeof(T) });
LocalBuilder obj = emitter.CreateLocal(objectType);
@ -193,7 +193,7 @@ namespace Server.Commands.Generic
MethodInfo getHashCode = active.GetMethod("GetHashCode", Type.EmptyTypes);
if (getHashCode == null)
getHashCode = typeof(object).GetMethod("GetHashCode", Type.EmptyTypes);
getHashCode = typeof(T).GetMethod("GetHashCode", Type.EmptyTypes);
if (active != typeof(int))
{
@ -237,13 +237,13 @@ namespace Server.Commands.Generic
typeBuilder.DefineMethodOverride(
emitter.Method,
typeof(IEqualityComparer<object>).GetMethod(
typeof(IEqualityComparer<T>).GetMethod(
"GetHashCode",
new[]
{
typeof(object)
typeof(T)
}
)
) ?? throw new Exception($"No GetHashCode method found for type {typeof(T).FullName}")
);
}
@ -253,7 +253,7 @@ namespace Server.Commands.Generic
Type comparerType = typeBuilder.CreateType();
return (IComparer)Activator.CreateInstance(comparerType);
return (IComparer<T>)Activator.CreateInstance(comparerType);
}
}
}

View file

@ -1,5 +1,5 @@
using System;
using System.Collections;
using System.Collections.Generic;
using System.Reflection;
using System.Reflection.Emit;
@ -45,12 +45,12 @@ namespace Server.Commands.Generic
public static class SortCompiler
{
public static IComparer Compile(AssemblyEmitter assembly, Type objectType, OrderInfo[] orders)
public static IComparer<T> Compile<T>(AssemblyEmitter assembly, Type objectType, OrderInfo[] orders)
{
TypeBuilder typeBuilder = assembly.DefineType(
"__sort",
TypeAttributes.Public,
typeof(object)
typeof(T)
);
#region Constructor
@ -66,7 +66,8 @@ namespace Server.Commands.Generic
// : base()
il.Emit(OpCodes.Ldarg_0);
il.Emit(OpCodes.Call, typeof(object).GetConstructor(Type.EmptyTypes));
il.Emit(OpCodes.Call, typeof(T).GetConstructor(Type.EmptyTypes) ??
throw new Exception($"Could not find empty constructor for type {typeof(T).FullName}"));
// return;
il.Emit(OpCodes.Ret);
@ -76,12 +77,9 @@ namespace Server.Commands.Generic
#region IComparer
typeBuilder.AddInterfaceImplementation(typeof(IComparer));
MethodBuilder compareMethod;
typeBuilder.AddInterfaceImplementation(typeof(IComparer<T>));
#region Compare
{
MethodEmitter emitter = new MethodEmitter(typeBuilder);
@ -89,7 +87,7 @@ namespace Server.Commands.Generic
/* name */ "Compare",
/* attr */ MethodAttributes.Public | MethodAttributes.Virtual,
/* return */ typeof(int),
/* params */ new[] { typeof(object), typeof(object) });
/* params */ new[] { typeof(T), typeof(T) });
LocalBuilder a = emitter.CreateLocal(objectType);
LocalBuilder b = emitter.CreateLocal(objectType);
@ -145,17 +143,15 @@ namespace Server.Commands.Generic
typeBuilder.DefineMethodOverride(
emitter.Method,
typeof(IComparer).GetMethod(
typeof(IComparer<T>).GetMethod(
"Compare",
new[]
{
typeof(object),
typeof(object)
typeof(T),
typeof(T)
}
)
) ?? throw new Exception($"No Compare method found for type {typeof(T).FullName}")
);
compareMethod = emitter.Method;
}
#endregion
@ -163,8 +159,7 @@ namespace Server.Commands.Generic
#endregion
Type comparerType = typeBuilder.CreateType();
return (IComparer)Activator.CreateInstance(comparerType);
return (IComparer<T>)Activator.CreateInstance(comparerType);
}
}
}

View file

@ -1,5 +1,4 @@
using System;
using System.Collections;
using System.Collections.Generic;
namespace Server.Commands.Generic
@ -9,7 +8,7 @@ namespace Server.Commands.Generic
public static ExtensionInfo ExtInfo =
new ExtensionInfo(30, "Distinct", -1, delegate { return new DistinctExtension(); });
private IComparer m_Comparer;
private IComparer<object> m_Comparer;
private List<Property> m_Properties;
@ -39,7 +38,7 @@ namespace Server.Commands.Generic
if (assembly == null)
assembly = new AssemblyEmitter("__dynamic", false);
m_Comparer = DistinctCompiler.Compile(assembly, baseType, m_Properties.ToArray());
m_Comparer = DistinctCompiler.Compile<object>(assembly, baseType, m_Properties.ToArray());
}
public override void Parse(Mobile from, string[] arguments, int offset, int size)
@ -57,12 +56,12 @@ namespace Server.Commands.Generic
}
}
public override void Filter(ArrayList list)
public override void Filter(List<object> list)
{
if (m_Comparer == null)
throw new InvalidOperationException("The extension must first be optimized.");
ArrayList copy = new ArrayList(list);
List<object> copy = new List<object>(list);
copy.Sort(m_Comparer);

View file

@ -1,5 +1,5 @@
using System;
using System.Collections;
using System.Collections.Generic;
namespace Server.Commands.Generic
{
@ -24,7 +24,7 @@ namespace Server.Commands.Generic
throw new Exception("Limit cannot be less than zero.");
}
public override void Filter(ArrayList list)
public override void Filter(List<object> list)
{
if (list.Count > Limit)
list.RemoveRange(Limit, list.Count - Limit);

View file

@ -1,5 +1,4 @@
using System;
using System.Collections;
using System.Collections.Generic;
namespace Server.Commands.Generic
@ -8,7 +7,7 @@ namespace Server.Commands.Generic
{
public static ExtensionInfo ExtInfo = new ExtensionInfo(40, "Order", -1, () => new SortExtension());
private IComparer m_Comparer;
private IComparer<object> m_Comparer;
private List<OrderInfo> m_Orders;
@ -38,7 +37,7 @@ namespace Server.Commands.Generic
if (assembly == null)
assembly = new AssemblyEmitter("__dynamic", false);
m_Comparer = SortCompiler.Compile(assembly, baseType, m_Orders.ToArray());
m_Comparer = SortCompiler.Compile<object>(assembly, baseType, m_Orders.ToArray());
}
public override void Parse(Mobile from, string[] arguments, int offset, int size)
@ -93,7 +92,7 @@ namespace Server.Commands.Generic
}
}
public override void Filter(ArrayList list)
public override void Filter(List<object> list)
{
if (m_Comparer == null)
throw new InvalidOperationException("The extension must first be optimized.");