public COOPFunctionConverter(ClassHierarchy hierarchy, COOPClass parentClass) { classHierarchy = hierarchy; this.parentClass = parentClass; originalNameAndInputTypesToMangledName = new Dictionary <NameInputTypePair, string>(NameInputTypePair.nameInputsComparer); originalNameAndInputTypesToisStatic = new Dictionary <NameInputTypePair, bool>(); functionToReturnType = new Dictionary <string, COOPClass>(); availableClasses = hierarchy.getLineage(parentClass); availableClasses.AddRange(parentClass.imports); generateDictionaries(); }
private List <COOPFunction> getAvailableFunctions(COOPClass coopClass, ClassHierarchy hierarchy) { List <COOPFunction> output = new List <COOPFunction>(coopClass.Functions.Values); List <COOPClass> lineageClasses = new List <COOPClass>(hierarchy.getLineage(coopClass)); lineageClasses.Remove(coopClass); foreach (COOPClass lineageClass in lineageClasses) { output.AddRange(from f in lineageClass.Functions.Values where (int)f.AccessLevel >= 1 select f); } foreach (COOPClass coopClassImport in coopClass.imports) { output.AddRange(from f in coopClassImport.Functions.Values where f.AccessLevel == AccessLevel.Public select f); } return(output); }