2019-01-09 10:55:11 +00:00
// Copyright(c) 2015-2019, NVIDIA CORPORATION. All rights reserved.
2017-12-21 11:40:48 +00:00
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
# pragma once
2023-07-11 13:39:17 +00:00
# include "XMLHelper.hpp"
2017-12-21 11:40:48 +00:00
# include <iostream>
2020-04-12 19:49:12 +00:00
# include <map>
2017-12-21 11:40:48 +00:00
# include <set>
# include <tinyxml2.h>
2020-04-12 19:49:12 +00:00
# include <vector>
2017-12-21 11:40:48 +00:00
2024-01-23 13:10:52 +00:00
constexpr size_t INVALID_INDEX = static_cast < size_t > ( ~ 0 ) ;
2022-09-12 14:53:44 +00:00
2022-11-28 15:53:24 +00:00
template < typename BitType >
class Flags
{
public :
using MaskType = typename std : : underlying_type < BitType > : : type ;
constexpr Flags ( ) noexcept : m_mask ( 0 ) { }
constexpr Flags ( BitType bit ) noexcept : m_mask ( static_cast < MaskType > ( bit ) ) { }
constexpr explicit Flags ( MaskType flags ) noexcept : m_mask ( flags ) { }
2023-10-02 12:57:52 +00:00
constexpr Flags < BitType > & operator | = ( Flags < BitType > const & rhs ) noexcept
{
m_mask | = rhs . m_mask ;
return * this ;
}
2022-11-28 15:53:24 +00:00
constexpr bool operator ! ( ) const noexcept
{
return ! m_mask ;
}
constexpr bool operator & ( BitType const & rhs ) const noexcept
{
return m_mask & static_cast < MaskType > ( rhs ) ;
}
constexpr Flags < BitType > operator & ( Flags < BitType > const & rhs ) const noexcept
{
return Flags < BitType > ( m_mask & rhs . m_mask ) ;
}
constexpr Flags < BitType > operator | ( Flags < BitType > const & rhs ) const noexcept
{
return Flags < BitType > ( m_mask | rhs . m_mask ) ;
}
private :
MaskType m_mask ;
} ;
enum class CommandFlavourFlagBits : uint8_t
{
2023-02-02 13:09:45 +00:00
enhanced = 1 < < 0 ,
chained = 1 < < 1 ,
singular = 1 < < 2 ,
unique = 1 < < 3 ,
2023-10-02 12:57:52 +00:00
withAllocator = 1 < < 4 ,
noReturn = 1 < < 5 ,
keepVoidPtr = 1 < < 6
2022-11-28 15:53:24 +00:00
} ;
using CommandFlavourFlags = Flags < CommandFlavourFlagBits > ;
constexpr CommandFlavourFlags operator | ( CommandFlavourFlagBits const & lhs , CommandFlavourFlagBits const & rhs ) noexcept
{
return CommandFlavourFlags ( lhs ) | CommandFlavourFlags ( rhs ) ;
}
2017-12-21 11:40:48 +00:00
class VulkanHppGenerator
{
2020-04-12 19:49:12 +00:00
public :
2023-03-07 07:23:14 +00:00
VulkanHppGenerator ( tinyxml2 : : XMLDocument const & document , std : : string const & api ) ;
void generateEnumsHppFile ( ) const ;
2023-03-28 15:33:11 +00:00
void generateExtensionInspectionFile ( ) const ;
2023-03-07 07:23:14 +00:00
void generateFormatTraitsHppFile ( ) const ;
void generateFuncsHppFile ( ) const ;
void generateHandlesHppFile ( ) const ;
void generateHashHppFile ( ) const ;
void generateHppFile ( ) const ;
2023-09-07 13:20:10 +00:00
void generateMacrosFile ( ) const ;
2023-03-07 07:23:14 +00:00
void generateRAIIHppFile ( ) const ;
2023-09-19 11:04:36 +00:00
void generateSharedHppFile ( ) const ;
2023-03-07 07:23:14 +00:00
void generateStaticAssertionsHppFile ( ) const ;
void generateStructsHppFile ( ) const ;
void generateToStringHppFile ( ) const ;
2023-06-28 12:10:51 +00:00
void generateCppModuleFile ( ) const ;
2022-08-02 08:00:16 +00:00
void prepareRAIIHandles ( ) ;
2023-01-09 10:32:23 +00:00
void prepareVulkanFuncs ( ) ;
2020-04-12 19:49:12 +00:00
2023-10-26 12:59:13 +00:00
struct MacroData
{
std : : string deprecatedComment = { } ;
std : : string calleeMacro = { } ;
std : : vector < std : : string > params = { } ;
std : : string definition = { } ;
} ;
2020-04-12 19:49:12 +00:00
private :
2023-03-01 09:17:02 +00:00
struct AliasData
2021-06-30 06:56:05 +00:00
{
2023-03-22 07:52:35 +00:00
std : : string name = { } ;
int xmlLine = { } ;
2023-03-01 09:17:02 +00:00
} ;
2021-06-30 06:56:05 +00:00
2023-03-01 09:17:02 +00:00
struct BaseTypeData
{
2023-03-22 07:52:35 +00:00
TypeInfo typeInfo = { } ;
int xmlLine = { } ;
2021-06-30 06:56:05 +00:00
} ;
struct BitmaskData
{
2024-04-11 06:43:15 +00:00
std : : map < std : : string , int > aliases = { } ;
std : : string require = { } ;
std : : string type = { } ;
int xmlLine = { } ;
2021-06-30 06:56:05 +00:00
} ;
2024-04-03 06:29:10 +00:00
struct EnumValueAlias
2023-07-11 13:39:17 +00:00
{
2024-04-03 06:29:10 +00:00
std : : string alias = { } ;
std : : string name = { } ;
std : : string protect = { } ;
bool supported = { } ;
int xmlLine = { } ;
2023-07-11 13:39:17 +00:00
} ;
2024-04-03 06:29:10 +00:00
struct EnumValueData
{
std : : map < std : : string , int > aliases = { } ;
std : : string bitpos = { } ;
std : : string name = { } ;
std : : string protect = { } ;
bool supported = { } ;
std : : string value = { } ;
int xmlLine = { } ;
} ;
2024-03-25 09:47:09 +00:00
2023-07-11 13:39:17 +00:00
struct EnumData
{
void addEnumAlias ( int line , std : : string const & name , std : : string const & alias , std : : string const & protect , bool supported ) ;
void addEnumValue (
int line , std : : string const & valueName , std : : string const & protect , std : : string const & bitpos , std : : string const & value , bool supported ) ;
2024-04-24 06:33:25 +00:00
std : : map < std : : string , int > aliases = { } ;
2024-04-03 06:29:10 +00:00
std : : string bitwidth = { } ;
bool isBitmask = false ;
std : : vector < EnumValueAlias > valueAliases = { } ; // temporary storage for aliases, as they might be specified before the actual value is specified
std : : vector < EnumValueData > values = { } ;
int xmlLine = { } ;
2023-07-11 13:39:17 +00:00
} ;
2021-06-30 06:56:05 +00:00
struct NameData
{
2023-03-22 07:52:35 +00:00
std : : string name = { } ;
std : : vector < std : : string > arraySizes = { } ;
2021-06-30 06:56:05 +00:00
} ;
2020-04-12 19:49:12 +00:00
struct ParamData
{
2023-03-22 07:52:35 +00:00
TypeInfo type = { } ;
std : : string name = { } ;
std : : vector < std : : string > arraySizes = { } ;
std : : string lenExpression = { } ;
std : : vector < std : : pair < std : : string , size_t > > lenParams = { } ;
bool optional = false ;
std : : pair < std : : string , size_t > strideParam = { } ;
int xmlLine = { } ;
2020-04-12 19:49:12 +00:00
} ;
struct CommandData
{
2024-04-11 06:43:15 +00:00
std : : map < std : : string , int > aliases = { } ;
std : : vector < std : : string > errorCodes = { } ;
std : : string handle = { } ;
std : : vector < ParamData > params = { } ;
std : : set < std : : string > requiredBy = { } ;
std : : string returnType = { } ;
std : : vector < std : : string > successCodes = { } ;
int xmlLine = { } ;
2020-04-12 19:49:12 +00:00
} ;
2023-03-01 09:17:02 +00:00
struct ConstantData
2023-01-26 16:12:29 +00:00
{
2024-07-23 07:47:41 +00:00
std : : string type = { } ;
std : : string value = { } ;
int xmlLine = { } ;
2023-01-26 16:12:29 +00:00
} ;
2023-03-01 09:17:02 +00:00
struct DefineData
{
2023-06-28 12:10:51 +00:00
bool deprecated = false ;
std : : string require = { } ;
int xmlLine = { } ;
std : : string deprecationReason = { } ;
std : : string possibleCallee = { } ;
std : : vector < std : : string > params = { } ;
std : : string possibleDefinition = { } ;
} ;
struct DefinesPartition
{
std : : map < std : : string , DefineData > callees = { } ;
std : : map < std : : string , DefineData > callers = { } ;
std : : map < std : : string , DefineData > values = { } ;
2023-03-01 09:17:02 +00:00
} ;
struct RemoveData
2021-07-21 15:09:21 +00:00
{
2023-03-01 09:17:02 +00:00
std : : vector < std : : string > commands = { } ;
std : : vector < std : : string > enums = { } ;
std : : vector < std : : string > types = { } ;
2023-03-22 07:52:35 +00:00
int xmlLine = { } ;
2023-03-01 09:17:02 +00:00
} ;
2021-07-21 15:09:21 +00:00
2023-03-01 09:17:02 +00:00
struct RequireData
{
2024-06-05 14:44:13 +00:00
std : : string depends = { } ;
std : : vector < std : : pair < std : : string , int > > commands = { } ;
std : : map < std : : string , std : : string > enumConstants = { } ;
std : : vector < std : : string > constants = { } ;
std : : vector < std : : string > types = { } ;
int xmlLine = { } ;
2021-07-21 15:09:21 +00:00
} ;
2020-04-12 19:49:12 +00:00
struct ExtensionData
{
2023-05-17 08:23:27 +00:00
std : : string deprecatedBy = { } ;
bool isDeprecated = false ;
std : : string name = { } ;
std : : string number = { } ;
std : : string obsoletedBy = { } ;
std : : string platform = { } ;
std : : string promotedTo = { } ;
std : : map < std : : string , std : : vector < std : : vector < std : : string > > > depends = { } ;
2023-11-14 15:50:41 +00:00
std : : vector < std : : string > ratified = { } ;
2023-05-17 08:23:27 +00:00
std : : vector < RequireData > requireData = { } ;
2023-11-14 15:50:41 +00:00
std : : vector < std : : string > supported = { } ;
2023-05-17 08:23:27 +00:00
std : : string type = { } ;
int xmlLine = 0 ;
2023-03-01 09:17:02 +00:00
} ;
2020-04-12 19:49:12 +00:00
2023-07-11 13:39:17 +00:00
struct FeatureData
{
std : : string name = { } ;
std : : string number = { } ;
std : : vector < RemoveData > removeData = { } ;
std : : vector < RequireData > requireData = { } ;
int xmlLine = { } ;
} ;
2023-03-01 09:17:02 +00:00
struct ExternalTypeData
{
std : : string require = { } ;
int xmlLine = 0 ;
2020-04-12 19:49:12 +00:00
} ;
2021-11-22 13:27:34 +00:00
struct ComponentData
{
2023-03-22 07:52:35 +00:00
std : : string bits = { } ;
std : : string name = { } ;
std : : string numericFormat = { } ;
std : : string planeIndex = { } ;
int xmlLine = { } ;
2021-11-22 13:27:34 +00:00
} ;
struct PlaneData
{
2023-03-22 07:52:35 +00:00
std : : string compatible = { } ;
std : : string heightDivisor = { } ;
std : : string widthDivisor = { } ;
int xmlLine = { } ;
2021-11-22 13:27:34 +00:00
} ;
struct FormatData
{
2023-03-22 07:52:35 +00:00
std : : string blockExtent = { } ;
std : : string blockSize = { } ;
std : : string chroma = { } ;
std : : string classAttribute = { } ;
std : : vector < ComponentData > components = { } ;
std : : string compressed = { } ;
std : : string packed = { } ;
std : : vector < PlaneData > planes = { } ;
std : : string spirvImageFormat = { } ;
std : : string texelsPerBlock = { } ;
int xmlLine = { } ;
2021-11-22 13:27:34 +00:00
} ;
2021-09-21 12:20:24 +00:00
struct FuncPointerArgumentData
{
2023-03-22 07:52:35 +00:00
std : : string name = { } ;
std : : string type = { } ;
int xmlLine = { } ;
2021-09-21 12:20:24 +00:00
} ;
2020-04-12 19:49:12 +00:00
struct FuncPointerData
{
2023-03-22 07:52:35 +00:00
std : : vector < FuncPointerArgumentData > arguments = { } ;
std : : string require = { } ;
int xmlLine = { } ;
2020-04-12 19:49:12 +00:00
} ;
struct HandleData
{
2024-04-30 07:12:25 +00:00
std : : map < std : : string , int > aliases = { } ;
std : : set < std : : string > childrenHandles = { } ;
std : : set < std : : string > commands = { } ;
std : : string deleteCommand = { } ;
std : : string deletePool = { } ;
std : : string destructorType = { } ;
std : : string objTypeEnum = { } ;
std : : string parent = { } ;
std : : set < std : : string > secondLevelCommands = { } ;
bool isDispatchable = { } ;
int xmlLine = { } ;
2021-02-17 09:49:59 +00:00
// RAII data
2023-03-22 07:52:35 +00:00
std : : map < std : : string , CommandData > : : const_iterator destructorIt = { } ;
std : : vector < std : : map < std : : string , CommandData > : : const_iterator > constructorIts = { } ;
2020-04-12 19:49:12 +00:00
} ;
2023-07-11 13:39:17 +00:00
struct PlatformData
2023-03-01 09:17:02 +00:00
{
2023-07-11 13:39:17 +00:00
std : : string protect = { } ;
int xmlLine = { } ;
2023-03-01 09:17:02 +00:00
} ;
2020-04-12 19:49:12 +00:00
struct MemberData
{
2023-09-19 10:05:06 +00:00
std : : string defaultValue = { } ;
2023-03-22 07:52:35 +00:00
TypeInfo type = { } ;
std : : string name = { } ;
std : : vector < std : : string > arraySizes = { } ;
std : : string bitCount = { } ;
std : : vector < std : : string > lenExpressions = { } ;
std : : vector < std : : pair < std : : string , size_t > > lenMembers = { } ;
bool noAutoValidity = { } ;
std : : vector < bool > optional = { } ;
std : : vector < std : : string > selection = { } ;
std : : string selector = { } ;
std : : string value = { } ;
int xmlLine = { } ;
2020-04-12 19:49:12 +00:00
} ;
struct StructureData
{
2024-05-02 07:28:44 +00:00
std : : map < std : : string , int > aliases = { } ;
bool allowDuplicate = { } ;
2024-05-06 08:31:43 +00:00
bool isExtended = { } ;
2024-05-02 07:28:44 +00:00
bool isUnion = { } ;
bool returnedOnly = { } ;
bool mutualExclusiveLens = { } ;
std : : vector < MemberData > members = { } ;
std : : vector < std : : string > structExtends = { } ;
std : : string subStruct = { } ;
int xmlLine = { } ;
2020-04-12 19:49:12 +00:00
} ;
2023-03-01 09:17:02 +00:00
struct TagData
{
2023-03-22 07:52:35 +00:00
int xmlLine = { } ;
2023-03-01 09:17:02 +00:00
} ;
2022-09-12 14:53:44 +00:00
struct VectorParamData
{
size_t lenParam = INVALID_INDEX ;
size_t strideParam = INVALID_INDEX ;
2024-06-11 14:53:15 +00:00
bool byStructure = false ;
2022-09-12 14:53:44 +00:00
} ;
2024-07-23 07:47:41 +00:00
struct VideoRequireCapabilities
{
int xmlLine = { } ;
std : : string name ;
std : : string member ;
std : : string value ;
} ;
struct VideoFormat
{
int xmlLine = { } ;
2024-08-06 07:22:31 +00:00
std : : vector < std : : string > formatProperties ;
2024-07-23 07:47:41 +00:00
std : : string name ;
std : : vector < std : : string > usage ;
std : : vector < VideoRequireCapabilities > requireCapabilities ;
} ;
struct VideoProfile
{
int xmlLine = { } ;
std : : string name ;
std : : string value ;
} ;
struct VideoProfileMember
{
int xmlLine = { } ;
std : : string name ;
std : : vector < VideoProfile > profiles ;
} ;
struct VideoProfiles
{
int xmlLine = { } ;
std : : string name ;
std : : vector < VideoProfileMember > members ;
} ;
struct VideoCodec
{
int xmlLine = { } ;
std : : string name ;
2024-08-06 07:22:31 +00:00
std : : vector < std : : string > capabilities ;
2024-07-23 07:47:41 +00:00
std : : string extend ;
std : : string value ;
std : : vector < VideoFormat > formats ;
std : : vector < VideoProfiles > profiles ;
} ;
2023-06-28 12:10:51 +00:00
struct MacroVisitor final : tinyxml2 : : XMLVisitor
{
// comments, then name, then parameters and definition together, because that's how they appear in the xml!
// guaranteed to be 3 elements long
std : : vector < std : : string > macro ;
bool Visit ( tinyxml2 : : XMLText const & text ) override
{
if ( auto const nodeText = text . Value ( ) ; nodeText ! = nullptr )
{
macro . emplace_back ( nodeText ) ;
}
return true ;
}
} ;
2020-04-12 19:49:12 +00:00
private :
2021-07-13 07:01:55 +00:00
void addCommand ( std : : string const & name , CommandData & commandData ) ;
2023-03-01 09:17:02 +00:00
void addCommandsToHandle ( std : : vector < RequireData > const & requireData ) ;
2023-03-02 21:14:37 +00:00
void addMissingFlagBits ( std : : vector < RequireData > & requireData , std : : string const & requiredBy ) ;
2022-02-28 09:11:04 +00:00
std : : string addTitleAndProtection ( std : : string const & title , std : : string const & strIf , std : : string const & strElse = { } ) const ;
2022-09-12 14:53:44 +00:00
bool allVectorSizesSupported ( std : : vector < ParamData > const & params , std : : map < size_t , VectorParamData > const & vectorParams ) const ;
2021-07-21 15:09:21 +00:00
void appendDispatchLoaderDynamicCommands ( std : : vector < RequireData > const & requireData ,
2021-07-13 07:01:55 +00:00
std : : set < std : : string > & listedCommands ,
std : : string const & title ,
std : : string & commandMembers ,
std : : string & initialCommandAssignments ,
std : : string & instanceCommandAssignments ,
std : : string & deviceCommandAssignments ) const ;
2021-07-21 16:15:31 +00:00
void appendRAIIDispatcherCommands ( std : : vector < RequireData > const & requireData ,
std : : set < std : : string > & listedCommands ,
std : : string const & title ,
std : : string & contextInitializers ,
std : : string & contextMembers ,
std : : string & deviceAssignments ,
std : : string & deviceMembers ,
std : : string & instanceAssignments ,
std : : string & instanceMembers ) const ;
2021-08-02 10:04:37 +00:00
void checkBitmaskCorrectness ( ) const ;
void checkCommandCorrectness ( ) const ;
2021-08-04 21:43:49 +00:00
void checkCorrectness ( ) const ;
2023-01-26 16:12:29 +00:00
void checkDefineCorrectness ( ) const ;
2021-08-02 10:04:37 +00:00
void checkEnumCorrectness ( ) const ;
2021-07-30 09:25:48 +00:00
void checkEnumCorrectness ( std : : vector < RequireData > const & requireData ) const ;
2022-02-28 09:11:04 +00:00
bool checkEquivalentSingularConstructor ( std : : vector < std : : map < std : : string , CommandData > : : const_iterator > const & constructorIts ,
std : : map < std : : string , CommandData > : : const_iterator constructorIt ,
std : : vector < ParamData > : : const_iterator lenIt ) const ;
void checkExtensionCorrectness ( ) const ;
void checkFuncPointerCorrectness ( ) const ;
void checkHandleCorrectness ( ) const ;
void checkStructCorrectness ( ) const ;
void checkStructMemberCorrectness ( std : : string const & structureName , std : : vector < MemberData > const & members , std : : set < std : : string > & sTypeValues ) const ;
2022-09-12 14:53:44 +00:00
std : : string combineDataTypes ( std : : map < size_t , VectorParamData > const & vectorParams ,
std : : vector < size_t > const & returnParams ,
bool enumerating ,
std : : vector < std : : string > const & dataTypes ,
2022-11-28 15:53:24 +00:00
CommandFlavourFlags flavourFlags ,
2022-09-12 14:53:44 +00:00
bool raii ) const ;
2024-04-03 06:29:10 +00:00
bool contains ( std : : vector < EnumValueData > const & enumValues , std : : string const & name ) const ;
2022-05-04 06:37:09 +00:00
bool containsArray ( std : : string const & type ) const ;
2022-06-13 08:47:13 +00:00
bool containsFuncPointer ( std : : string const & type ) const ;
2022-05-04 06:37:09 +00:00
bool containsFloatingPoints ( std : : vector < MemberData > const & members ) const ;
bool containsUnion ( std : : string const & type ) const ;
2024-06-11 14:53:15 +00:00
bool describesVector ( StructureData const & structure , std : : string const & type = " " ) const ;
2023-04-26 08:56:57 +00:00
std : : vector < size_t > determineChainedReturnParams ( std : : vector < ParamData > const & params , std : : vector < size_t > const & returnParams ) const ;
2022-05-04 06:37:09 +00:00
std : : vector < size_t > determineConstPointerParams ( std : : vector < ParamData > const & params ) const ;
std : : vector < std : : string > determineDataTypes ( std : : vector < VulkanHppGenerator : : ParamData > const & params ,
2022-09-12 14:53:44 +00:00
std : : map < size_t , VectorParamData > const & vectorParams ,
2022-05-04 06:37:09 +00:00
std : : vector < size_t > const & returnParams ,
2022-09-21 07:28:38 +00:00
std : : set < size_t > const & templatedParams ) const ;
2022-05-04 06:37:09 +00:00
size_t determineDefaultStartIndex ( std : : vector < ParamData > const & params , std : : set < size_t > const & skippedParams ) const ;
2022-09-12 14:53:44 +00:00
bool determineEnumeration ( std : : map < size_t , VectorParamData > const & vectorParams , std : : vector < size_t > const & returnParams ) const ;
2022-05-18 07:12:00 +00:00
size_t determineInitialSkipCount ( std : : string const & command ) const ;
std : : vector < size_t > determineReturnParams ( std : : vector < ParamData > const & params ) const ;
2021-02-17 09:49:59 +00:00
std : : vector < std : : map < std : : string , CommandData > : : const_iterator >
2022-02-28 09:11:04 +00:00
determineRAIIHandleConstructors ( std : : string const & handleType , std : : map < std : : string , CommandData > : : const_iterator destructorIt ) const ;
std : : map < std : : string , CommandData > : : const_iterator determineRAIIHandleDestructor ( std : : string const & handleType ) const ;
2023-03-01 09:17:02 +00:00
std : : set < size_t > determineSingularParams ( size_t returnParam , std : : map < size_t , VectorParamData > const & vectorParams ) const ;
std : : set < size_t > determineSkippedParams ( std : : vector < ParamData > const & params ,
size_t initialSkipCount ,
std : : map < size_t , VectorParamData > const & vectorParams ,
std : : vector < size_t > const & returnParam ,
bool singular ) const ;
std : : string determineSubStruct ( std : : pair < std : : string , StructureData > const & structure ) const ;
std : : map < size_t , VectorParamData > determineVectorParams ( std : : vector < ParamData > const & params ) const ;
std : : set < size_t > determineVoidPointerParams ( std : : vector < ParamData > const & params ) const ;
2024-04-03 06:29:10 +00:00
void distributeEnumValueAliases ( ) ;
2023-03-01 09:17:02 +00:00
void distributeSecondLevelCommands ( std : : set < std : : string > const & specialFunctions ) ;
2024-05-02 07:28:44 +00:00
void distributeStructAliases ( ) ;
2023-03-13 08:08:01 +00:00
void filterLenMembers ( ) ;
2023-03-01 09:17:02 +00:00
std : : map < std : : string , AliasData > : : const_iterator findAlias ( std : : string const & name , std : : map < std : : string , AliasData > const & aliases ) const ;
2023-03-02 21:14:37 +00:00
std : : string findBaseName ( std : : string aliasName , std : : map < std : : string , AliasData > const & aliases ) const ;
2023-03-01 09:17:02 +00:00
std : : vector < FeatureData > : : const_iterator findFeature ( std : : string const & name ) const ;
2023-03-13 08:08:01 +00:00
std : : vector < ParamData > : : const_iterator findParamIt ( std : : string const & name , std : : vector < ParamData > const & paramData ) const ;
2023-03-01 09:17:02 +00:00
std : : vector < MemberData > : : const_iterator findStructMemberIt ( std : : string const & name , std : : vector < MemberData > const & memberData ) const ;
std : : vector < MemberData > : : const_iterator findStructMemberItByType ( std : : string const & type , std : : vector < MemberData > const & memberData ) const ;
2023-03-07 07:23:14 +00:00
std : : vector < ExtensionData > : : const_iterator findSupportedExtension ( std : : string const & name ) const ;
2023-03-01 09:17:02 +00:00
std : : string findTag ( std : : string const & name , std : : string const & postfix = " " ) const ;
std : : pair < std : : string , std : : string > generateAllocatorTemplates ( std : : vector < size_t > const & returnParams ,
std : : vector < std : : string > const & returnDataTypes ,
std : : map < size_t , VectorParamData > const & vectorParams ,
2023-04-26 08:56:57 +00:00
std : : vector < size_t > const & chainedReturnParams ,
2023-03-01 09:17:02 +00:00
CommandFlavourFlags flavourFlags ,
bool definition ) const ;
std : : string generateArgumentListEnhanced ( std : : vector < ParamData > const & params ,
std : : vector < size_t > const & returnParams ,
std : : map < size_t , VectorParamData > const & vectorParams ,
std : : set < size_t > const & skippedParams ,
std : : set < size_t > const & singularParams ,
std : : set < size_t > const & templatedParams ,
2023-06-13 12:24:10 +00:00
std : : vector < size_t > const & chainedReturnParams ,
2023-03-01 09:17:02 +00:00
bool definition ,
CommandFlavourFlags flavourFlags ,
bool withDispatcher ) const ;
std : : string generateArgumentListStandard ( std : : vector < ParamData > const & params , std : : set < size_t > const & skippedParams ) const ;
std : : string generateArgumentTemplates ( std : : vector < ParamData > const & params ,
std : : vector < size_t > const & returnParams ,
std : : map < size_t , VectorParamData > const & vectorParams ,
std : : set < size_t > const & templatedParams ,
2023-04-26 08:56:57 +00:00
std : : vector < size_t > const & chainedReturnParams ,
2023-03-01 09:17:02 +00:00
bool raii ) const ;
std : : string generateBaseTypes ( ) const ;
2022-10-05 14:58:40 +00:00
std : : string generateBitmask ( std : : map < std : : string , BitmaskData > : : const_iterator bitmaskIt , std : : string const & surroundingProtect ) const ;
2022-08-02 08:00:16 +00:00
std : : string generateBitmasksToString ( ) const ;
2022-07-26 09:13:43 +00:00
std : : string generateBitmasksToString ( std : : vector < RequireData > const & requireData , std : : set < std : : string > & listedBitmasks , std : : string const & title ) const ;
std : : string generateBitmaskToString ( std : : map < std : : string , BitmaskData > : : const_iterator bitmaskIt ) const ;
2021-10-20 14:55:30 +00:00
std : : string generateCallArgumentsEnhanced ( CommandData const & commandData ,
size_t initialSkipCount ,
bool nonConstPointerAsNullptr ,
std : : set < size_t > const & singularParams ,
2022-01-10 10:50:11 +00:00
std : : set < size_t > const & templatedParams ,
2024-01-02 12:47:01 +00:00
bool raii ,
bool raiiFactory ,
2023-10-02 12:57:52 +00:00
CommandFlavourFlags flavourFlags ) const ;
2021-07-21 16:15:31 +00:00
std : : string generateCallArgumentsStandard ( std : : string const & handle , std : : vector < ParamData > const & params ) const ;
2021-08-05 11:13:41 +00:00
std : : string generateCallArgumentEnhanced ( std : : vector < ParamData > const & params ,
size_t paramIndex ,
bool nonConstPointerAsNullptr ,
std : : set < size_t > const & singularParams ,
2023-10-02 12:57:52 +00:00
std : : set < size_t > const & templatedParams ,
2024-01-02 12:47:01 +00:00
CommandFlavourFlags flavourFlags ,
bool raiiFactory ) const ;
2021-08-05 11:13:41 +00:00
std : : string generateCallArgumentEnhancedConstPointer ( ParamData const & param ,
size_t paramIndex ,
2022-01-10 10:50:11 +00:00
std : : set < size_t > const & singularParams ,
std : : set < size_t > const & templatedParams ) const ;
2022-09-21 07:28:38 +00:00
std : : string generateCallArgumentEnhancedNonConstPointer ( ParamData const & param ,
size_t paramIndex ,
bool nonConstPointerAsNullptr ,
std : : set < size_t > const & singularParams ) const ;
2023-10-02 12:57:52 +00:00
std : : string generateCallArgumentEnhancedValue ( std : : vector < ParamData > const & params ,
size_t paramIndex ,
std : : set < size_t > const & singularParams ,
2024-01-02 12:47:01 +00:00
CommandFlavourFlags flavourFlags ,
bool raiiFactory ) const ;
2022-09-12 14:53:44 +00:00
std : : string generateCallSequence ( std : : string const & name ,
CommandData const & commandData ,
std : : vector < size_t > const & returnParams ,
std : : map < size_t , VectorParamData > const & vectorParams ,
size_t initialSkipCount ,
std : : set < size_t > const & singularParams ,
std : : set < size_t > const & templatedParams ,
2023-06-19 10:46:04 +00:00
std : : vector < size_t > const & chainedReturnParams ,
2022-11-28 15:53:24 +00:00
CommandFlavourFlags flavourFlags ,
2024-01-02 12:47:01 +00:00
bool raii ,
bool raiiFactory ) const ;
2022-04-27 08:37:11 +00:00
std : : string generateChainTemplates ( std : : vector < size_t > const & returnParams , bool chained ) const ;
2023-02-02 13:09:45 +00:00
std : : string generateCommand ( std : : string const & name , CommandData const & commandData , size_t initialSkipCount , bool definition , bool raii ) const ;
2022-08-02 08:00:16 +00:00
std : : string generateCommandDefinitions ( ) const ;
2022-02-28 09:11:04 +00:00
std : : string
generateCommandDefinitions ( std : : vector < RequireData > const & requireData , std : : set < std : : string > & listedCommands , std : : string const & title ) const ;
2021-06-24 09:09:49 +00:00
std : : string generateCommandDefinitions ( std : : string const & command , std : : string const & handle ) const ;
2022-09-12 14:53:44 +00:00
std : : string generateCommandEnhanced ( std : : string const & name ,
CommandData const & commandData ,
size_t initialSkipCount ,
bool definition ,
std : : map < size_t , VectorParamData > const & vectorParams ,
std : : vector < size_t > const & returnParams ,
2024-06-11 14:53:15 +00:00
CommandFlavourFlags flavourFlags ) const ;
2021-07-07 06:30:14 +00:00
std : : string generateCommandName ( std : : string const & vulkanCommandName ,
std : : vector < ParamData > const & params ,
size_t initialSkipCount ,
2022-11-28 15:53:24 +00:00
CommandFlavourFlags flavourFlags = { } ) const ;
2023-02-02 13:09:45 +00:00
std : : string generateCommandResult ( std : : string const & name , CommandData const & commandData , size_t initialSkipCount , bool definition , bool raii ) const ;
std : : string generateCommandResultMultiSuccessNoErrors (
std : : string const & name , CommandData const & commandData , size_t initialSkipCount , bool definition , bool raii ) const ;
std : : string generateCommandResultMultiSuccessWithErrors (
std : : string const & name , CommandData const & commandData , size_t initialSkipCount , bool definition , bool raii ) const ;
2022-02-28 09:11:04 +00:00
std : : string generateCommandResultMultiSuccessWithErrors1Return (
2023-02-02 13:09:45 +00:00
std : : string const & name , CommandData const & commandData , size_t initialSkipCount , bool definition , size_t returnParam , bool raii ) const ;
std : : string generateCommandResultMultiSuccessWithErrors2Return ( std : : string const & name ,
CommandData const & commandData ,
size_t initialSkipCount ,
bool definition ,
std : : vector < size_t > const & returnParamIndices ,
bool raii ) const ;
std : : string generateCommandResultMultiSuccessWithErrors3Return ( std : : string const & name ,
CommandData const & commandData ,
size_t initialSkipCount ,
bool definition ,
std : : vector < size_t > const & returnParamIndices ,
bool raii ) const ;
2021-09-21 11:37:15 +00:00
std : : string
2023-02-02 13:09:45 +00:00
generateCommandResultSingleSuccess ( std : : string const & name , CommandData const & commandData , size_t initialSkipCount , bool definition , bool raii ) const ;
std : : string generateCommandResultSingleSuccessNoErrors (
std : : string const & name , CommandData const & commandData , size_t initialSkipCount , bool definition , bool raii ) const ;
std : : string generateCommandResultSingleSuccessWithErrors (
std : : string const & name , CommandData const & commandData , size_t initialSkipCount , bool definition , bool raii ) const ;
2022-02-28 09:11:04 +00:00
std : : string generateCommandResultSingleSuccessWithErrors1Return (
2023-02-02 13:09:45 +00:00
std : : string const & name , CommandData const & commandData , size_t initialSkipCount , bool definition , size_t returnParam , bool raii ) const ;
2022-02-28 09:11:04 +00:00
std : : string generateCommandResultSingleSuccessWithErrors1ReturnChain (
2023-02-02 13:09:45 +00:00
std : : string const & name , CommandData const & commandData , size_t initialSkipCount , bool definition , size_t returnParam , bool raii ) const ;
2022-02-28 09:11:04 +00:00
std : : string generateCommandResultSingleSuccessWithErrors1ReturnHandle (
2023-02-02 13:09:45 +00:00
std : : string const & name , CommandData const & commandData , size_t initialSkipCount , bool definition , size_t returnParam , bool raii ) const ;
2022-02-28 09:11:04 +00:00
std : : string generateCommandResultSingleSuccessWithErrors1ReturnValue (
2023-02-02 13:09:45 +00:00
std : : string const & name , CommandData const & commandData , size_t initialSkipCount , bool definition , size_t returnParam , bool raii ) const ;
2022-02-28 09:11:04 +00:00
std : : string generateCommandResultSingleSuccessWithErrors1ReturnVoid (
2023-02-02 13:09:45 +00:00
std : : string const & name , CommandData const & commandData , size_t initialSkipCount , bool definition , size_t returnParam , bool raii ) const ;
std : : string generateCommandResultSingleSuccessWithErrors2Return ( std : : string const & name ,
CommandData const & commandData ,
size_t initialSkipCount ,
bool definition ,
std : : vector < size_t > const & returnParamIndices ,
bool raii ) const ;
2024-06-12 14:36:03 +00:00
std : : string generateCommandResultSingleSuccessWithErrors3Return ( std : : string const & name ,
CommandData const & commandData ,
size_t initialSkipCount ,
bool definition ,
std : : vector < size_t > const & returnParamIndices ,
bool raii ) const ;
2023-02-02 13:09:45 +00:00
std : : string generateCommandResultWithErrors0Return (
std : : string const & name , CommandData const & commandData , size_t initialSkipCount , bool definition , bool raii ) const ;
2022-11-29 08:18:43 +00:00
std : : string generateCommandSet ( bool definition ,
std : : string const & standard ,
std : : vector < std : : string > const & enhanced = { } ,
std : : vector < std : : string > const & unique = { } ) const ;
std : : string generateCommandSet ( std : : string const & standard , std : : string const & enhanced ) const ;
2023-02-02 13:09:45 +00:00
std : : string generateCommandSetInclusive ( std : : string const & name ,
CommandData const & commandData ,
size_t initialSkipCount ,
bool definition ,
std : : vector < size_t > returnParams ,
std : : map < size_t , VectorParamData > vectorParams ,
bool unique ,
std : : vector < CommandFlavourFlags > const & flags ,
bool raii ,
bool raiiFactory ,
std : : vector < CommandFlavourFlags > const & raiiFlags ) const ;
std : : string
generateCommandSetExclusive ( std : : string const & name , CommandData const & commandData , size_t initialSkipCount , bool definition , bool raii ) const ;
2022-02-28 09:11:04 +00:00
std : : string generateCommandStandard ( std : : string const & name , CommandData const & commandData , size_t initialSkipCount , bool definition ) const ;
2023-02-02 13:09:45 +00:00
std : : string generateCommandVoid ( std : : string const & name , CommandData const & commandData , size_t initialSkipCount , bool definition , bool raii ) const ;
std : : string generateCommandValue ( std : : string const & name , CommandData const & commandData , size_t initialSkipCount , bool definition , bool raii ) const ;
2022-02-28 09:11:04 +00:00
std : : string
2023-02-02 13:09:45 +00:00
generateCommandVoid0Return ( std : : string const & name , CommandData const & commandData , size_t initialSkipCount , bool definition , bool raii ) const ;
std : : string generateCommandVoid1Return (
std : : string const & name , CommandData const & commandData , size_t initialSkipCount , bool definition , size_t returnParam , bool raii ) const ;
std : : string generateCommandVoid2Return ( std : : string const & name ,
CommandData const & commandData ,
size_t initialSkipCount ,
bool definition ,
std : : vector < size_t > const & returnParamIndices ,
bool raii ) const ;
2021-11-12 01:59:37 +00:00
std : : string generateConstexprString ( std : : string const & structName ) const ;
2023-06-28 12:10:51 +00:00
std : : string generateConstexprDefines ( ) const ;
std : : string generateConstexprUsings ( ) const ;
std : : string generateCppModuleHandleUsings ( ) const ;
std : : string generateCppModuleStructUsings ( ) const ;
std : : string generateCppModuleUniqueHandleUsings ( ) const ;
std : : string generateCppModuleFuncsUsings ( ) const ;
std : : string generateCppModuleEnumUsings ( ) const ;
std : : string generateCppModuleFormatTraitsUsings ( ) const ;
std : : string generateCppModuleExtensionInspectionUsings ( ) const ;
std : : string generateCppModuleUsings ( ) const ;
std : : string generateCppModuleRaiiUsings ( ) const ;
2023-09-19 11:04:36 +00:00
std : : string generateCppModuleSharedHandleUsings ( ) const ;
2022-09-12 14:53:44 +00:00
std : : string generateDataDeclarations ( CommandData const & commandData ,
std : : vector < size_t > const & returnParams ,
std : : map < size_t , VectorParamData > const & vectorParams ,
std : : set < size_t > const & templatedParams ,
2022-11-28 15:53:24 +00:00
CommandFlavourFlags flavourFlags ,
2022-09-12 14:53:44 +00:00
bool raii ,
std : : vector < std : : string > const & dataTypes ,
std : : string const & dataType ,
std : : string const & returnType ,
std : : string const & returnVariable ) const ;
std : : string generateDataDeclarations1Return ( CommandData const & commandData ,
std : : vector < size_t > const & returnParams ,
std : : map < size_t , VectorParamData > const & vectorParams ,
std : : set < size_t > const & templatedParams ,
2022-11-28 15:53:24 +00:00
CommandFlavourFlags flavourFlags ,
2022-09-12 14:53:44 +00:00
std : : vector < std : : string > const & dataTypes ,
std : : string const & dataType ,
std : : string const & returnType ,
std : : string const & returnVariable ) const ;
std : : string generateDataDeclarations2Returns ( CommandData const & commandData ,
std : : vector < size_t > const & returnParams ,
std : : map < size_t , VectorParamData > const & vectorParams ,
2022-11-28 15:53:24 +00:00
CommandFlavourFlags flavourFlags ,
2022-09-12 14:53:44 +00:00
bool raii ,
std : : vector < std : : string > const & dataTypes ,
2024-01-02 12:47:01 +00:00
std : : string const & returnType ,
2022-09-12 14:53:44 +00:00
std : : string const & returnVariable ) const ;
2023-03-07 07:23:14 +00:00
std : : string generateDataDeclarations3Returns ( CommandData const & commandData ,
std : : vector < size_t > const & returnParams ,
std : : map < size_t , VectorParamData > const & vectorParams ,
CommandFlavourFlags flavourFlags ,
bool raii ,
std : : vector < std : : string > const & dataTypes ) const ;
2022-09-12 14:53:44 +00:00
std : : string generateDataPreparation ( CommandData const & commandData ,
size_t initialSkipCount ,
std : : vector < size_t > const & returnParams ,
std : : map < size_t , VectorParamData > const & vectorParams ,
std : : set < size_t > const & templatedParams ,
2022-11-28 15:53:24 +00:00
CommandFlavourFlags flavourFlags ,
2024-06-11 14:53:15 +00:00
bool enumerating ,
std : : vector < std : : string > const & dataTypes ) const ;
2022-09-12 14:53:44 +00:00
std : : string generateDataSizeChecks ( CommandData const & commandData ,
std : : vector < size_t > const & returnParams ,
std : : vector < std : : string > const & returnParamTypes ,
std : : map < size_t , VectorParamData > const & vectorParams ,
std : : set < size_t > const & templatedParams ,
bool singular ) const ;
2023-08-16 06:37:43 +00:00
std : : string generateDebugReportObjectType ( std : : string const & objectType ) const ;
2024-05-08 16:46:23 +00:00
std : : string generateDecoratedReturnType ( CommandData const & commandData ,
2024-01-02 12:47:01 +00:00
std : : vector < size_t > const & returnParams ,
std : : map < size_t , VectorParamData > const & vectorParams ,
CommandFlavourFlags flavourFlags ,
bool raii ,
std : : string const & returnType ) const ;
2022-07-28 15:09:08 +00:00
std : : string generateDispatchLoaderDynamic ( ) const ; // uses vkGet*ProcAddress to get function pointers
std : : string generateDispatchLoaderStatic ( ) const ; // uses exported symbols from loader
2021-07-13 07:01:55 +00:00
std : : string generateDestroyCommand ( std : : string const & name , CommandData const & commandData ) const ;
2024-04-11 06:43:15 +00:00
std : : string
generateDispatchLoaderDynamicCommandAssignment ( std : : string const & commandName , std : : string const & aliasName , std : : string const & firstArg ) const ;
2021-07-21 15:09:21 +00:00
std : : string generateDispatchLoaderStaticCommands ( std : : vector < RequireData > const & requireData ,
2021-07-08 15:30:53 +00:00
std : : set < std : : string > & listedCommands ,
2021-07-09 07:01:56 +00:00
std : : string const & title ) const ;
2022-10-05 07:28:37 +00:00
std : : string generateEnum ( std : : pair < std : : string , EnumData > const & enumData , std : : string const & surroundingProtect ) const ;
2024-04-03 06:29:10 +00:00
std : : string generateEnumInitializer ( TypeInfo const & type ,
std : : vector < std : : string > const & arraySizes ,
std : : vector < EnumValueData > const & values ,
bool bitmask ) const ;
2023-03-01 09:17:02 +00:00
std : : string generateEnums ( ) const ;
std : : string generateEnums ( std : : vector < RequireData > const & requireData , std : : set < std : : string > & listedEnums , std : : string const & title ) const ;
std : : string generateEnumsToString ( ) const ;
std : : string generateEnumsToString ( std : : vector < RequireData > const & requireData , std : : set < std : : string > & listedEnums , std : : string const & title ) const ;
2021-07-13 07:01:55 +00:00
std : : string generateEnumToString ( std : : pair < std : : string , EnumData > const & enumData ) const ;
2023-03-01 09:17:02 +00:00
std : : pair < std : : string , std : : string > generateEnumSuffixes ( std : : string const & name , bool bitmask ) const ;
std : : string generateEnumValueName ( std : : string const & enumName , std : : string const & valueName , bool bitmask ) const ;
2023-04-11 15:49:02 +00:00
std : : string generateExtensionDependencies ( ) const ;
2023-04-12 09:48:59 +00:00
std : : string generateExtensionDependsByVersion ( bool definition ) const ;
2023-04-05 11:37:34 +00:00
template < class Predicate , class Extraction >
std : : string generateExtensionReplacedBy ( Predicate p , Extraction e ) const ;
template < class Predicate >
std : : string generateExtensionReplacedTest ( Predicate p ) const ;
2023-04-11 07:14:50 +00:00
std : : string generateExtensionsList ( std : : string const & type ) const ;
2023-04-05 11:37:34 +00:00
std : : string generateExtensionTypeTest ( std : : string const & type ) const ;
std : : string generateFormatTraits ( ) const ;
2024-01-08 11:19:28 +00:00
std : : string generateFunctionPointerCheck ( std : : string const & function , std : : set < std : : string > const & requiredBy , bool raii ) const ;
2023-04-05 11:37:34 +00:00
std : : string generateHandle ( std : : pair < std : : string , HandleData > const & handle , std : : set < std : : string > & listedHandles ) const ;
std : : string generateHandleCommandDeclarations ( std : : set < std : : string > const & commands ) const ;
2022-02-28 09:11:04 +00:00
std : : string generateHandleDependencies ( std : : pair < std : : string , HandleData > const & handle , std : : set < std : : string > & listedHandles ) const ;
2021-09-14 08:01:02 +00:00
std : : string generateHandleEmpty ( HandleData const & handleData ) const ;
2023-02-08 16:21:03 +00:00
std : : string generateHandleForwardDeclarations ( ) const ;
std : : string generateHandleForwardDeclarations ( std : : vector < RequireData > const & requireData , std : : string const & title ) const ;
2022-02-28 09:11:04 +00:00
std : : string generateHandleHashStructures ( std : : vector < RequireData > const & requireData , std : : string const & title ) const ;
2022-08-02 08:00:16 +00:00
std : : string generateHandleHashStructures ( ) const ;
std : : string generateHandles ( ) const ;
2024-06-27 11:32:31 +00:00
std : : string generateIndexTypeTraits ( std : : pair < std : : string , EnumData > const & enumData ) const ;
std : : string generateLayerSettingTypeTraits ( ) const ;
2020-12-10 16:23:44 +00:00
std : : string
2022-04-07 13:38:51 +00:00
generateLenInitializer ( std : : vector < MemberData > : : const_iterator mit ,
std : : map < std : : vector < MemberData > : : const_iterator , std : : vector < std : : vector < MemberData > : : const_iterator > > : : const_iterator litit ,
bool mutualExclusiveLens ) const ;
std : : string generateName ( TypeInfo const & typeInfo ) const ;
2022-09-12 14:53:44 +00:00
std : : string generateNoExcept ( std : : vector < std : : string > const & errorCodes ,
std : : vector < size_t > const & returnParams ,
std : : map < size_t , VectorParamData > const & vectorParams ,
2022-11-28 15:53:24 +00:00
CommandFlavourFlags flavourFlags ,
2022-09-12 14:53:44 +00:00
bool vectorSizeCheck ,
bool raii ) const ;
2022-04-07 13:38:51 +00:00
std : : string generateObjectDeleter ( std : : string const & commandName , CommandData const & commandData , size_t initialSkipCount , size_t returnParam ) const ;
2023-08-16 06:37:43 +00:00
std : : string generateObjectTypeToDebugReportObjectType ( ) const ;
2023-06-28 12:10:51 +00:00
std : : pair < std : : string , std : : string > generateProtection ( std : : string const & protect , bool defined = true ) const ;
2022-08-02 08:00:16 +00:00
std : : string generateRAIICommandDefinitions ( ) const ;
2022-02-28 09:11:04 +00:00
std : : string
generateRAIICommandDefinitions ( std : : vector < RequireData > const & requireData , std : : set < std : : string > & listedCommands , std : : string const & title ) const ;
2022-08-02 08:00:16 +00:00
std : : string generateRAIIDispatchers ( ) const ;
2024-01-02 12:47:01 +00:00
std : : string generateRAIIFactoryReturnStatements ( std : : vector < ParamData > const & params ,
std : : vector < std : : string > const & successCodes ,
std : : string const & vkType ,
bool enumerating ,
std : : string const & returnType ,
std : : string const & returnVariable ,
bool singular ) const ;
2022-02-28 09:11:04 +00:00
std : : string generateRAIIHandle ( std : : pair < std : : string , HandleData > const & handle ,
std : : set < std : : string > & listedHandles ,
std : : set < std : : string > const & specialFunctions ) const ;
2021-10-25 09:22:02 +00:00
std : : string generateRAIIHandleCommand ( std : : string const & command , size_t initialSkipCount , bool definition ) const ;
2022-02-28 09:11:04 +00:00
std : : string generateRAIIHandleCommandDeclarations ( std : : pair < std : : string , HandleData > const & handle , std : : set < std : : string > const & specialFunctions ) const ;
2023-02-02 13:09:45 +00:00
std : : string generateRAIIHandleCommandEnhanced ( std : : string const & name ,
CommandData const & commandData ,
size_t initialSkipCount ,
std : : vector < size_t > const & returnParams ,
std : : map < size_t , VectorParamData > const & vectorParamIndices ,
bool definition ,
CommandFlavourFlags flavourFlags = { } ) const ;
std : : string generateRAIIHandleCommandFactory ( std : : string const & name ,
CommandData const & commandData ,
size_t initialSkipCount ,
std : : vector < size_t > const & returnParams ,
std : : map < size_t , VectorParamData > const & vectorParams ,
bool definition ,
CommandFlavourFlags flavourFlags = { } ) const ;
2021-10-14 06:36:04 +00:00
std : : string generateRAIIHandleCommandFactoryArgumentList ( std : : vector < ParamData > const & params ,
2022-01-11 08:45:35 +00:00
std : : set < size_t > const & skippedParams ,
2021-10-14 06:36:04 +00:00
bool definition ,
bool singular ) const ;
2022-02-28 09:11:04 +00:00
std : : pair < std : : string , std : : string > generateRAIIHandleConstructor ( std : : pair < std : : string , HandleData > const & handle ,
std : : map < std : : string , CommandData > : : const_iterator constructorIt ,
std : : string const & enter ,
std : : string const & leave ) const ;
2024-01-02 12:47:01 +00:00
std : : string generateRAIIHandleConstructorByCall ( std : : pair < std : : string , HandleData > const & handle ,
std : : map < std : : string , CommandData > : : const_iterator constructorIt ,
std : : string const & enter ,
std : : string const & leave ,
bool isPlural ,
bool forceSingular ) const ;
2022-02-28 09:11:04 +00:00
std : : pair < std : : string , std : : string > generateRAIIHandleConstructor1Return2Vector ( std : : pair < std : : string , HandleData > const & handle ,
std : : map < std : : string , CommandData > : : const_iterator constructorIt ,
std : : string const & enter ,
std : : string const & leave ,
size_t returnParam ,
2022-09-12 14:53:44 +00:00
std : : map < size_t , VectorParamData > const & vectorParamIndices ) const ;
2022-02-28 09:11:04 +00:00
std : : pair < std : : string , std : : string > generateRAIIHandleConstructors ( std : : pair < std : : string , HandleData > const & handle ) const ;
std : : string generateRAIIHandleConstructorArgument ( ParamData const & param , bool definition , bool singular , bool takesOwnership ) const ;
std : : string generateRAIIHandleConstructorArguments ( std : : pair < std : : string , HandleData > const & handle ,
std : : map < std : : string , VulkanHppGenerator : : CommandData > : : const_iterator constructorIt ,
bool singular ,
bool takesOwnership ) const ;
std : : string generateRAIIHandleConstructorInitializationList ( std : : pair < std : : string , HandleData > const & handle ,
std : : map < std : : string , CommandData > : : const_iterator constructorIt ,
std : : map < std : : string , CommandData > : : const_iterator destructorIt ,
bool takesOwnership ) const ;
std : : string generateRAIIHandleConstructorParamName ( std : : string const & type , std : : map < std : : string , CommandData > : : const_iterator destructorIt ) const ;
std : : pair < std : : string , std : : string > generateRAIIHandleConstructorResult ( std : : pair < std : : string , HandleData > const & handle ,
std : : map < std : : string , CommandData > : : const_iterator constructorIt ,
std : : string const & enter ,
std : : string const & leave ) const ;
2024-01-02 12:47:01 +00:00
std : : string generateRAIIHandleConstructorTakeOwnership ( std : : pair < std : : string , HandleData > const & handle ) const ;
2022-02-28 09:11:04 +00:00
std : : pair < std : : string , std : : string > generateRAIIHandleConstructorVoid ( std : : pair < std : : string , HandleData > const & handle ,
std : : map < std : : string , CommandData > : : const_iterator constructorIt ,
std : : string const & enter ,
std : : string const & leave ) const ;
std : : string generateRAIIHandleContext ( std : : pair < std : : string , HandleData > const & handle , std : : set < std : : string > const & specialFunctions ) const ;
std : : string generateRAIIHandleDestructorCallArguments ( std : : string const & handleType ,
std : : map < std : : string , CommandData > : : const_iterator destructorIt ) const ;
2022-10-25 10:11:29 +00:00
std : : tuple < std : : string , std : : string , std : : string , std : : string , std : : string , std : : string , std : : string >
2022-02-15 09:50:52 +00:00
generateRAIIHandleDetails ( std : : pair < std : : string , HandleData > const & handle ) const ;
2022-02-28 09:11:04 +00:00
std : : string generateRAIIHandleForwardDeclarations ( std : : vector < RequireData > const & requireData , std : : string const & title ) const ;
2022-08-02 08:00:16 +00:00
std : : string generateRAIIHandles ( ) const ;
2024-01-02 12:47:01 +00:00
std : : string generateRAIIHandleSingularConstructorArguments ( std : : pair < std : : string , HandleData > const & handle ,
std : : vector < ParamData > const & params ,
2024-06-11 14:53:15 +00:00
std : : string const & argumentType ,
std : : string const & argumentName ) const ;
2023-04-11 07:14:50 +00:00
template < class Predicate , class Extraction >
std : : string generateReplacedExtensionsList ( Predicate p , Extraction e ) const ;
2022-03-24 09:52:24 +00:00
std : : string generateResultAssignment ( CommandData const & commandData ) const ;
2022-04-28 09:53:52 +00:00
std : : string generateResultCheck (
CommandData const & commandData , std : : string const & className , std : : string const & classSeparator , std : : string commandName , bool enumerating ) const ;
2024-01-02 12:47:01 +00:00
std : : string
generateResultCheckExpected ( std : : vector < std : : string > const & successCodes , std : : string const & className , std : : string const & commandName ) const ;
2022-07-28 15:09:08 +00:00
std : : string generateResultExceptions ( ) const ;
2022-04-07 13:38:51 +00:00
std : : string generateReturnStatement ( std : : string const & commandName ,
CommandData const & commandData ,
std : : string const & returnVariable ,
std : : string const & returnType ,
2024-01-02 12:47:01 +00:00
std : : string const & decoratedReturnType ,
2022-04-07 13:38:51 +00:00
std : : string const & dataType ,
size_t initialSkipCount ,
size_t returnParam ,
2022-11-28 15:53:24 +00:00
CommandFlavourFlags flavourFlags ,
2022-05-25 18:21:21 +00:00
bool enumerating ,
bool raii ) const ;
2024-01-02 12:47:01 +00:00
std : : string generateReturnType ( std : : vector < size_t > const & returnParams ,
2022-09-12 14:53:44 +00:00
std : : map < size_t , VectorParamData > const & vectorParams ,
2022-11-28 15:53:24 +00:00
CommandFlavourFlags flavourFlags ,
2022-09-12 14:53:44 +00:00
bool raii ,
2023-04-26 08:56:57 +00:00
std : : vector < std : : string > const & dataTypes ) const ;
2022-09-12 14:53:44 +00:00
std : : string generateReturnVariable ( CommandData const & commandData ,
std : : vector < size_t > const & returnParams ,
std : : map < size_t , VectorParamData > const & vectorParams ,
2022-11-28 15:53:24 +00:00
CommandFlavourFlags flavourFlags ) const ;
2022-02-28 09:11:04 +00:00
std : : string
generateSizeCheck ( std : : vector < std : : vector < MemberData > : : const_iterator > const & arrayIts , std : : string const & structName , bool mutualExclusiveLens ) const ;
2022-09-21 07:28:38 +00:00
std : : string generateStaticAssertions ( ) const ;
2023-02-20 19:01:34 +00:00
std : : string generateStaticAssertions ( std : : vector < RequireData > const & requireData , std : : string const & title , std : : set < std : : string > & listedStructs ) const ;
2022-02-28 09:11:04 +00:00
std : : string generateStruct ( std : : pair < std : : string , StructureData > const & structure , std : : set < std : : string > & listedStructs ) const ;
2022-01-03 11:35:24 +00:00
std : : string generateStructCompareOperators ( std : : pair < std : : string , StructureData > const & structure ) const ;
2021-09-28 06:56:30 +00:00
std : : string generateStructConstructors ( std : : pair < std : : string , StructureData > const & structData ) const ;
std : : string generateStructConstructorsEnhanced ( std : : pair < std : : string , StructureData > const & structData ) const ;
2024-03-05 07:16:22 +00:00
std : : string generateStructConstructorArgument ( MemberData const & memberData , bool withDefault ) const ;
2022-02-28 09:11:04 +00:00
std : : string generateStructHashStructure ( std : : pair < std : : string , StructureData > const & structure , std : : set < std : : string > & listedStructs ) const ;
2022-08-02 08:00:16 +00:00
std : : string generateStructHashStructures ( ) const ;
2021-12-02 11:21:30 +00:00
std : : string generateStructHashSum ( std : : string const & structName , std : : vector < MemberData > const & members ) const ;
2022-08-02 08:00:16 +00:00
std : : string generateStructs ( ) const ;
2021-09-28 06:56:30 +00:00
std : : string generateStructure ( std : : pair < std : : string , StructureData > const & structure ) const ;
2022-07-28 15:09:08 +00:00
std : : string generateStructExtendsStructs ( ) const ;
2022-02-28 09:11:04 +00:00
std : : string
generateStructExtendsStructs ( std : : vector < RequireData > const & requireData , std : : set < std : : string > & listedStructs , std : : string const & title ) const ;
2022-08-02 08:00:16 +00:00
std : : string generateStructForwardDeclarations ( ) const ;
2023-02-20 19:01:34 +00:00
std : : string
generateStructForwardDeclarations ( std : : vector < RequireData > const & requireData , std : : string const & title , std : : set < std : : string > & listedStructs ) const ;
2022-02-28 09:11:04 +00:00
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 ;
2023-03-01 09:17:02 +00:00
std : : string generateSuccessCode ( std : : string const & code ) const ;
2022-04-28 09:53:52 +00:00
std : : string generateSuccessCodeList ( std : : vector < std : : string > const & successCodes , bool enumerating ) const ;
2022-07-28 15:09:08 +00:00
std : : string generateThrowResultException ( ) const ;
2022-09-12 14:53:44 +00:00
std : : string generateTypenameCheck ( std : : vector < size_t > const & returnParams ,
std : : map < size_t , VectorParamData > const & vectorParams ,
2023-06-13 12:24:10 +00:00
std : : vector < size_t > const & chainedReturnParams ,
2022-09-12 14:53:44 +00:00
bool definition ,
std : : vector < std : : string > const & dataTypes ,
2022-11-28 15:53:24 +00:00
CommandFlavourFlags flavourFlags ) const ;
2022-02-28 09:11:04 +00:00
std : : string generateUnion ( std : : pair < std : : string , StructureData > const & structure ) const ;
2023-02-08 16:21:03 +00:00
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 ;
2023-09-19 11:04:36 +00:00
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 ;
2022-02-28 09:11:04 +00:00
std : : string generateVectorSizeCheck ( std : : string const & name ,
CommandData const & commandData ,
size_t initialSkipCount ,
std : : map < size_t , std : : vector < size_t > > const & countToVectorMap ,
2022-03-15 09:00:04 +00:00
std : : set < size_t > const & skippedParams ,
bool onlyThrows ) const ;
2021-10-20 14:55:30 +00:00
std : : pair < std : : string , std : : string > getParentTypeAndName ( std : : pair < std : : string , HandleData > const & handle ) const ;
std : : string getPlatform ( std : : string const & title ) const ;
2020-10-07 20:44:44 +00:00
std : : pair < std : : string , std : : string > getPoolTypeAndName ( std : : string const & type ) const ;
2022-10-05 07:28:37 +00:00
std : : string getProtectFromPlatform ( std : : string const & platform ) const ;
std : : string getProtectFromTitle ( std : : string const & title ) const ;
2023-02-20 14:58:14 +00:00
std : : string getProtectFromTitles ( std : : set < std : : string > const & titles ) const ;
2022-10-05 07:28:37 +00:00
std : : string getProtectFromType ( std : : string const & type ) const ;
2022-09-12 14:53:44 +00:00
std : : string getVectorSize ( std : : vector < ParamData > const & params ,
std : : map < size_t , VectorParamData > const & vectorParamIndices ,
size_t returnParam ,
std : : string const & returnParamType ,
std : : set < size_t > const & templatedParams ) const ;
2023-03-07 07:23:14 +00:00
void handleRemoval ( RemoveData const & removeData ) ;
bool handleRemovalCommand ( std : : string const & command , std : : vector < RequireData > & requireData ) ;
void handleRemovals ( ) ;
bool handleRemovalType ( std : : string const & type , std : : vector < RequireData > & requireData ) ;
2024-02-28 12:04:56 +00:00
bool hasLen ( MemberData const & md , std : : vector < MemberData > const & members ) const ;
2022-04-06 08:33:08 +00:00
bool hasParentHandle ( std : : string const & handle , std : : string const & parent ) const ;
2024-06-11 14:53:15 +00:00
bool isConstructorCandidate ( std : : pair < std : : string , VulkanHppGenerator : : CommandData > const & command , std : : string const & handleType ) const ;
bool isConstructorCandidate ( ParamData const & paramData , std : : string const & handleType ) const ;
bool isDeviceCommand ( CommandData const & commandData ) const ;
bool isExtension ( std : : string const & name ) const ;
bool isFeature ( std : : string const & name ) const ;
bool isHandleType ( std : : string const & type ) const ;
bool isHandleTypeByStructure ( std : : string const & type ) const ;
bool isLenByStructMember ( std : : string const & name , std : : vector < ParamData > const & params ) const ;
bool isLenByStructMember ( std : : string const & name , ParamData const & param ) const ;
2022-04-06 08:33:08 +00:00
bool isMultiSuccessCodeConstructor ( std : : vector < std : : map < std : : string , CommandData > : : const_iterator > const & constructorIts ) const ;
bool isParam ( std : : string const & name , std : : vector < ParamData > const & params ) const ;
bool isStructMember ( std : : string const & name , std : : vector < MemberData > const & memberData ) const ;
bool isStructureChainAnchor ( std : : string const & type ) const ;
2024-08-26 14:21:45 +00:00
bool isStructureType ( std : : string const & type ) const ;
2023-03-07 07:23:14 +00:00
bool isSupported ( std : : set < std : : string > const & requiredBy ) const ;
bool isSupportedExtension ( std : : string const & name ) const ;
bool isSupportedFeature ( std : : string const & name ) const ;
2023-03-01 09:17:02 +00:00
bool isTypeRequired ( std : : string const & type ) const ;
bool isTypeUsed ( std : : string const & type ) const ;
2024-05-06 08:31:43 +00:00
void markExtendedStructs ( ) ;
2023-06-19 10:46:04 +00:00
bool needsStructureChainResize ( std : : map < size_t , VectorParamData > const & vectorParams , std : : vector < size_t > const & chainedReturnParams ) const ;
2022-09-12 14:53:44 +00:00
std : : pair < bool , std : : map < size_t , std : : vector < size_t > > > needsVectorSizeCheck ( std : : vector < ParamData > const & params ,
std : : map < size_t , VectorParamData > const & vectorParams ,
std : : vector < size_t > const & returnParams ,
2023-03-13 08:08:01 +00:00
std : : set < size_t > const & singularParams ,
std : : set < size_t > const & skippedParams ) const ;
2023-03-01 09:17:02 +00:00
void readCommand ( tinyxml2 : : XMLElement const * element ) ;
std : : pair < bool , ParamData > readCommandParam ( tinyxml2 : : XMLElement const * element , std : : vector < ParamData > const & params ) ;
std : : pair < std : : string , std : : string > readCommandProto ( tinyxml2 : : XMLElement const * element ) ;
2022-02-28 09:11:04 +00:00
void readCommands ( tinyxml2 : : XMLElement const * element ) ;
2023-03-01 09:17:02 +00:00
void readEnums ( tinyxml2 : : XMLElement const * element ) ;
void readEnumsConstants ( tinyxml2 : : XMLElement const * element ) ;
void readEnumsEnum ( tinyxml2 : : XMLElement const * element , std : : map < std : : string , EnumData > : : iterator enumIt ) ;
void readExtension ( tinyxml2 : : XMLElement const * element ) ;
void readExtensionRequire ( tinyxml2 : : XMLElement const * element , ExtensionData & extensionData , bool extensionSupported ) ;
void readExtensions ( tinyxml2 : : XMLElement const * element ) ;
void readFeature ( tinyxml2 : : XMLElement const * element ) ;
RemoveData readFeatureRemove ( tinyxml2 : : XMLElement const * element ) ;
RequireData readFeatureRequire ( tinyxml2 : : XMLElement const * element , std : : string const & featureName , bool featureSupported ) ;
void readFormat ( tinyxml2 : : XMLElement const * element ) ;
void readFormatComponent ( tinyxml2 : : XMLElement const * element , FormatData & formatData ) ;
void readFormatPlane ( tinyxml2 : : XMLElement const * element , FormatData & formatData ) ;
void readFormats ( tinyxml2 : : XMLElement const * element ) ;
void readFormatSPIRVImageFormat ( tinyxml2 : : XMLElement const * element , FormatData & formatData ) ;
std : : string readName ( tinyxml2 : : XMLElement const * elements ) ;
2020-05-18 10:02:10 +00:00
std : : pair < NameData , TypeInfo > readNameAndType ( tinyxml2 : : XMLElement const * elements ) ;
2023-03-01 09:17:02 +00:00
void readPlatform ( tinyxml2 : : XMLElement const * element ) ;
2020-04-12 19:49:12 +00:00
void readPlatforms ( tinyxml2 : : XMLElement const * element ) ;
void readRegistry ( tinyxml2 : : XMLElement const * element ) ;
2023-03-02 21:14:37 +00:00
std : : string readRequireCommand ( tinyxml2 : : XMLElement const * element , std : : string const & requiredBy ) ;
2023-07-26 20:12:40 +00:00
void readRequireEnum (
tinyxml2 : : XMLElement const * element , std : : string const & requiredBy , std : : string const & platform , bool supported , RequireData & requireData ) ;
std : : string readRequireType ( tinyxml2 : : XMLElement const * element , std : : string const & requiredBy ) ;
void readSPIRVCapability ( tinyxml2 : : XMLElement const * element ) ;
void readSPIRVCapabilityEnable ( tinyxml2 : : XMLElement const * element ) ;
void readSPIRVCapabilities ( tinyxml2 : : XMLElement const * element ) ;
void readSPIRVExtension ( tinyxml2 : : XMLElement const * element ) ;
void readSPIRVExtensionEnable ( tinyxml2 : : XMLElement const * element ) ;
void readSPIRVExtensions ( tinyxml2 : : XMLElement const * element ) ;
void readStructMember ( tinyxml2 : : XMLElement const * element , std : : vector < MemberData > & members , bool isUnion ) ;
void readSync ( tinyxml2 : : XMLElement const * element ) ;
void readSyncAccess ( tinyxml2 : : XMLElement const * element ,
std : : map < std : : string , EnumData > : : const_iterator accessFlagBitsIt ,
std : : map < std : : string , EnumData > : : const_iterator accessFlagBits2It ,
std : : map < std : : string , EnumData > : : const_iterator stageFlagBits2It ) ;
void readSyncAccessEquivalent ( tinyxml2 : : XMLElement const * element , std : : map < std : : string , EnumData > : : const_iterator accessFlagBits2It ) ;
void readSyncAccessSupport ( tinyxml2 : : XMLElement const * element , std : : map < std : : string , EnumData > : : const_iterator stageFlagBits2It ) ;
void readSyncPipeline ( tinyxml2 : : XMLElement const * element ) ;
void readSyncStage ( tinyxml2 : : XMLElement const * element ,
std : : map < std : : string , EnumData > : : const_iterator stageFlagBitsIt ,
std : : map < std : : string , EnumData > : : const_iterator stageFlagBits2It ) ;
void readSyncStageEquivalent ( tinyxml2 : : XMLElement const * element , std : : map < std : : string , EnumData > : : const_iterator stageFlagBits2It ) ;
void readSyncStageSupport ( tinyxml2 : : XMLElement const * element ) ;
void readTag ( tinyxml2 : : XMLElement const * element ) ;
void readTags ( tinyxml2 : : XMLElement const * element ) ;
void readTypeBasetype ( tinyxml2 : : XMLElement const * element , std : : map < std : : string , std : : string > const & attributes ) ;
void readTypeBitmask ( tinyxml2 : : XMLElement const * element , std : : map < std : : string , std : : string > const & attributes ) ;
DefinesPartition partitionDefines ( std : : map < std : : string , DefineData > const & defines ) ;
void readTypeDefine ( tinyxml2 : : XMLElement const * element , std : : map < std : : string , std : : string > const & attributes ) ;
void readTypeEnum ( tinyxml2 : : XMLElement const * element , std : : map < std : : string , std : : string > const & attributes ) ;
void readTypeFuncpointer ( tinyxml2 : : XMLElement const * element , std : : map < std : : string , std : : string > const & attributes ) ;
void readTypeHandle ( tinyxml2 : : XMLElement const * element , std : : map < std : : string , std : : string > const & attributes ) ;
void readTypeInclude ( tinyxml2 : : XMLElement const * element , std : : map < std : : string , std : : string > const & attributes ) ;
void readTypeRequires ( tinyxml2 : : XMLElement const * element , std : : map < std : : string , std : : string > const & attributes ) ;
void readTypeStruct ( tinyxml2 : : XMLElement const * element , bool isUnion , std : : map < std : : string , std : : string > const & attributes ) ;
void readTypes ( tinyxml2 : : XMLElement const * element ) ;
void readTypesType ( tinyxml2 : : XMLElement const * element ) ;
TypeInfo readTypeInfo ( tinyxml2 : : XMLElement const * element ) const ;
2024-07-23 07:47:41 +00:00
void readVideoCapabilities ( tinyxml2 : : XMLElement const * element , VideoCodec & videoCodec ) ;
void readVideoCodec ( tinyxml2 : : XMLElement const * element ) ;
void readVideoCodecs ( tinyxml2 : : XMLElement const * element ) ;
void readVideoFormat ( tinyxml2 : : XMLElement const * element , VideoCodec & videoCodec ) ;
void readVideoProfileMember ( tinyxml2 : : XMLElement const * element , VideoCodec & videoCodec ) ;
void readVideoProfile ( tinyxml2 : : XMLElement const * element , VideoCodec & videoCodec ) ;
void readVideoProfiles ( tinyxml2 : : XMLElement const * element , VideoCodec & videoCodec ) ;
2024-08-06 07:22:31 +00:00
void readVideoFormatProperties ( tinyxml2 : : XMLElement const * element , std : : string const & videoCodec , VideoFormat & videoFormat ) ;
2024-07-23 07:47:41 +00:00
void readVideoRequireCapabilities ( tinyxml2 : : XMLElement const * element , VideoCodec & videoCodec ) ;
2023-07-26 20:12:40 +00:00
void registerDeleter ( std : : string const & commandName , CommandData const & commandData ) ;
void rescheduleRAIIHandle ( std : : string & str ,
std : : pair < std : : string , HandleData > const & handle ,
std : : set < std : : string > & listedHandles ,
std : : set < std : : string > const & specialFunctions ) const ;
2021-07-21 15:09:21 +00:00
std : : vector < std : : string > selectCommandsByHandle ( std : : vector < RequireData > const & requireData ,
std : : set < std : : string > const & handleCommands ,
std : : set < std : : string > & listedCommands ) const ;
2021-10-20 14:55:30 +00:00
bool skipLeadingGrandParent ( std : : pair < std : : string , HandleData > const & handle ) const ;
2023-03-01 09:17:02 +00:00
std : : string stripPluralS ( std : : string const & name ) const ;
2021-07-21 16:15:31 +00:00
std : : string toString ( TypeCategory category ) ;
2024-06-11 14:53:15 +00:00
MemberData const & vectorMemberByStructure ( std : : string const & structureType ) const ;
2017-12-21 11:40:48 +00:00
2020-04-21 12:26:32 +00:00
private :
2024-06-05 14:44:13 +00:00
std : : string m_api ;
std : : map < std : : string , BaseTypeData > m_baseTypes ;
std : : map < std : : string , BitmaskData > m_bitmasks ;
std : : map < std : : string , CommandData > m_commands ;
std : : map < std : : string , ConstantData > m_constants ;
std : : map < std : : string , DefineData > m_defines ;
DefinesPartition m_definesPartition ; // partition defined macros into mutually-exclusive sets of callees, callers, and values
std : : map < std : : string , EnumData > m_enums ;
std : : vector < ExtensionData > m_extensions ;
std : : map < std : : string , ExternalTypeData > m_externalTypes ;
std : : vector < FeatureData > m_features ;
std : : map < std : : string , FormatData > m_formats ;
std : : map < std : : string , FuncPointerData > m_funcPointers ;
std : : map < std : : string , HandleData > m_handles ;
std : : map < std : : string , IncludeData > m_includes ;
std : : map < std : : string , PlatformData > m_platforms ;
std : : set < std : : string > m_RAIISpecialFunctions ;
std : : map < std : : string , StructureData > m_structs ;
std : : vector < std : : pair < std : : string , AliasData > > m_structsAliases ; // temporary storage for aliases, as they might be listed before the actual struct is listed
std : : map < std : : string , TagData > m_tags ;
std : : map < std : : string , TypeData > m_types ;
std : : set < std : : string > m_unsupportedExtensions ;
std : : set < std : : string > m_unsupportedFeatures ;
std : : string m_version ;
2024-07-23 07:47:41 +00:00
std : : vector < VideoCodec > m_videoCodecs ;
2024-06-05 14:44:13 +00:00
std : : string m_vulkanLicenseHeader ;
2019-01-09 10:55:11 +00:00
} ;