private static void FixupComplexType(HashSet <NdrComplexTypeReference> fixup_set, NdrComplexTypeReference complex_type, UserDefinedTypeInformation udt) { if (!fixup_set.Add(complex_type)) { return; } // Fixup the name to remove compiler generated characters. complex_type.Name = CodeGenUtils.MakeIdentifier(udt.Name); if (udt.Union) { if (complex_type is NdrUnionTypeReference union) { FixupUnionType(fixup_set, union, udt); } } else { if (complex_type is NdrBaseStructureTypeReference str) { FixupStructureType(fixup_set, str, udt); } } }
private static void FixupUnionType(HashSet <NdrComplexTypeReference> fixup_set, NdrUnionTypeReference union_type, UserDefinedTypeInformation udt) { var members = union_type.Arms.Arms.ToList(); if (members.Count != udt.Members.Count) { return; } for (int i = 0; i < members.Count; ++i) { members[i].Name = udt.Members[i].Name; var member_udt = GetUDTType(udt.Members[i].Type); var member_complex = GetComplexType(members[i].ArmType); if (member_udt != null && member_complex != null) { FixupComplexType(fixup_set, member_complex, member_udt); } } }