Reshape alias handling according to new alias usage in vk.xml. (#167)

This commit is contained in:
Andreas Süßenbach
2018-01-04 10:51:17 +01:00
committed by Markus Tavenrath
parent 15ac21442d
commit c4fcc08e95
3 changed files with 430 additions and 465 deletions

View File

@@ -27,7 +27,7 @@ class VulkanHppGenerator
public:
VulkanHppGenerator()
{
m_handles[""]; // insert the default "handle" without class (for createInstance, and such)
m_handles.insert(std::make_pair("", HandleData())); // insert the default "handle" without class (for createInstance, and such)
}
std::map<std::string, std::string> createDefaults();
@@ -52,14 +52,19 @@ class VulkanHppGenerator
#endif
private:
struct BitmaskData
{
std::string protect;
std::string alias;
};
struct DependencyData
{
enum class Category
{
ALIAS,
BITMASK,
COMMAND,
ENUM,
FLAGS,
FUNC_POINTER,
HANDLE,
REQUIRED,
@@ -79,19 +84,6 @@ class VulkanHppGenerator
std::set<std::string> forwardDependencies;
};
struct AliasData
{
AliasData(DependencyData::Category c, std::string const& v, std::string const& p)
: category(c)
, value(v)
, protect(p)
{}
DependencyData::Category category;
std::string value;
std::string protect;
};
struct ParamData
{
std::string type;
@@ -155,12 +147,6 @@ class VulkanHppGenerator
bool bitmask;
};
struct FlagData
{
std::string protect;
std::string alias;
};
struct HandleData
{
std::vector<std::string> commands;
@@ -193,6 +179,7 @@ class VulkanHppGenerator
std::vector<MemberData> members;
std::string protect;
std::vector<std::string> structExtends;
std::string alias;
};
#if !defined(NDEBUG)
@@ -211,7 +198,7 @@ class VulkanHppGenerator
#endif
private:
void aliasType(DependencyData::Category category, std::string const& aliasName, std::string const& newName, std::string const& protect);
template <typename T> void checkAlias(std::map<std::string, T> const& data, std::string const& name, int line);
bool containsUnion(std::string const& type, std::map<std::string, StructData> const& structs);
void determineEnhancedReturnType(CommandData & commandData);
void determineReducedName(CommandData & commandData);
@@ -228,7 +215,6 @@ class VulkanHppGenerator
void readDisabledExtensionRequire(tinyxml2::XMLElement const* element);
void readEnumsEnum(tinyxml2::XMLElement const* element, EnumData & enumData, std::string const& tag);
void readEnumsConstant(tinyxml2::XMLElement const* element);
void readExtensionAlias(tinyxml2::XMLElement const* element, std::string const& protect, std::string const& tag);
void readExtensionCommand(tinyxml2::XMLElement const* element, std::string const& protect);
void readExtensionEnum(tinyxml2::XMLElement const* element, std::string const& tag);
void readExtensionRequire(tinyxml2::XMLElement const* element, std::string const& protect, std::string const& tag);
@@ -248,6 +234,7 @@ class VulkanHppGenerator
void readTypeStructMember(tinyxml2::XMLElement const* element, StructData & structData);
void registerDeleter(CommandData const& commandData);
void setDefault(std::string const& name, std::map<std::string, std::string> & defaultValues, EnumData const& enumData);
void writeBitmaskToString(std::ostream & os, std::string const& flagsName, EnumData const &enumData);
void writeCall(std::ostream & os, CommandData const& commandData, bool firstCall, bool singular);
void writeCallCountParameter(std::ostream & os, CommandData const& commandData, bool singular, std::map<size_t, size_t>::const_iterator it);
void writeCallPlainTypeParameter(std::ostream & os, ParamData const& paramData);
@@ -257,7 +244,6 @@ class VulkanHppGenerator
void writeDeleterClasses(std::ostream & os, std::pair<std::string, std::set<std::string>> const& deleterTypes);
void writeDeleterForwardDeclarations(std::ostream &os, std::pair<std::string, std::set<std::string>> const& deleterTypes);
void writeExceptionsForEnum(std::ostream & os, EnumData const& enumData);
void writeFlagsToString(std::ostream & os, std::string const& flagsName, EnumData const &enumData);
void writeFunction(std::ostream & os, std::string const& indentation, CommandData const& commandData, bool definition, bool enhanced, bool singular, bool unique, bool isStructureChain);
void writeFunctionBodyEnhanced(std::ostream & os, std::string const& indentation, CommandData const& commandData, bool singular, bool isStructureChain);
void writeFunctionBodyEnhanced(std::ostream & os, std::string const& templateString, std::string const& indentation, CommandData const& commandData, bool singular);
@@ -282,11 +268,10 @@ class VulkanHppGenerator
void writeStructSetter(std::ostream & os, std::string const& structureName, MemberData const& memberData);
void writeStructureChainValidation(std::ostream & os, DependencyData const& dependencyData);
void writeThrowExceptions(std::ostream& os, EnumData const& enumData);
void writeTypeAlias(std::ostream & os, DependencyData const& dependencyData);
void writeTypeBitmask(std::ostream & os, std::string const& flagsName, BitmaskData const& bitmaskData, EnumData const& enumData);
void writeTypeCommand(std::ostream & os, DependencyData const& dependencyData);
void writeTypeCommand(std::ostream &os, std::string const& indentation, CommandData const& commandData, bool definition);
void writeTypeEnum(std::ostream & os, EnumData const& enumData);
void writeTypeFlags(std::ostream & os, std::string const& flagsName, FlagData const& flagData, EnumData const& enumData);
void writeTypeHandle(std::ostream & os, DependencyData const& dependencyData, HandleData const& handle);
void writeTypeScalar(std::ostream & os, DependencyData const& dependencyData);
void writeTypeStruct(std::ostream & os, DependencyData const& dependencyData, std::map<std::string, std::string> const& defaultValues);
@@ -296,7 +281,7 @@ class VulkanHppGenerator
#endif
private:
std::map<std::string, AliasData> m_aliases;
std::map<std::string, BitmaskData> m_bitmasks;
std::map<std::string, CommandData> m_commands;
std::map<std::string, std::string> m_constants;
std::set<std::string> m_defines;
@@ -305,7 +290,6 @@ class VulkanHppGenerator
std::list<DependencyData> m_dependencies;
std::map<std::string, EnumData> m_enums;
std::set<std::string> m_extendedStructs; // structs which are referenced by the structextends tag
std::map<std::string, FlagData> m_flags;
std::map<std::string, HandleData> m_handles;
std::map<std::string, std::string> m_nameMap;
std::map<std::string, ScalarData> m_scalars;