Moved from_string functions and the mappings to an inl file so they don't horribly slow down the compilation on every file.
This commit is contained in:
parent
3898cc8725
commit
f40c3bbbab
@ -789,25 +789,49 @@ void VulkanHppGenerator::generateFromStringHppFile() const
|
||||
#ifndef VULKAN_FROM_STRING_HPP
|
||||
# define VULKAN_FROM_STRING_HPP
|
||||
|
||||
#include <string>
|
||||
#include <unordered_map>
|
||||
#include <optional>
|
||||
#include <string_view>
|
||||
#include <vulkan/${api}_enums.hpp>
|
||||
|
||||
namespace VULKAN_HPP_NAMESPACE
|
||||
{
|
||||
${enumsFromString}
|
||||
template<typename TEnum>
|
||||
extern std::optional<TEnum> from_string(std::string_view);
|
||||
} // namespace VULKAN_HPP_NAMESPACE
|
||||
#endif
|
||||
)";
|
||||
|
||||
std::string str = replaceWithMap( vulkanHandlesHppTemplate,
|
||||
{ { "api", m_api },
|
||||
{ "enumsFromString", generateEnumsFromString() },
|
||||
{ "licenseHeader", m_vulkanLicenseHeader } } );
|
||||
|
||||
writeToFile( str, vulkan_from_string_hpp );
|
||||
}
|
||||
|
||||
void VulkanHppGenerator::generateFromStringInlFile() const
|
||||
{
|
||||
std::string const vulkan_from_string_inl = std::string( BASE_PATH ) + "/vulkan/" + m_api + "_from_string.inl";
|
||||
std::cout << "VulkanHppGenerator: Generating " << vulkan_from_string_inl << "..." << std::endl;
|
||||
|
||||
std::string const vulkanHandlesInlTemplate = R"(${licenseHeader}
|
||||
|
||||
#include <unordered_map>
|
||||
#include <vulkan/${api}_from_string.hpp>
|
||||
|
||||
namespace VULKAN_HPP_NAMESPACE
|
||||
{
|
||||
${enumsFromString}
|
||||
} // namespace VULKAN_HPP_NAMESPACE
|
||||
)";
|
||||
|
||||
std::string str = replaceWithMap( vulkanHandlesInlTemplate,
|
||||
{ { "api", m_api },
|
||||
{ "enumsFromString", generateEnumsFromString() },
|
||||
{ "licenseHeader", m_vulkanLicenseHeader } } );
|
||||
|
||||
writeToFile( str, vulkan_from_string_inl );
|
||||
}
|
||||
|
||||
void VulkanHppGenerator::generateCppModuleFile() const
|
||||
{
|
||||
std::string const vulkan_cppm = std::string( BASE_PATH ) + "/vulkan/" + m_api + ".cppm";
|
||||
@ -6825,24 +6849,18 @@ ${functionBody}
|
||||
std::string VulkanHppGenerator::generateEnumsFromString() const
|
||||
{
|
||||
const std::string enumsFromStringTemplate = R"(
|
||||
#define VULKAN_HPP_ENUM_FROM_STRING_STORAGE \
|
||||
namespace VULKAN_HPP_NAMESPACE \
|
||||
{ \
|
||||
VULKAN_HPP_STORAGE_API const ::VULKAN_HPP_NAMESPACE::EnumFromStringMap enumFromStringMap; \
|
||||
}
|
||||
|
||||
//=========================
|
||||
//=== ENUMs from_string ===
|
||||
//=========================
|
||||
|
||||
#include <vulkan/vulkan_from_string.hpp>
|
||||
|
||||
struct EnumFromStringMap
|
||||
{
|
||||
${enumsFromStringStorage}
|
||||
};
|
||||
VULKAN_HPP_STORAGE_API extern const EnumFromStringMap enumFromStringMap;
|
||||
static const EnumFromStringMap enumFromStringMap;
|
||||
|
||||
template<typename TEnum>
|
||||
std::optional<TEnum> from_string(const std::string&);
|
||||
${enumsFromString}
|
||||
)";
|
||||
|
||||
@ -6918,7 +6936,7 @@ std::string VulkanHppGenerator::generateEnumFromString( std::pair<std::string, E
|
||||
|
||||
const std::string enumFromStringTemplate = R"(
|
||||
template<>
|
||||
VULKAN_HPP_INLINE std::optional<${enumName}> from_string<${enumName}>( const std::string& ${argument} )
|
||||
std::optional<${enumName}> from_string<${enumName}>( std::string_view ${argument} )
|
||||
{
|
||||
${functionBody}
|
||||
}
|
||||
@ -6980,7 +6998,7 @@ std::string VulkanHppGenerator::generateEnumFromStringStorage( std::pair<std::st
|
||||
entries += previousLeave;
|
||||
|
||||
const std::string enumToStringTemplate = R"(
|
||||
std::unordered_map<std::string, ${enumName}> ${enumName}Entries =
|
||||
std::unordered_map<std::string_view, ${enumName}> ${enumName}Entries =
|
||||
{
|
||||
${entries}
|
||||
};
|
||||
@ -15911,6 +15929,7 @@ int main( int argc, char ** argv )
|
||||
generator.generateStructsHppFile();
|
||||
generator.generateToStringHppFile();
|
||||
generator.generateFromStringHppFile();
|
||||
generator.generateFromStringInlFile();
|
||||
generator.generateCppModuleFile();
|
||||
|
||||
#if !defined( CLANG_FORMAT_EXECUTABLE )
|
||||
|
@ -102,6 +102,7 @@ public:
|
||||
void generateStructsHppFile() const;
|
||||
void generateToStringHppFile() const;
|
||||
void generateFromStringHppFile() const;
|
||||
void generateFromStringInlFile() const;
|
||||
void generateCppModuleFile() const;
|
||||
void prepareRAIIHandles();
|
||||
void prepareVulkanFuncs();
|
||||
|
File diff suppressed because it is too large
Load Diff
7754
vulkan/vulkan_from_string.inl
Normal file
7754
vulkan/vulkan_from_string.inl
Normal file
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user