bool HasInheritancheLoop() { foreach(ClassEntry currClass in m_classes) { List<ClassEntry> nonVirtualBases = new List<ClassEntry>(); List<ClassEntry> virtualBases = new List<ClassEntry>(); currClass.GetAllBases(nonVirtualBases, virtualBases); virtualBases.RemoveDupicates(); if( nonVirtualBases.Concat(virtualBases).HasDuplicate() ) { return true; } } return false; }
public ClassEntry GetRandomBaseOrThis(Random i_rand) { List<ClassEntry> bases = new List<ClassEntry>(); List<ClassEntry> virtualBases = new List<ClassEntry>(); GetAllBases(bases, virtualBases); virtualBases.RemoveDupicates(); bases.AddRange(virtualBases); bases.Add(this); return bases[i_rand.Next(bases.Count)]; }