This commit is contained in:
Matthias Mailänder
2014-02-09 18:25:33 +01:00
parent 35bf03aade
commit 6dc02c3b26

View File

@@ -15,8 +15,37 @@ using OpenRA.FileFormats;
namespace OpenRA
{
static class ListExts
{
public static int BinarySearchMany(this List<Actor> list, uint searchFor)
{
int start = 0;
int end = list.Count;
int mid = 0;
while (start != end)
{
mid = (start + end) / 2;
var c = list[mid].ActorID.CompareTo(searchFor);
if (c < 0)
start = mid + 1;
else
end = mid;
}
return start;
}
}
class TraitDictionary
{
// construct this delegate once.
static Func<Type, ITraitContainer> doCreateTraitContainer = CreateTraitContainer;
static ITraitContainer CreateTraitContainer(Type t)
{
return (ITraitContainer)typeof(TraitContainer<>).MakeGenericType(t)
.GetConstructor(Type.EmptyTypes).Invoke(null);
}
Dictionary<Type, ITraitContainer> traits = new Dictionary<Type, ITraitContainer>();
ITraitContainer InnerGet(Type t)
@@ -31,14 +60,6 @@ namespace OpenRA
Log.Write("traitreport", "{0}: {1}", t.Key.Name, t.Value.Queries);
}
// construct this delegate once.
static Func<Type, ITraitContainer> doCreateTraitContainer = CreateTraitContainer;
static ITraitContainer CreateTraitContainer( Type t )
{
return (ITraitContainer)typeof( TraitContainer<> ).MakeGenericType( t )
.GetConstructor( Type.EmptyTypes ).Invoke( null );
}
public void AddTrait(Actor actor, object val)
{
var t = val.GetType();
@@ -168,24 +189,4 @@ namespace OpenRA
}
}
}
static class ListExts
{
public static int BinarySearchMany( this List<Actor> list, uint searchFor )
{
int start = 0;
int end = list.Count;
int mid = 0;
while( start != end )
{
mid = ( start + end ) / 2;
var c = list[ mid ].ActorID.CompareTo( searchFor );
if( c < 0 )
start = mid + 1;
else
end = mid;
}
return start;
}
}
}