Add support of attribute "type" for a enums in an extension, storing them as a consta...
authorAndreas Süßenbach <asuessenbach@nvidia.com>
Thu, 28 Sep 2023 11:23:31 +0000 (13:23 +0200)
committerGitHub <noreply@github.com>
Thu, 28 Sep 2023 11:23:31 +0000 (13:23 +0200)
VulkanHppGenerator.cpp

index 84ccc6f..27c114f 100644 (file)
@@ -13841,9 +13841,10 @@ void VulkanHppGenerator::readRequireEnum(
                        { "extnumber", {} },
                        { "offset", {} },
                        { "protect", { "VK_ENABLE_BETA_EXTENSIONS" } },
+                       { "type", { "uint32_t" } },
                        { "value", {} } } );
 
-    std::string api, bitpos, extends, name, offset, protect, value;
+    std::string api, bitpos, extends, name, offset, protect, type, value;
     for ( auto const & attribute : attributes )
     {
       if ( attribute.first == "api" )
@@ -13870,6 +13871,10 @@ void VulkanHppGenerator::readRequireEnum(
       {
         protect = attribute.second;
       }
+      else if (attribute.first == "type")
+      {
+        type = attribute.second;
+      }
       else if ( attribute.first == "value" )
       {
         value = attribute.second;
@@ -13892,6 +13897,11 @@ void VulkanHppGenerator::readRequireEnum(
           checkForError( m_types.insert( { name, TypeData{ TypeCategory::Constant, { requiredBy }, line } } ).second,
                          line,
                          "required enum <" + name + "> specified by value <" + value + "> is already specified" );
+          if (type == "uint32_t")
+          {
+            assert( !m_constants.contains( name ) );
+            m_constants[name] = { type, value, line };
+          }
         }
       }
     }