mirror of
https://github.com/KhronosGroup/Vulkan-Hpp.git
synced 2025-09-08 11:27:25 -04:00
Filter out multiply spec'ed handles for UniqueHandles types. (#2188)
This commit is contained in:
parent
5bac8fc8fc
commit
8ee3f2fabd
@ -8785,7 +8785,7 @@ ${objectTypeCases}
|
||||
return addTitleAndProtection( title, objectTypeCases );
|
||||
};
|
||||
|
||||
std::string objectTypeCases;
|
||||
std::string objectTypeCases;
|
||||
std::set<std::string> listedTypes;
|
||||
for ( auto const & feature : m_features )
|
||||
{
|
||||
@ -12820,7 +12820,9 @@ ${aliasHandle})";
|
||||
return "";
|
||||
}
|
||||
|
||||
std::string VulkanHppGenerator::generateUniqueHandle( std::vector<RequireData> const & requireData, std::string const & title ) const
|
||||
std::string VulkanHppGenerator::generateUniqueHandle( std::vector<RequireData> const & requireData,
|
||||
std::string const & title,
|
||||
std::set<std::string> & listedHandles ) const
|
||||
{
|
||||
std::string str;
|
||||
for ( auto const & require : requireData )
|
||||
@ -12828,7 +12830,7 @@ std::string VulkanHppGenerator::generateUniqueHandle( std::vector<RequireData> c
|
||||
for ( auto const & type : require.types )
|
||||
{
|
||||
auto handleIt = m_handles.find( type.name );
|
||||
if ( handleIt != m_handles.end() )
|
||||
if ( ( handleIt != m_handles.end() ) && listedHandles.insert( handleIt->first ).second )
|
||||
{
|
||||
str += generateUniqueHandle( *handleIt );
|
||||
}
|
||||
@ -12849,14 +12851,15 @@ ${uniqueHandles}
|
||||
#endif /*VULKAN_HPP_NO_SMART_HANDLE*/
|
||||
)";
|
||||
|
||||
std::string uniqueHandles;
|
||||
std::string uniqueHandles;
|
||||
std::set<std::string> listedHandles;
|
||||
for ( auto const & feature : m_features )
|
||||
{
|
||||
uniqueHandles += generateUniqueHandle( feature.requireData, feature.name );
|
||||
uniqueHandles += generateUniqueHandle( feature.requireData, feature.name, listedHandles );
|
||||
}
|
||||
for ( auto const & extension : m_extensions )
|
||||
{
|
||||
uniqueHandles += generateUniqueHandle( extension.requireData, extension.name );
|
||||
uniqueHandles += generateUniqueHandle( extension.requireData, extension.name, listedHandles );
|
||||
}
|
||||
if ( uniqueHandles.back() == '\n' )
|
||||
{
|
||||
|
@ -519,9 +519,9 @@ private:
|
||||
std::string & instanceCommandAssignments,
|
||||
std::string & deviceCommandAssignments ) const;
|
||||
void appendCppModuleCommands( std::vector<RequireData> const & requireData,
|
||||
std::set<std::string> & listedCommands,
|
||||
std::string const & title,
|
||||
std::string & commandMembers ) const;
|
||||
std::set<std::string> & listedCommands,
|
||||
std::string const & title,
|
||||
std::string & commandMembers ) const;
|
||||
void appendRAIIDispatcherCommands( std::vector<RequireData> const & requireData,
|
||||
std::set<std::string> & listedCommands,
|
||||
std::string const & title,
|
||||
@ -1048,34 +1048,34 @@ private:
|
||||
std::string
|
||||
generateStructForwardDeclarations( std::vector<RequireData> const & requireData, std::string const & title, std::set<std::string> & listedStructs ) const;
|
||||
std::tuple<std::string, std::string, std::string, std::string> generateStructMembers( std::pair<std::string, StructureData> const & structData ) const;
|
||||
std::string generateStructSetter( std::string const & structureName, std::vector<MemberData> const & memberData, size_t index ) const;
|
||||
std::string generateStructSubConstructor( std::pair<std::string, StructureData> const & structData ) const;
|
||||
std::string generateSuccessCheck( std::vector<std::string> const & successCodes ) const;
|
||||
std::string generateSuccessCode( std::string const & code ) const;
|
||||
std::string generateSuccessCodeList( std::vector<std::string> const & successCodes, bool enumerating ) const;
|
||||
std::string generateThrowResultException() const;
|
||||
std::string generateTypenameCheck( std::vector<size_t> const & returnParams,
|
||||
std::map<size_t, VectorParamData> const & vectorParams,
|
||||
std::vector<size_t> const & chainedReturnParams,
|
||||
bool definition,
|
||||
std::vector<std::string> const & dataTypes,
|
||||
CommandFlavourFlags flavourFlags ) const;
|
||||
std::string generateUnion( std::pair<std::string, StructureData> const & structure ) const;
|
||||
std::string generateUniqueHandle( std::pair<std::string, HandleData> const & handleData ) const;
|
||||
std::string generateUniqueHandle( std::vector<RequireData> const & requireData, std::string const & title ) const;
|
||||
std::string generateUniqueHandles() const;
|
||||
std::string generateSharedHandle( std::pair<std::string, HandleData> const & handleData ) const;
|
||||
std::string generateSharedHandle( std::vector<RequireData> const & requireData, std::string const & title ) const;
|
||||
std::string generateSharedHandleNoDestroy( std::pair<std::string, HandleData> const & handleData ) const;
|
||||
std::string generateSharedHandleNoDestroy( std::vector<RequireData> const & requireData, std::string const & title ) const;
|
||||
std::string generateSharedHandles() const;
|
||||
std::string generateSharedHandlesNoDestroy() const;
|
||||
std::string generateVectorSizeCheck( std::string const & name,
|
||||
CommandData const & commandData,
|
||||
size_t initialSkipCount,
|
||||
std::map<size_t, std::vector<size_t>> const & countToVectorMap,
|
||||
std::set<size_t> const & skippedParams,
|
||||
bool onlyThrows ) const;
|
||||
std::string generateStructSetter( std::string const & structureName, std::vector<MemberData> const & memberData, size_t index ) const;
|
||||
std::string generateStructSubConstructor( std::pair<std::string, StructureData> const & structData ) const;
|
||||
std::string generateSuccessCheck( std::vector<std::string> const & successCodes ) const;
|
||||
std::string generateSuccessCode( std::string const & code ) const;
|
||||
std::string generateSuccessCodeList( std::vector<std::string> const & successCodes, bool enumerating ) const;
|
||||
std::string generateThrowResultException() const;
|
||||
std::string generateTypenameCheck( std::vector<size_t> const & returnParams,
|
||||
std::map<size_t, VectorParamData> const & vectorParams,
|
||||
std::vector<size_t> const & chainedReturnParams,
|
||||
bool definition,
|
||||
std::vector<std::string> const & dataTypes,
|
||||
CommandFlavourFlags flavourFlags ) const;
|
||||
std::string generateUnion( std::pair<std::string, StructureData> const & structure ) const;
|
||||
std::string generateUniqueHandle( std::pair<std::string, HandleData> const & handleData ) const;
|
||||
std::string generateUniqueHandle( std::vector<RequireData> const & requireData, std::string const & title, std::set<std::string> & listedHandles ) const;
|
||||
std::string generateUniqueHandles() const;
|
||||
std::string generateSharedHandle( std::pair<std::string, HandleData> const & handleData ) const;
|
||||
std::string generateSharedHandle( std::vector<RequireData> const & requireData, std::string const & title ) const;
|
||||
std::string generateSharedHandleNoDestroy( std::pair<std::string, HandleData> const & handleData ) const;
|
||||
std::string generateSharedHandleNoDestroy( std::vector<RequireData> const & requireData, std::string const & title ) const;
|
||||
std::string generateSharedHandles() const;
|
||||
std::string generateSharedHandlesNoDestroy() const;
|
||||
std::string generateVectorSizeCheck( std::string const & name,
|
||||
CommandData const & commandData,
|
||||
size_t initialSkipCount,
|
||||
std::map<size_t, std::vector<size_t>> const & countToVectorMap,
|
||||
std::set<size_t> const & skippedParams,
|
||||
bool onlyThrows ) const;
|
||||
std::pair<std::string, std::string> getParentTypeAndName( std::pair<std::string, HandleData> const & handle ) const;
|
||||
std::string getPlatform( std::string const & title ) const;
|
||||
std::pair<std::string, std::string> getPoolTypeAndName( std::string const & type ) const;
|
||||
|
Loading…
x
Reference in New Issue
Block a user