Skip to content

Commit 6c4cbda

Browse files
committed
tidy up xml tag names
fix #140
1 parent 60470f1 commit 6c4cbda

File tree

7 files changed

+84
-100
lines changed

7 files changed

+84
-100
lines changed

mrdox.rng

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@
157157
</define>
158158
<define name="TypedefInfo">
159159
<choice>
160-
<element name="using">
160+
<element name="alias">
161161
<ref name="Name"/>
162162
<ref name="Id"/>
163163
<ref name="SymbolInfo"/>

source/api/_XML/CXXTags.cpp

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
//
2+
// This is a derivative work. originally part of the LLVM Project.
3+
// Licensed under the Apache License v2.0 with LLVM Exceptions.
4+
// See https://llvm.org/LICENSE.txt for license information.
5+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6+
//
7+
// Copyright (c) 2023 Vinnie Falco ([email protected])
8+
//
9+
// Official repository: https://github.com/cppalliance/mrdox
10+
//
11+
12+
#include "CXXTags.hpp"
13+
#include <mrdox/Metadata/Typedef.hpp>
14+
15+
namespace clang {
16+
namespace mrdox {
17+
namespace xml {
18+
19+
llvm::StringRef
20+
getTagName(Info const& I) noexcept
21+
{
22+
switch(I.IT)
23+
{
24+
case InfoType::IT_namespace:
25+
return namespaceTagName;
26+
case InfoType::IT_record:
27+
switch(static_cast<RecordInfo const&>(I).TagType)
28+
{
29+
case TagTypeKind::TTK_Class: return classTagName;
30+
case TagTypeKind::TTK_Struct: return structTagName;
31+
case TagTypeKind::TTK_Union: return unionTagName;
32+
default:
33+
break;
34+
}
35+
break;
36+
case InfoType::IT_function:
37+
return functionTagName;
38+
case InfoType::IT_typedef:
39+
if(static_cast<TypedefInfo const&>(I).IsUsing)
40+
return aliasTagName;
41+
else
42+
return typedefTagName;
43+
break;
44+
case InfoType::IT_enum:
45+
return enumTagName;
46+
case InfoType::IT_variable:
47+
return variableTagName;
48+
default:
49+
break;
50+
}
51+
Assert(false);
52+
return "(unknown)";
53+
}
54+
55+
} // xml
56+
} // mrdox
57+
} // clang

source/api/_XML/CXXTags.hpp

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,9 @@
1616
#include "Support/Operator.hpp"
1717
#include <clang/AST/Attr.h>
1818
#include <mrdox/Metadata/Function.hpp>
19+
#include <mrdox/Metadata/Record.hpp>
1920
#include <mrdox/Metadata/Type.hpp>
21+
#include <mrdox/Metadata/Variable.hpp>
2022

2123
/*
2224
This file holds the business logic for transforming
@@ -34,12 +36,16 @@ constexpr llvm::StringRef structTagName = "struct";
3436
constexpr llvm::StringRef unionTagName = "union";
3537
constexpr llvm::StringRef functionTagName = "function";
3638
constexpr llvm::StringRef typedefTagName = "typedef";
37-
constexpr llvm::StringRef usingTagName = "using";
39+
constexpr llvm::StringRef aliasTagName = "alias";
3840
constexpr llvm::StringRef enumTagName = "enum";
3941
constexpr llvm::StringRef variableTagName = "variable";
4042
constexpr llvm::StringRef attributeTagName = "attr";
4143
constexpr llvm::StringRef returnTagName = "return";
4244
constexpr llvm::StringRef paramTagName = "param";
45+
constexpr llvm::StringRef friendTagName = "friend";
46+
constexpr llvm::StringRef tparamTagName = "tparam";
47+
constexpr llvm::StringRef dataMemberTagName = "data";
48+
constexpr llvm::StringRef javadocTagName = "doc";
4349

4450
constexpr llvm::StringRef getBitsIDName(RecFlags0 ID)
4551
{
@@ -295,6 +301,11 @@ inline void writeParam(FieldTypeInfo const& I, XMLTags& tags)
295301
{ I.Type.id } });
296302
}
297303

304+
/** Return the xml tag name for the Info.
305+
*/
306+
llvm::StringRef
307+
getTagName(Info const& I) noexcept;
308+
298309
} // xml
299310
} // mrdox
300311
} // clang

source/api/_XML/XMLTags.cpp

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -78,23 +78,6 @@ toString(
7878
return toBase64(id);
7979
}
8080

81-
llvm::StringRef
82-
toString(
83-
InfoType it) noexcept
84-
{
85-
switch(it)
86-
{
87-
case InfoType::IT_namespace: return "namespace";
88-
case InfoType::IT_record: return "record";
89-
case InfoType::IT_function: return "function";
90-
case InfoType::IT_typedef: return "typedef";
91-
case InfoType::IT_enum: return "enum";
92-
case InfoType::IT_variable: return "variable";
93-
default:
94-
llvm_unreachable("unknown InfoType");
95-
}
96-
}
97-
9881
llvm::StringRef
9982
toString(
10083
Javadoc::Style style) noexcept

source/api/_XML/XMLWriter.cpp

Lines changed: 12 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -166,46 +166,10 @@ writeIndex()
166166
temp.reserve(256);
167167
tags_.open("symbols");
168168
for(auto I : corpus_.index())
169-
{
170-
llvm::StringRef tag;
171-
switch(I->IT)
172-
{
173-
case InfoType::IT_namespace:
174-
tag = "namespace";
175-
break;
176-
case InfoType::IT_record:
177-
switch(static_cast<RecordInfo const*>(I)->TagType)
178-
{
179-
case TagTypeKind::TTK_Class: tag = "class"; break;
180-
case TagTypeKind::TTK_Struct: tag = "struct"; break;
181-
case TagTypeKind::TTK_Union: tag = "struct"; break;
182-
default:
183-
Assert(false);
184-
}
185-
break;
186-
case InfoType::IT_function:
187-
tag = "function";
188-
break;
189-
case InfoType::IT_typedef:
190-
if(static_cast<TypedefInfo const*>(I)->IsUsing)
191-
tag = "using";
192-
else
193-
tag = "typedef";
194-
break;
195-
case InfoType::IT_enum:
196-
tag = "enum";
197-
break;
198-
case InfoType::IT_variable:
199-
tag = "variable";
200-
break;
201-
default:
202-
Assert(false);
203-
}
204169
tags_.write("symbol", {}, {
205170
{ "name", I->getFullyQualifiedName(temp) },
206-
{ "tag", tag },
171+
{ "tag", getTagName(*I) },
207172
{ I->id } });
208-
}
209173
tags_.close("symbols");
210174
}
211175

@@ -270,7 +234,7 @@ visit(
270234

271235
// Friends
272236
for(auto const& id : I.Friends)
273-
tags_.write("friend", "", { { id } });
237+
tags_.write(friendTagName, "", { { id } });
274238

275239
writeJavadoc(I.javadoc);
276240

@@ -324,9 +288,9 @@ visit(
324288
{
325289
llvm::StringRef tag;
326290
if(I.IsUsing)
327-
tag = "using";
291+
tag = aliasTagName;
328292
else
329-
tag = "typedef";
293+
tag = typedefTagName;
330294
tags_.open(tag, {
331295
{ "name", I.Name },
332296
{ I.id }
@@ -350,7 +314,7 @@ XMLWriter::
350314
visit(
351315
EnumInfo const& I)
352316
{
353-
tags_.open("enum", {
317+
tags_.open(enumTagName, {
354318
{ "name", I.Name },
355319
{ "class", "scoped", I.Scoped },
356320
{ I.BaseType },
@@ -367,7 +331,7 @@ visit(
367331

368332
writeJavadoc(I.javadoc);
369333

370-
tags_.close("enum");
334+
tags_.close(enumTagName);
371335

372336
return true;
373337
}
@@ -377,7 +341,7 @@ XMLWriter::
377341
visit(
378342
VariableInfo const& I)
379343
{
380-
tags_.open("variable", {
344+
tags_.open(variableTagName, {
381345
{ "name", I.Name },
382346
{ I.id }
383347
});
@@ -393,7 +357,7 @@ visit(
393357

394358
writeJavadoc(I.javadoc);
395359

396-
tags_.close("variable");
360+
tags_.close(variableTagName);
397361

398362
return true;
399363
}
@@ -453,7 +417,7 @@ XMLWriter::
453417
writeTemplateParam(
454418
TemplateParamInfo const& I)
455419
{
456-
tags_.write("tparam", {}, {
420+
tags_.write(tparamTagName, {}, {
457421
{ "decl", I.Contents }
458422
});
459423
}
@@ -463,44 +427,14 @@ XMLWriter::
463427
writeMemberType(
464428
MemberTypeInfo const& I)
465429
{
466-
tags_.write("data", {}, {
430+
tags_.write(dataMemberTagName, {}, {
467431
{ "name", I.Name },
468432
{ "type", I.Type.Name },
469433
{ "value", I.DefaultValue, ! I.DefaultValue.empty() },
470434
{ I.Access },
471435
{ I.Type.id } });
472436
}
473437

474-
void
475-
XMLWriter::
476-
writeStorageClass(
477-
jit_indenter& os, StorageClass SC)
478-
{
479-
switch(SC)
480-
{
481-
case StorageClass::SC_None:
482-
break;
483-
case StorageClass::SC_Extern:
484-
os << "<extern/>";
485-
break;
486-
case StorageClass::SC_Static:
487-
os << "<static/>";
488-
break;
489-
case StorageClass::SC_PrivateExtern:
490-
os << "<private-extern/>";
491-
break;
492-
case StorageClass::SC_Auto:
493-
os << "<sc-auto/>";
494-
break;
495-
case StorageClass::SC_Register:
496-
os << "<sc-register/>";
497-
break;
498-
default:
499-
llvm_unreachable("unknown StorageClass");
500-
break;
501-
}
502-
}
503-
504438
//------------------------------------------------
505439

506440
void
@@ -510,13 +444,13 @@ writeJavadoc(
510444
{
511445
if(! javadoc.has_value())
512446
return;
513-
tags_.open("doc");
447+
tags_.open(javadocTagName);
514448
if(auto brief = javadoc->getBrief())
515449
writeBrief(*brief);
516450
writeNodes(javadoc->getBlocks());
517451
writeNodes(javadoc->getParams());
518452
writeNodes(javadoc->getTParams());
519-
tags_.close("doc");
453+
tags_.close(javadocTagName);
520454
}
521455

522456
template<class T>

source/api/_XML/XMLWriter.hpp

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,6 @@ class XMLWriter
7272
void writeBaseRecord(BaseRecordInfo const& I);
7373
void writeTemplateParam(TemplateParamInfo const& I);
7474
void writeMemberType(MemberTypeInfo const& I);
75-
void writeStorageClass(jit_indenter&, StorageClass SC);
7675
void writeJavadoc(llvm::Optional<Javadoc> const& javadoc);
7776

7877
template<class T>

test-files/old-tests/record-1.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,10 @@
5858
<file path="record-1.cpp" line="4" class="def"/>
5959
<type name="char"/>
6060
</typedef>
61-
<using name="U1" id="6UtddyCJy89K/bZpTmDb5jVXwAY=">
61+
<alias name="U1" id="6UtddyCJy89K/bZpTmDb5jVXwAY=">
6262
<file path="record-1.cpp" line="3" class="def"/>
6363
<type name="int"/>
64-
</using>
64+
</alias>
6565
</struct>
6666
</namespace>
6767
</mrdox>

0 commit comments

Comments
 (0)