Skip to content

Commit 6cfec82

Browse files
authored
Refactor file generation functions (#2256)
* Refactor file generation functions * Rebased on main.
1 parent 7fcd452 commit 6cfec82

26 files changed

+938
-1045
lines changed

VideoHppGenerator.cpp

Lines changed: 14 additions & 86 deletions
Original file line numberDiff line numberDiff line change
@@ -33,94 +33,21 @@ VideoHppGenerator::VideoHppGenerator( tinyxml2::XMLDocument const & document )
3333
checkCorrectness();
3434
}
3535

36-
void VideoHppGenerator::generateHppFile() const
36+
void VideoHppGenerator::generateCppmFile() const
3737
{
38-
std::string const video_hpp = std::string( BASE_PATH ) + "/vulkan/" + "vulkan_video.hpp";
39-
std::cout << "VideoHppGenerator: Generating " << video_hpp << " ... " << std::endl;
40-
41-
std::string const videoHppTemplate = R"(${copyrightMessage}
42-
43-
#ifndef VULKAN_VIDEO_HPP
44-
#define VULKAN_VIDEO_HPP
45-
46-
// here, we consider include files to be available when __has_include is not defined
47-
#if !defined( __has_include )
48-
# define __has_include( x ) true
49-
# define has_include_was_not_defined
50-
#endif
51-
52-
// clang-format off
53-
#include <vulkan/vulkan.hpp>
54-
// clang-format on
55-
56-
${includes}
57-
58-
#if !defined( VULKAN_HPP_VIDEO_NAMESPACE )
59-
# define VULKAN_HPP_VIDEO_NAMESPACE video
60-
#endif
61-
62-
namespace VULKAN_HPP_NAMESPACE
63-
{
64-
namespace VULKAN_HPP_VIDEO_NAMESPACE
65-
{
66-
${constants}
67-
${enums}
68-
${structs}
69-
} // namespace VULKAN_HPP_VIDEO_NAMESPACE
70-
} // namespace VULKAN_HPP_NAMESPACE
71-
72-
#if defined( has_include_was_not_defined )
73-
# undef has_include_was_not_defined
74-
# undef __has_include
75-
#endif
76-
77-
#endif
78-
)";
79-
80-
std::string str = replaceWithMap( videoHppTemplate,
81-
{ { "constants", generateConstants() },
82-
{ "copyrightMessage", m_copyrightMessage },
83-
{ "enums", generateEnums() },
84-
{ "includes", generateIncludes() },
85-
{ "structs", generateStructs() } } );
86-
87-
writeToFile( str, video_hpp );
38+
generateFileFromTemplate(
39+
"vulkan_video.cppm", "VideoCppmTemplate.hpp", { { "copyrightMessage", m_copyrightMessage }, { "usings", generateCppModuleUsings() } } );
8840
}
8941

90-
void VideoHppGenerator::generateCppModuleFile() const
91-
{
92-
std::string const vulkan_video_cppm = std::string( BASE_PATH ) + "/vulkan/vulkan_video.cppm";
93-
messager.message( "VideoHppGenerator: Generating " + vulkan_video_cppm + " ...\n" );
94-
95-
std::string const videoCppmTemplate = R"(${copyrightMessage}
96-
97-
// Note: This module is still in an experimental state.
98-
// Any feedback is welcome on https://github.com/KhronosGroup/Vulkan-Hpp/issues.
99-
100-
module;
101-
102-
#include <vulkan/vulkan_hpp_macros.hpp>
103-
104-
#if defined( __cpp_lib_modules ) && !defined( VULKAN_HPP_ENABLE_STD_MODULE )
105-
#define VULKAN_HPP_ENABLE_STD_MODULE
106-
#endif
107-
108-
#include <vulkan/vulkan_video.hpp>
109-
110-
export module vulkan_video_hpp;
111-
112-
export namespace VULKAN_HPP_NAMESPACE
113-
{
114-
namespace VULKAN_HPP_VIDEO_NAMESPACE
42+
void VideoHppGenerator::generateHppFile() const
11543
{
116-
${usings}
117-
} // namespace VULKAN_HPP_VIDEO_NAMESPACE
118-
} // namespace VULKAN_HPP_NAMESPACE
119-
)";
120-
121-
std::string str = replaceWithMap( videoCppmTemplate, { { "copyrightMessage", m_copyrightMessage }, { "usings", generateCppModuleUsings() } } );
122-
123-
writeToFile( str, vulkan_video_cppm );
44+
generateFileFromTemplate( "vulkan_video.hpp",
45+
"VideoHppTemplate.hpp",
46+
{ { "constants", generateConstants() },
47+
{ "copyrightMessage", m_copyrightMessage },
48+
{ "enums", generateEnums() },
49+
{ "includes", generateIncludes() },
50+
{ "structs", generateStructs() } } );
12451
}
12552

12653
void VideoHppGenerator::addImplicitlyRequiredTypes()
@@ -270,7 +197,8 @@ std::string VideoHppGenerator::generateConstants( ExtensionData const & extensio
270197
std::string str;
271198
for ( auto const & constant : extensionData.requireData.constants )
272199
{
273-
str += "VULKAN_HPP_CONSTEXPR_INLINE " + constant.second.type + " " + toCamelCase( stripPrefix( constant.first, "STD_VIDEO_" ), true ) + " = " + constant.second.value + ";\n";
200+
str += "VULKAN_HPP_CONSTEXPR_INLINE " + constant.second.type + " " + toCamelCase( stripPrefix( constant.first, "STD_VIDEO_" ), true ) + " = " +
201+
constant.second.value + ";\n";
274202
}
275203
if ( !str.empty() )
276204
{
@@ -1281,8 +1209,8 @@ int main( int argc, char ** argv )
12811209
std::cout << "VideoHppGenerator: Parsing " << filename << std::endl;
12821210
VideoHppGenerator generator( doc );
12831211

1212+
generator.generateCppmFile();
12841213
generator.generateHppFile();
1285-
generator.generateCppModuleFile();
12861214

12871215
#if !defined( CLANG_FORMAT_EXECUTABLE )
12881216
std::cout << "VideoHppGenerator: could not find clang-format. The generated files will not be formatted accordingly.\n";

VideoHppGenerator.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,8 @@ class VideoHppGenerator
2525
public:
2626
VideoHppGenerator( tinyxml2::XMLDocument const & document );
2727

28+
void generateCppmFile() const;
2829
void generateHppFile() const;
29-
void generateCppModuleFile() const;
3030

3131
private:
3232
struct ConstantData

0 commit comments

Comments
 (0)