public override List <INamespaceMember> Rewrite(List <INamespaceMember> namespaceMembers) { List <INamespaceMember> newList = new List <INamespaceMember>(); if (namespaceMembers == null) { return(newList); } foreach (INamespaceMember member in namespaceMembers) { Element currentElement = null; MemberTypes memberType = Util.GetMemberTypeFromMember(member); if (memberType == MemberTypes.Type) { INamedTypeDefinition typeDef = member as INamedTypeDefinition; string typeName = Util.FullyQualifiedTypeNameFromType(typeDef); currentElement = _currentTrimAssembly.GetTypeElement(typeName); // special case for the module class. In mscorlib we don't have any global functions, etc. // TODO: process its members too. if (currentElement == null && IsSpecialType(typeName)) { currentElement = new SpecialTrimType(typeName); if (!_systemTypes.Contains(typeName)) { _systemTypes.Add(typeName); } } } else { currentElement = new SpecialTrimMember(null, member.Name.Value, null, memberType); } if (currentElement != null) { _trimElements.Push(currentElement); // Visit(INamespaceMember) will create the Mutable copy INamespaceMember newMember = this.Rewrite(member); newList.Add(newMember); _trimElements.Pop(); } } return(newList); }
public override List<INamespaceMember> Rewrite(List<INamespaceMember> namespaceMembers) { List<INamespaceMember> newList = new List<INamespaceMember>(); if (namespaceMembers == null) { return newList; } foreach (INamespaceMember member in namespaceMembers) { Element currentElement = null; MemberTypes memberType = Util.GetMemberTypeFromMember(member); if (memberType == MemberTypes.Type) { INamedTypeDefinition typeDef = member as INamedTypeDefinition; string typeName = Util.FullyQualifiedTypeNameFromType(typeDef); currentElement = _currentTrimAssembly.GetTypeElement(typeName); // special case for the module class. In mscorlib we don't have any global functions, etc. // TODO: process its members too. if (currentElement == null && IsSpecialType(typeName)) { currentElement = new SpecialTrimType(typeName); if (!_systemTypes.Contains(typeName)) { _systemTypes.Add(typeName); } } } else { currentElement = new SpecialTrimMember(null, member.Name.Value, null, memberType); } if (currentElement != null) { _trimElements.Push(currentElement); // Visit(INamespaceMember) will create the Mutable copy INamespaceMember newMember = this.Rewrite(member); newList.Add(newMember); _trimElements.Pop(); } } return newList; }