[update-ecma-xml] Generate //Type/MemberOfLibrary and //Type/TypeExcluded.
authorJonathan Pryor <jonpryor@vt.edu>
Sun, 29 Aug 2010 02:33:03 +0000 (22:33 -0400)
committerJonathan Pryor <jonpryor@vt.edu>
Tue, 31 Aug 2010 18:51:41 +0000 (14:51 -0400)
These elements are needed for some ECMA processes.

mcs/tools/mdoc/Mono.Documentation/ecmadoc.cs

index f15f1dfa19dd02e50c809dd157ee61cf85f1e1c8..e6205a849522eebd6078fbbd6bb83a5a98c09388 100644 (file)
@@ -184,10 +184,10 @@ namespace Mono.Documentation
                                                        continue;
                                                }
                                                seenTypes.Add (typeName);
-                                               WriteType (output, typeName);
+                                               WriteType (output, typeName, library.Value);
                                        }
                                        foreach (string type in libraryTypes.Except (seenTypes))
-                                               WriteType (output, type);
+                                               WriteType (output, type, library.Value);
                                }
                        }
                }
@@ -201,7 +201,7 @@ namespace Mono.Documentation
                                                o.WriteAttributeString ("Library", library);});
                }
 
-               void WriteType (XmlWriter output, string typeName)
+               void WriteType (XmlWriter output, string typeName, string library)
                {
                        XElement type = LoadType (typeName);
 
@@ -210,6 +210,16 @@ namespace Mono.Documentation
                        if (fullNameSp == null && fullName != null) {
                                type.Add (new XAttribute ("FullNameSP", fullName.Value.Replace ('.', '_')));
                        }
+                       if (type.Element ("TypeExcluded") == null)
+                               type.Add (new XElement ("TypeExcluded", "0"));
+                       if (type.Element ("MemberOfLibrary") == null) {
+                               XElement member = new XElement ("MemberOfLibrary", library);
+                               XElement assemblyInfo = type.Element ("AssemblyInfo");
+                               if (assemblyInfo != null)
+                                       assemblyInfo.AddBeforeSelf (member);
+                               else
+                                       type.Add (member);
+                       }
 
                        type.WriteTo (output);
                }
@@ -222,7 +232,7 @@ namespace Mono.Documentation
                                seenLibraries.Add (lib.Key);
                                using (var typesElement = CreateTypesElement (output, lib.Key)) {
                                        foreach (string type in lib.Value) {
-                                               LoadType (type).WriteTo (output);
+                                               WriteType (output, type, lib.Key);
                                        }
                                }
                        }