Skip to content

Commit 1548967

Browse files
committed
single InfoNodes.inc
#refactor
1 parent ac00578 commit 1548967

File tree

16 files changed

+89
-268
lines changed

16 files changed

+89
-268
lines changed

CMakeLists.txt

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -192,26 +192,6 @@ add_custom_command(
192192
COMMENT "Generating Config Source Files"
193193
)
194194

195-
add_custom_command(
196-
COMMAND
197-
${PYTHON_EXECUTABLE}
198-
${CMAKE_CURRENT_SOURCE_DIR}/util/generate-info-files.py
199-
src/lib/Metadata/InfoNodes.json
200-
${CMAKE_CURRENT_BINARY_DIR}
201-
VERBATIM
202-
DEPENDS
203-
${CMAKE_CURRENT_SOURCE_DIR}/util/generate-info-files.py
204-
src/lib/Metadata/InfoNodes.json
205-
OUTPUT
206-
${CMAKE_CURRENT_BINARY_DIR}/include/mrdocs/Metadata/InfoNodesLower.inc
207-
${CMAKE_CURRENT_BINARY_DIR}/include/mrdocs/Metadata/InfoNodesPascal.inc
208-
${CMAKE_CURRENT_BINARY_DIR}/include/mrdocs/Metadata/InfoNodesPascalAndLower.inc
209-
${CMAKE_CURRENT_BINARY_DIR}/include/mrdocs/Metadata/InfoNodesPascalPlural.inc
210-
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
211-
COMMENT "Generating Info Include Files"
212-
)
213-
214-
215195
# Main library
216196
file(
217197
GLOB_RECURSE LIB_SOURCES CONFIGURE_DEPENDS
@@ -232,10 +212,6 @@ list(APPEND LIB_SOURCES
232212
${CMAKE_CURRENT_BINARY_DIR}/include/mrdocs/Version.hpp
233213
${CMAKE_CURRENT_BINARY_DIR}/include/mrdocs/PublicSettings.hpp
234214
${CMAKE_CURRENT_BINARY_DIR}/src/lib/Lib/PublicSettings.cpp
235-
${CMAKE_CURRENT_BINARY_DIR}/include/mrdocs/Metadata/InfoNodesLower.inc
236-
${CMAKE_CURRENT_BINARY_DIR}/include/mrdocs/Metadata/InfoNodesPascal.inc
237-
${CMAKE_CURRENT_BINARY_DIR}/include/mrdocs/Metadata/InfoNodesPascalAndLower.inc
238-
${CMAKE_CURRENT_BINARY_DIR}/include/mrdocs/Metadata/InfoNodesPascalPlural.inc
239215
)
240216
add_library(mrdocs-core ${LIB_SOURCES})
241217
target_compile_features(mrdocs-core PUBLIC cxx_std_20)

include/mrdocs/Metadata/Info.hpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -30,15 +30,15 @@ namespace clang::mrdocs {
3030
/* Forward declarations
3131
*/
3232
#define INFO(Type) struct Type##Info;
33-
#include <mrdocs/Metadata/InfoNodesPascal.inc>
33+
#include <mrdocs/Metadata/Info/InfoNodes.inc>
3434

3535
/** Info variant discriminator
3636
*/
3737
enum class InfoKind
3838
{
3939
None = 0,
4040
#define INFO(Type) Type,
41-
#include <mrdocs/Metadata/InfoNodesPascal.inc>
41+
#include <mrdocs/Metadata/Info/InfoNodes.inc>
4242
};
4343

4444
/** Return the name of the InfoKind as a string.
@@ -65,7 +65,7 @@ countInfoKind()
6565
{
6666
std::underlying_type_t<InfoKind> count = 0;
6767
#define INFO(Type) count++;
68-
#include <mrdocs/Metadata/InfoNodesPascal.inc>
68+
#include <mrdocs/Metadata/Info/InfoNodes.inc>
6969
return count;
7070
}
7171

@@ -149,7 +149,7 @@ struct MRDOCS_VISIBLE Info
149149
#define INFO(Type) constexpr bool is##Type() const noexcept { \
150150
return Kind == InfoKind::Type; \
151151
}
152-
#include <mrdocs/Metadata/InfoNodesPascal.inc>
152+
#include <mrdocs/Metadata/Info/InfoNodes.inc>
153153

154154
constexpr Info const& asInfo() const noexcept
155155
{
@@ -167,29 +167,29 @@ struct MRDOCS_VISIBLE Info
167167
return reinterpret_cast<Type##Info const&>(*this); \
168168
MRDOCS_UNREACHABLE(); \
169169
}
170-
#include <mrdocs/Metadata/InfoNodesPascal.inc>
170+
#include <mrdocs/Metadata/Info/InfoNodes.inc>
171171

172172
#define INFO(Type) \
173173
constexpr Type##Info & as##Type() noexcept { \
174174
if (Kind == InfoKind::Type) \
175175
return reinterpret_cast<Type##Info&>(*this); \
176176
MRDOCS_UNREACHABLE(); \
177177
}
178-
#include <mrdocs/Metadata/InfoNodesPascal.inc>
178+
#include <mrdocs/Metadata/Info/InfoNodes.inc>
179179

180180
#define INFO(Type) \
181181
constexpr Type##Info const* as##Type##Ptr() const noexcept { \
182182
if (Kind == InfoKind::Type) { return reinterpret_cast<Type##Info const*>(this); } \
183183
return nullptr; \
184184
}
185-
#include <mrdocs/Metadata/InfoNodesPascal.inc>
185+
#include <mrdocs/Metadata/Info/InfoNodes.inc>
186186

187187
#define INFO(Type) \
188188
constexpr Type##Info * as##Type##Ptr() noexcept { \
189189
if (Kind == InfoKind::Type) { return reinterpret_cast<Type##Info *>(this); } \
190190
return nullptr; \
191191
}
192-
#include <mrdocs/Metadata/InfoNodesPascal.inc>
192+
#include <mrdocs/Metadata/Info/InfoNodes.inc>
193193

194194
auto operator<=>(Info const&) const = default;
195195
};
@@ -214,7 +214,7 @@ struct InfoCommonBase : Info
214214

215215
#define INFO(Kind) \
216216
static constexpr bool is##Kind() noexcept { return K == InfoKind::Kind; }
217-
#include <mrdocs/Metadata/InfoNodesPascal.inc>
217+
#include <mrdocs/Metadata/Info/InfoNodes.inc>
218218

219219
auto operator<=>(InfoCommonBase const&) const = default;
220220

@@ -255,7 +255,7 @@ visit(
255255
#define INFO(Type) \
256256
case InfoKind::Type: \
257257
return visitor.template visit<Type##Info>();
258-
#include <mrdocs/Metadata/InfoNodesPascal.inc>
258+
#include <mrdocs/Metadata/Info/InfoNodes.inc>
259259
default:
260260
MRDOCS_UNREACHABLE();
261261
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
//
2+
// Licensed under the Apache License v2.0 with LLVM Exceptions.
3+
// See https://llvm.org/LICENSE.txt for license information.
4+
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
5+
//
6+
// Copyright (c) 2025 Alan de Freitas ([email protected])
7+
//
8+
// Official repository: https://github.com/cppalliance/mrdocs
9+
//
10+
11+
#ifndef INFO
12+
#define INFO(PascalName)
13+
#endif
14+
15+
INFO(Namespace)
16+
INFO(Record)
17+
INFO(Function)
18+
INFO(Overloads)
19+
INFO(Enum)
20+
INFO(EnumConstant)
21+
INFO(Typedef)
22+
INFO(Variable)
23+
INFO(Friend)
24+
INFO(Guide)
25+
INFO(NamespaceAlias)
26+
INFO(Using)
27+
INFO(Concept)
28+
29+
#undef INFO
30+

include/mrdocs/MetadataFwd.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ enum class StorageClassKind;
3333

3434
#define INFO(Type) \
3535
struct Type##Info;
36-
#include <mrdocs/Metadata/InfoNodesPascal.inc>
36+
#include <mrdocs/Metadata/Info/InfoNodes.inc>
3737

3838
struct BaseInfo;
3939
struct Info;

src/lib/Gen/hbs/Builder.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,7 @@ operator()(std::ostream& os, T const& I)
347347

348348
// Compile the Builder::operator() for each Info type
349349
#define INFO(T) template Expected<void> Builder::operator()<T##Info>(std::ostream&, T##Info const&);
350-
#include <mrdocs/Metadata/InfoNodesPascal.inc>
350+
#include <mrdocs/Metadata/Info/InfoNodes.inc>
351351

352352
Expected<void>
353353
Builder::

src/lib/Gen/hbs/MultiPageVisitor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,6 @@ operator()(T const& I)
7474
}
7575

7676
#define INFO(T) template void MultiPageVisitor::operator()<T##Info>(T##Info const&);
77-
#include <mrdocs/Metadata/InfoNodesPascal.inc>
77+
#include <mrdocs/Metadata/Info/InfoNodes.inc>
7878

7979
} // clang::mrdocs::hbs

src/lib/Gen/hbs/SinglePageVisitor.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ operator()(T const& I)
4343
}
4444

4545
#define INFO(T) template void SinglePageVisitor::operator()<T##Info>(T##Info const&);
46-
#include <mrdocs/Metadata/InfoNodesPascal.inc>
46+
#include <mrdocs/Metadata/Info/InfoNodes.inc>
4747

4848
// pageNumber is zero-based
4949
void

src/lib/Gen/hbs/SinglePageVisitor.hpp

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,9 +20,7 @@
2020
#include <string>
2121
#include <vector>
2222

23-
namespace clang {
24-
namespace mrdocs {
25-
namespace hbs {
23+
namespace clang::mrdocs::hbs {
2624

2725
/** Visitor which writes everything to a single page.
2826
*/
@@ -58,8 +56,6 @@ class SinglePageVisitor
5856
void operator()(T const& I);
5957
};
6058

61-
} // hbs
62-
} // mrdocs
63-
} // clang
59+
} // clang::mrdocs::hbs
6460

6561
#endif

src/lib/Gen/xml/CXXTags.cpp

Lines changed: 14 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,26 +12,27 @@
1212
#include "CXXTags.hpp"
1313
#include <mrdocs/Metadata/Info/Typedef.hpp>
1414
#include <mrdocs/Metadata/Info/Record.hpp>
15+
#include <mrdocs/Support/String.hpp>
1516

1617
namespace clang::mrdocs::xml {
1718

18-
llvm::StringRef
19+
std::string
1920
getDefaultTagName(Info const& I) noexcept
2021
{
2122
switch(I.Kind)
2223
{
23-
#define INFO(PascalName, LowerName) \
24-
case InfoKind::PascalName: \
25-
return LowerName##TagName;
26-
#include <mrdocs/Metadata/InfoNodesPascalAndCamel.inc>
24+
#define INFO(Type) \
25+
case InfoKind::Type: \
26+
return toKebabCase(#Type) + "TagName";
27+
#include <mrdocs/Metadata/Info/InfoNodes.inc>
2728
default:
2829
break;
2930
}
3031
MRDOCS_UNREACHABLE();
3132
}
3233

3334

34-
llvm::StringRef
35+
std::string
3536
getTagName(Info const& I) noexcept
3637
{
3738
switch(I.Kind)
@@ -47,10 +48,14 @@ getTagName(Info const& I) noexcept
4748
}
4849
break;
4950
case InfoKind::Typedef:
50-
if(static_cast<TypedefInfo const&>(I).IsUsing)
51-
return namespaceAliasTagName;
51+
if (static_cast<TypedefInfo const&>(I).IsUsing)
52+
{
53+
return "namespace";
54+
}
5255
else
53-
return typedefTagName;
56+
{
57+
return "typedef";
58+
}
5459
default:
5560
return getDefaultTagName(I);
5661
}

src/lib/Gen/xml/CXXTags.hpp

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,7 @@
2424
in the MRDOCS DTD XML schema.
2525
*/
2626

27-
namespace clang {
28-
namespace mrdocs {
29-
namespace xml {
30-
31-
#define INFO(camelName, LowerName) \
32-
constexpr auto camelName##TagName = #LowerName;
33-
#include <mrdocs/Metadata/InfoNodesCamelAndLower.inc>
27+
namespace clang::mrdocs::xml {
3428

3529
constexpr auto accessTagName = "access";
3630
constexpr auto attributeTagName = "attr";
@@ -333,11 +327,9 @@ inline void writeTemplateArg(TArg const& I, XMLTags& tags)
333327

334328
/** Return the xml tag name for the Info.
335329
*/
336-
llvm::StringRef
330+
std::string
337331
getTagName(Info const& I) noexcept;
338332

339-
} // xml
340-
} // mrdocs
341-
} // clang
333+
} // clang::mrdocs::xml
342334

343335
#endif

0 commit comments

Comments
 (0)