Skip to content

Commit

Permalink
small refactor
Browse files Browse the repository at this point in the history
  • Loading branch information
Xytabich committed Feb 13, 2022
1 parent d1cbbb3 commit 5c50831
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 30 deletions.
8 changes: 4 additions & 4 deletions Assets/Katsudon/Builder/AssembliesBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -111,12 +111,12 @@ public void BuildClass(Type classType, string programPath, int executionOrder)
var classInfo = assembliesInfo.GetBehaviourInfo(classType);
var methods = new Dictionary<MethodIdentifier, AsmMethodInfo>();
classInfo.CollectMethods(methods);
var typeHierarhy = new List<Type>();
var typeHierarchy = new List<Type>();

var interfaceMethodsMap = new Dictionary<MethodInfo, MethodInfo>();
for(Type t = classType; t != typeof(MonoBehaviour); t = t.BaseType)
{
typeHierarhy.Add(t);
typeHierarchy.Add(t);
MapInterfaceMethods(t.GetInterfaces(), t, interfaceMethodsMap);
}

Expand Down Expand Up @@ -195,9 +195,9 @@ public void BuildClass(Type classType, string programPath, int executionOrder)
}
classInfo.onMethodRequested -= addMethodCallback;

for(int i = typeHierarhy.Count - 1; i >= 0; i--)
for(int i = typeHierarchy.Count - 1; i >= 0; i--)
{
var ctor = typeHierarhy[i].GetConstructor(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, Type.EmptyTypes, null);
var ctor = typeHierarchy[i].GetConstructor(BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance, null, Type.EmptyTypes, null);
if(ctor != null)
{
defaultsExtractor.ExtractDefaults(ctor, fieldsCollection);
Expand Down
42 changes: 21 additions & 21 deletions Assets/Katsudon/Builder/Common/AsmTypeInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,24 +25,24 @@ public class AsmTypeInfo
private Dictionary<MethodIdentifier, AsmMethodInfo> methods = new Dictionary<MethodIdentifier, AsmMethodInfo>();

private AsmTypeInfo[] inherits;
private AsmTypeInfo[] hierarhy;
private AsmTypeInfo[] hierarchy;

public AsmTypeInfo(Type type, Guid guid, AsmTypeInfo[] inherits, AsmTypeInfo[] hierarhy)
public AsmTypeInfo(Type type, Guid guid, AsmTypeInfo[] inherits, AsmTypeInfo[] hierarchy)
{
this.type = type;
this.guid = guid;
this.inherits = inherits;
this.hierarhy = hierarhy;
this.hierarchy = hierarchy;
}

public IEnumerable<AsmTypeInfo> GetInheritance()
{
return inherits;
}

public IEnumerable<AsmTypeInfo> GetClassHierarhy()
public IEnumerable<AsmTypeInfo> GetClassHierarchy()
{
return hierarhy;
return hierarchy;
}

public void AddField(AsmFieldInfo field)
Expand All @@ -64,9 +64,9 @@ public void AddMethod(AsmMethodInfo method)
{
bool isNew = true;
var id = new MethodNameId(UdonCacheHelper.cache, method.method);
for(var i = hierarhy.Length - 1; i >= 0; i--)
for(var i = hierarchy.Length - 1; i >= 0; i--)
{
var list = hierarhy[i].familyMethods;
var list = hierarchy[i].familyMethods;
if(list != null && list.TryGetValue(id, out var info))
{
// Override base method
Expand Down Expand Up @@ -120,9 +120,9 @@ public void AddMethod(AsmMethodInfo method)

public void CollectMethods(IDictionary<MethodIdentifier, AsmMethodInfo> list)
{
for(var i = 0; i < hierarhy.Length; i++)
for(var i = 0; i < hierarchy.Length; i++)
{
hierarhy[i].CollectMethods(list);
hierarchy[i].CollectMethods(list);
}
foreach(var pair in methods)
{
Expand All @@ -132,9 +132,9 @@ public void CollectMethods(IDictionary<MethodIdentifier, AsmMethodInfo> list)

public void CollectFields(IDictionary<FieldIdentifier, AsmFieldInfo> list)
{
for(var i = 0; i < hierarhy.Length; i++)
for(var i = 0; i < hierarchy.Length; i++)
{
hierarhy[i].CollectFields(list);
hierarchy[i].CollectFields(list);
}
foreach(var pair in fields)
{
Expand All @@ -151,9 +151,9 @@ public void CollectFieldCounters(IDictionary<string, int> list)
list.Add(pair.Key, pair.Value.count);
}
}
for(var i = hierarhy.Length - 1; i >= 0; i--)
for(var i = hierarchy.Length - 1; i >= 0; i--)
{
var counters = hierarhy[i].fieldNamesCounter;
var counters = hierarchy[i].fieldNamesCounter;
if(counters != null)
{
foreach(var pair in counters)
Expand All @@ -169,9 +169,9 @@ public AsmMethodInfo GetMethod(MethodIdentifier id)
AsmMethodInfo info = null;
if(!methods.TryGetValue(id, out info))
{
for(var i = hierarhy.Length - 1; i >= 0; i--)
for(var i = hierarchy.Length - 1; i >= 0; i--)
{
if(hierarhy[i].methods.TryGetValue(id, out info))
if(hierarchy[i].methods.TryGetValue(id, out info))
{
break;
}
Expand All @@ -192,9 +192,9 @@ public AsmMethodInfo GetFamilyMethod(MethodInfo method)
AsmMethodInfo info = null;
if(familyMethods == null || !familyMethods.TryGetValue(id, out info))
{
for(var i = hierarhy.Length - 1; i >= 0; i--)
for(var i = hierarchy.Length - 1; i >= 0; i--)
{
var list = hierarhy[i].familyMethods;
var list = hierarchy[i].familyMethods;
if(list != null && list.TryGetValue(id, out info))
{
break;
Expand All @@ -215,9 +215,9 @@ public AsmFieldInfo GetField(FieldInfo field)
AsmFieldInfo info = null;
if(!fields.TryGetValue(id, out info))
{
for(var i = hierarhy.Length - 1; i >= 0; i--)
for(var i = hierarchy.Length - 1; i >= 0; i--)
{
if(hierarhy[i].fields.TryGetValue(id, out info)) return info;
if(hierarchy[i].fields.TryGetValue(id, out info)) return info;
}
}
return info;
Expand Down Expand Up @@ -272,9 +272,9 @@ private NameCounter GetCounter(bool field, string name)
if(!container.TryGetValue(name, out var counter))
{
container[name] = counter = new NameCounter(0, false);
for(var i = hierarhy.Length - 1; i >= 0; i--)
for(var i = hierarchy.Length - 1; i >= 0; i--)
{
var list = field ? hierarhy[i].fieldNamesCounter : hierarhy[i].methodNamesCounter;
var list = field ? hierarchy[i].fieldNamesCounter : hierarchy[i].methodNamesCounter;
if(list != null && list.TryGetValue(name, out var c))
{
counter.CopyFrom(c);
Expand Down
14 changes: 9 additions & 5 deletions Assets/Katsudon/Builder/Common/AssembliesInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -236,7 +236,7 @@ private AsmTypeInfo BuildInterfaceInfo(Type type, Guid guid)

private AsmTypeInfo BuildBehaviourInfo(Type type, Guid guid)
{
var hierarhy = new List<AsmTypeInfo>();
var hierarchy = new List<AsmTypeInfo>();
var inherits = new HashSet<AsmTypeInfo>();
foreach(var interfaceType in type.GetInterfaces())
{
Expand All @@ -252,11 +252,11 @@ private AsmTypeInfo BuildBehaviourInfo(Type type, Guid guid)
inherits.Add(baseInfo);
inherits.UnionWith(baseInfo.GetInheritance());

hierarhy.AddRange(baseInfo.GetClassHierarhy());
hierarhy.Add(baseInfo);
hierarchy.AddRange(baseInfo.GetClassHierarchy());
hierarchy.Add(baseInfo);
}

var info = new AsmTypeInfo(type, guid, inherits.ToArray(), hierarhy.ToArray());
var info = new AsmTypeInfo(type, guid, inherits.ToArray(), hierarchy.ToArray());
processor.ProcessBehaviourMembers(type, info);
return info;
}
Expand Down Expand Up @@ -365,7 +365,11 @@ public enum Flags
/// <summary>
/// Unique fields can only use their own name; therefore, the entire class cannot have more than one field with this name.
/// </summary>
Unique = 0x04
Unique = 0x04,
/// <summary>
/// Same as unique but adding variables with the same name, type and flag will not raise errors.
/// </summary>
SharedUnique = 0x08
}
}
}

0 comments on commit 5c50831

Please sign in to comment.