@@ -41,7 +41,87 @@ package body GNATdoc.Backend.XML is
4141 use Line_Count_Formatters;
4242 -- XXX VSS 20251204+ provides it as `VSS.Strings.Formatters.Line_Offsets`.
4343
44- GNATdoc_Element : constant VSS.Strings.Virtual_String := " gnatdoc" ;
44+ Formal_Tag : constant VSS.Strings.Virtual_String := " formal" ;
45+ Function_Tag : constant VSS.Strings.Virtual_String := " function" ;
46+ Exception_Tag : constant VSS.Strings.Virtual_String := " exception" ;
47+ Generic_Package_Declaration_Tag : constant VSS.Strings.Virtual_String :=
48+ " generic-package-declaration" ;
49+ Generic_Package_Instantiation_Tag : constant VSS.Strings.Virtual_String :=
50+ " generic-package-instantiation" ;
51+ Generic_Subprogram_Instantiation_Tag : constant
52+ VSS.Strings.Virtual_String := " generic-subprogram-instantiation" ;
53+ GNATdoc_Tag : constant VSS.Strings.Virtual_String := " gnatdoc" ;
54+ Interface_Type_Tag : constant VSS.Strings.Virtual_String :=
55+ " interface-type" ;
56+ Named_Number_Tag : constant VSS.Strings.Virtual_String :=
57+ " named-number" ;
58+ Object_Tag : constant VSS.Strings.Virtual_String := " object" ;
59+ Package_Body_Tag : constant VSS.Strings.Virtual_String := " package-body" ;
60+ Package_Declaration_Tag : constant VSS.Strings.Virtual_String :=
61+ " package-declaration" ;
62+ Procedure_Tag : constant VSS.Strings.Virtual_String := " procedure" ;
63+ Tagged_Type_Tag : constant VSS.Strings.Virtual_String := " tagged-type" ;
64+ Type_Tag : constant VSS.Strings.Virtual_String := " type" ;
65+
66+ function Entity_Tag
67+ (Entity : not null GNATdoc.Entities.Entity_Information_Access)
68+ return VSS.Strings.Virtual_String;
69+
70+ -- --------------
71+ -- Entity_Tag --
72+ -- --------------
73+
74+ function Entity_Tag
75+ (Entity : not null GNATdoc.Entities.Entity_Information_Access)
76+ return VSS.Strings.Virtual_String is
77+ begin
78+ case Entity.Kind is
79+ when GNATdoc.Entities.Undefined =>
80+ raise Program_Error with " not classified entity" ;
81+
82+ when GNATdoc.Entities.Ada_Tagged_Type =>
83+ return Tagged_Type_Tag;
84+
85+ when GNATdoc.Entities.Ada_Interface_Type =>
86+ return Interface_Type_Tag;
87+
88+ when GNATdoc.Entities.Ada_Other_Type =>
89+ return Type_Tag;
90+
91+ when GNATdoc.Entities.Ada_Named_Number =>
92+ return Named_Number_Tag;
93+
94+ when GNATdoc.Entities.Ada_Object =>
95+ return Object_Tag;
96+
97+ when GNATdoc.Entities.Ada_Exception =>
98+ return Exception_Tag;
99+
100+ when GNATdoc.Entities.Ada_Function =>
101+ return Function_Tag;
102+
103+ when GNATdoc.Entities.Ada_Procedure =>
104+ return Procedure_Tag;
105+
106+ when GNATdoc.Entities.Ada_Package_Declaration =>
107+ return Package_Declaration_Tag;
108+
109+ when GNATdoc.Entities.Ada_Package_Body =>
110+ return Package_Body_Tag;
111+
112+ when GNATdoc.Entities.Ada_Formal =>
113+ return Formal_Tag;
114+
115+ when GNATdoc.Entities.Ada_Generic_Package_Declaration =>
116+ return Generic_Package_Declaration_Tag;
117+
118+ when GNATdoc.Entities.Ada_Generic_Package_Instantiation =>
119+ return Generic_Package_Instantiation_Tag;
120+
121+ when GNATdoc.Entities.Ada_Generic_Subprogram_Instantiation =>
122+ return Generic_Subprogram_Instantiation_Tag;
123+ end case ;
124+ end Entity_Tag ;
45125
46126 -- ------------
47127 -- Generate --
@@ -70,11 +150,6 @@ package body GNATdoc.Backend.XML is
70150
71151 begin
72152 Attributes.Clear;
73- Attributes.Insert
74- (VSS.IRIs.Empty_IRI,
75- " kind" ,
76- VSS.Strings.To_Virtual_String
77- (GNATdoc.Entities.Entity_Kind'Wide_Wide_Image (Entity.Kind)));
78153 Attributes.Insert
79154 (VSS.IRIs.Empty_IRI,
80155 " location" ,
@@ -104,17 +179,22 @@ package body GNATdoc.Backend.XML is
104179 (VSS.IRIs.Empty_IRI, " progenitor_types" , Signatures.Join (' ' ));
105180 end if ;
106181
182+ if not Entity.Type_Signature.Image.Is_Empty then
183+ Attributes.Insert
184+ (VSS.IRIs.Empty_IRI, " type" , Entity.Type_Signature.Image);
185+ end if ;
186+
107187 Writer.Start_Element
108- (GNATdoc_Namespace, " entity " , Attributes, Success);
188+ (GNATdoc_Namespace, Entity_Tag (Entity) , Attributes, Success);
109189
110190 GNATdoc.Comments.XML_Helpers.Generate
111191 (Entity.Documentation, Writer, Success);
112192
113- for E of Entity.Entities loop
193+ for E of Entity.Contain_Entities loop
114194 Generate (Writer, E, Success);
115195 end loop ;
116196
117- Writer.End_Element (GNATdoc_Namespace, " entity " , Success);
197+ Writer.End_Element (GNATdoc_Namespace, Entity_Tag (Entity) , Success);
118198 end Generate ;
119199
120200 Writer : aliased VSS.XML.Writers.Pretty.Pretty_XML_Writer;
@@ -141,13 +221,13 @@ package body GNATdoc.Backend.XML is
141221
142222 Attributes.Clear;
143223 Writer.Start_Element
144- (GNATdoc_Namespace, GNATdoc_Element , Attributes, Success);
224+ (GNATdoc_Namespace, GNATdoc_Tag , Attributes, Success);
145225
146- for E of GNATdoc.Entities.Globals.Entities loop
226+ for E of GNATdoc.Entities.Globals.Contain_Entities loop
147227 Generate (Writer, E, Success);
148228 end loop ;
149229
150- Writer.End_Element (GNATdoc_Namespace, GNATdoc_Element , Success);
230+ Writer.End_Element (GNATdoc_Namespace, GNATdoc_Tag , Success);
151231
152232 -- Close output file.
153233
0 commit comments