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
|
#ifndef VULKAN_FROM_STRING_HPP
|
||||||
# define VULKAN_FROM_STRING_HPP
|
# define VULKAN_FROM_STRING_HPP
|
||||||
|
|
||||||
#include <string>
|
#include <optional>
|
||||||
#include <unordered_map>
|
#include <string_view>
|
||||||
#include <vulkan/${api}_enums.hpp>
|
#include <vulkan/${api}_enums.hpp>
|
||||||
|
|
||||||
namespace VULKAN_HPP_NAMESPACE
|
namespace VULKAN_HPP_NAMESPACE
|
||||||
{
|
{
|
||||||
${enumsFromString}
|
template<typename TEnum>
|
||||||
|
extern std::optional<TEnum> from_string(std::string_view);
|
||||||
} // namespace VULKAN_HPP_NAMESPACE
|
} // namespace VULKAN_HPP_NAMESPACE
|
||||||
#endif
|
#endif
|
||||||
)";
|
)";
|
||||||
|
|
||||||
std::string str = replaceWithMap( vulkanHandlesHppTemplate,
|
std::string str = replaceWithMap( vulkanHandlesHppTemplate,
|
||||||
{ { "api", m_api },
|
{ { "api", m_api },
|
||||||
{ "enumsFromString", generateEnumsFromString() },
|
|
||||||
{ "licenseHeader", m_vulkanLicenseHeader } } );
|
{ "licenseHeader", m_vulkanLicenseHeader } } );
|
||||||
|
|
||||||
writeToFile( str, vulkan_from_string_hpp );
|
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
|
void VulkanHppGenerator::generateCppModuleFile() const
|
||||||
{
|
{
|
||||||
std::string const vulkan_cppm = std::string( BASE_PATH ) + "/vulkan/" + m_api + ".cppm";
|
std::string const vulkan_cppm = std::string( BASE_PATH ) + "/vulkan/" + m_api + ".cppm";
|
||||||
@ -6825,24 +6849,18 @@ ${functionBody}
|
|||||||
std::string VulkanHppGenerator::generateEnumsFromString() const
|
std::string VulkanHppGenerator::generateEnumsFromString() const
|
||||||
{
|
{
|
||||||
const std::string enumsFromStringTemplate = R"(
|
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 ===
|
//=== ENUMs from_string ===
|
||||||
//=========================
|
//=========================
|
||||||
|
|
||||||
|
#include <vulkan/vulkan_from_string.hpp>
|
||||||
|
|
||||||
struct EnumFromStringMap
|
struct EnumFromStringMap
|
||||||
{
|
{
|
||||||
${enumsFromStringStorage}
|
${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}
|
${enumsFromString}
|
||||||
)";
|
)";
|
||||||
|
|
||||||
@ -6918,7 +6936,7 @@ std::string VulkanHppGenerator::generateEnumFromString( std::pair<std::string, E
|
|||||||
|
|
||||||
const std::string enumFromStringTemplate = R"(
|
const std::string enumFromStringTemplate = R"(
|
||||||
template<>
|
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}
|
${functionBody}
|
||||||
}
|
}
|
||||||
@ -6980,7 +6998,7 @@ std::string VulkanHppGenerator::generateEnumFromStringStorage( std::pair<std::st
|
|||||||
entries += previousLeave;
|
entries += previousLeave;
|
||||||
|
|
||||||
const std::string enumToStringTemplate = R"(
|
const std::string enumToStringTemplate = R"(
|
||||||
std::unordered_map<std::string, ${enumName}> ${enumName}Entries =
|
std::unordered_map<std::string_view, ${enumName}> ${enumName}Entries =
|
||||||
{
|
{
|
||||||
${entries}
|
${entries}
|
||||||
};
|
};
|
||||||
@ -15911,6 +15929,7 @@ int main( int argc, char ** argv )
|
|||||||
generator.generateStructsHppFile();
|
generator.generateStructsHppFile();
|
||||||
generator.generateToStringHppFile();
|
generator.generateToStringHppFile();
|
||||||
generator.generateFromStringHppFile();
|
generator.generateFromStringHppFile();
|
||||||
|
generator.generateFromStringInlFile();
|
||||||
generator.generateCppModuleFile();
|
generator.generateCppModuleFile();
|
||||||
|
|
||||||
#if !defined( CLANG_FORMAT_EXECUTABLE )
|
#if !defined( CLANG_FORMAT_EXECUTABLE )
|
||||||
|
@ -102,6 +102,7 @@ public:
|
|||||||
void generateStructsHppFile() const;
|
void generateStructsHppFile() const;
|
||||||
void generateToStringHppFile() const;
|
void generateToStringHppFile() const;
|
||||||
void generateFromStringHppFile() const;
|
void generateFromStringHppFile() const;
|
||||||
|
void generateFromStringInlFile() const;
|
||||||
void generateCppModuleFile() const;
|
void generateCppModuleFile() const;
|
||||||
void prepareRAIIHandles();
|
void prepareRAIIHandles();
|
||||||
void prepareVulkanFuncs();
|
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