mirror of
https://github.com/KhronosGroup/Vulkan-Hpp.git
synced 2024-10-14 16:32:17 +00:00
Merge pull request #1005 from asuessenbach/basetype
Add prefix and postfix support for basetype.
This commit is contained in:
commit
83c010d7f1
@ -766,7 +766,7 @@ std::string VulkanHppGenerator::generateBaseTypes() const
|
|||||||
// filter out VkFlags and VkFlags64, as they are mapped to our own Flags class
|
// filter out VkFlags and VkFlags64, as they are mapped to our own Flags class
|
||||||
if ( ( baseType.first != "VkFlags" ) && ( baseType.first != "VkFlags64" ) )
|
if ( ( baseType.first != "VkFlags" ) && ( baseType.first != "VkFlags64" ) )
|
||||||
{
|
{
|
||||||
str += " using " + stripPrefix( baseType.first, "Vk" ) + " = " + baseType.second.type + ";\n";
|
str += " using " + stripPrefix( baseType.first, "Vk" ) + " = " + baseType.second.typeInfo.compose() + ";\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return str;
|
return str;
|
||||||
@ -9600,9 +9600,9 @@ void VulkanHppGenerator::checkCorrectness()
|
|||||||
// baseType checks
|
// baseType checks
|
||||||
for ( auto const & baseType : m_baseTypes )
|
for ( auto const & baseType : m_baseTypes )
|
||||||
{
|
{
|
||||||
check( m_types.find( baseType.second.type ) != m_types.end(),
|
check( m_types.find( baseType.second.typeInfo.type ) != m_types.end(),
|
||||||
baseType.second.xmlLine,
|
baseType.second.xmlLine,
|
||||||
"basetype type <" + baseType.second.type + "> not specified" );
|
"basetype type <" + baseType.second.typeInfo.type + "> not specified" );
|
||||||
}
|
}
|
||||||
|
|
||||||
// bitmask checks
|
// bitmask checks
|
||||||
@ -12303,18 +12303,21 @@ void VulkanHppGenerator::readBaseType( tinyxml2::XMLElement const *
|
|||||||
TypeInfo typeInfo;
|
TypeInfo typeInfo;
|
||||||
std::tie( nameData, typeInfo ) = readNameAndType( element );
|
std::tie( nameData, typeInfo ) = readNameAndType( element );
|
||||||
|
|
||||||
|
if ( typeInfo.prefix == "typedef" )
|
||||||
|
{
|
||||||
|
// remove redundant typeInfo.prefix "typedef"
|
||||||
|
typeInfo.prefix.clear();
|
||||||
|
}
|
||||||
|
|
||||||
check( nameData.arraySizes.empty(), line, "name <" + nameData.name + "> with unsupported arraySizes" );
|
check( nameData.arraySizes.empty(), line, "name <" + nameData.name + "> with unsupported arraySizes" );
|
||||||
check( typeInfo.type.empty() || ( typeInfo.prefix == "typedef" ),
|
check( typeInfo.prefix.empty(), line, "unexpected type prefix <" + typeInfo.prefix + ">" );
|
||||||
|
check( typeInfo.postfix.empty() || ( typeInfo.postfix == "*" ),
|
||||||
line,
|
line,
|
||||||
"unexpected type prefix <" + typeInfo.prefix + ">" );
|
"unexpected type postfix <" + typeInfo.postfix + ">" );
|
||||||
check( typeInfo.prefix.empty() || ( typeInfo.prefix == "typedef" ),
|
|
||||||
line,
|
|
||||||
"unexpected type prefix <" + typeInfo.prefix + ">" );
|
|
||||||
check( typeInfo.postfix.empty(), line, "unexpected type postfix <" + typeInfo.postfix + ">" );
|
|
||||||
|
|
||||||
if ( !typeInfo.type.empty() )
|
if ( !typeInfo.type.empty() )
|
||||||
{
|
{
|
||||||
check( m_baseTypes.insert( std::make_pair( nameData.name, BaseTypeData( typeInfo.type, line ) ) ).second,
|
check( m_baseTypes.insert( std::make_pair( nameData.name, BaseTypeData( typeInfo, line ) ) ).second,
|
||||||
line,
|
line,
|
||||||
"basetype <" + nameData.name + "> already specified" );
|
"basetype <" + nameData.name + "> already specified" );
|
||||||
}
|
}
|
||||||
|
@ -47,32 +47,6 @@ public:
|
|||||||
std::string const & getVulkanLicenseHeader() const;
|
std::string const & getVulkanLicenseHeader() const;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct BaseTypeData
|
|
||||||
{
|
|
||||||
BaseTypeData( std::string const & type_, int line ) : type( type_ ), xmlLine( line ) {}
|
|
||||||
|
|
||||||
std::string type;
|
|
||||||
int xmlLine;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct BitmaskData
|
|
||||||
{
|
|
||||||
BitmaskData( std::string const & r, std::string const & t, int line )
|
|
||||||
: requirements( r ), type( t ), xmlLine( line )
|
|
||||||
{}
|
|
||||||
|
|
||||||
std::string requirements;
|
|
||||||
std::string type;
|
|
||||||
std::string alias;
|
|
||||||
int xmlLine;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct NameData
|
|
||||||
{
|
|
||||||
std::string name;
|
|
||||||
std::vector<std::string> arraySizes;
|
|
||||||
};
|
|
||||||
|
|
||||||
struct TypeInfo
|
struct TypeInfo
|
||||||
{
|
{
|
||||||
std::string compose( bool inNamespace = true ) const;
|
std::string compose( bool inNamespace = true ) const;
|
||||||
@ -102,6 +76,32 @@ private:
|
|||||||
std::string postfix;
|
std::string postfix;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct BaseTypeData
|
||||||
|
{
|
||||||
|
BaseTypeData( TypeInfo const & typeInfo_, int line ) : typeInfo( typeInfo_ ), xmlLine( line ) {}
|
||||||
|
|
||||||
|
TypeInfo typeInfo;
|
||||||
|
int xmlLine;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct BitmaskData
|
||||||
|
{
|
||||||
|
BitmaskData( std::string const & r, std::string const & t, int line )
|
||||||
|
: requirements( r ), type( t ), xmlLine( line )
|
||||||
|
{}
|
||||||
|
|
||||||
|
std::string requirements;
|
||||||
|
std::string type;
|
||||||
|
std::string alias;
|
||||||
|
int xmlLine;
|
||||||
|
};
|
||||||
|
|
||||||
|
struct NameData
|
||||||
|
{
|
||||||
|
std::string name;
|
||||||
|
std::vector<std::string> arraySizes;
|
||||||
|
};
|
||||||
|
|
||||||
struct ParamData
|
struct ParamData
|
||||||
{
|
{
|
||||||
ParamData( int line ) : optional( false ), xmlLine( line ) {}
|
ParamData( int line ) : optional( false ), xmlLine( line ) {}
|
||||||
|
Loading…
Reference in New Issue
Block a user