Merge pull request #91 from asuessenbach/lastOptionalDefault

Added default argument value nullptr for last Optional arguments
made vk::Flags::operator bool() explicit
changed vk::Flags default MaskType from uint32_t to VKFlags
removed some unneeded "vk::"
This commit is contained in:
Markus Tavenrath 2016-03-31 08:27:45 -07:00
commit eb135c594d
2 changed files with 250 additions and 236 deletions

View File

@ -75,7 +75,7 @@ const std::string exceptionHeader(
" {\n" " {\n"
" public:\n" " public:\n"
" virtual const char* name() const noexcept override { return \"vk::Result\"; }\n" " virtual const char* name() const noexcept override { return \"vk::Result\"; }\n"
" virtual std::string message(int ev) const override { return to_string(static_cast<vk::Result>(ev)); }\n" " virtual std::string message(int ev) const override { return to_string(static_cast<Result>(ev)); }\n"
" };\n" " };\n"
"\n" "\n"
"#if defined(_MSC_VER) && (_MSC_VER == 1800)\n" "#if defined(_MSC_VER) && (_MSC_VER == 1800)\n"
@ -101,7 +101,7 @@ const std::string exceptionHeader(
); );
const std::string flagsHeader( const std::string flagsHeader(
" template <typename BitType, typename MaskType = uint32_t>\n" " template <typename BitType, typename MaskType = VkFlags>\n"
" class Flags\n" " class Flags\n"
" {\n" " {\n"
" public:\n" " public:\n"
@ -180,7 +180,7 @@ const std::string flagsHeader(
" return m_mask != rhs.m_mask;\n" " return m_mask != rhs.m_mask;\n"
" }\n" " }\n"
"\n" "\n"
" operator bool() const\n" " explicit operator bool() const\n"
" {\n" " {\n"
" return !!m_mask;\n" " return !!m_mask;\n"
" }\n" " }\n"
@ -1022,7 +1022,7 @@ void readExtensionRequire(tinyxml2::XMLElement * element, VkData & vkData, std::
assert(child->Attribute("name")); assert(child->Attribute("name"));
assert(vkData.enums.find(getEnumName(child->Attribute("extends"))) != vkData.enums.end()); assert(vkData.enums.find(getEnumName(child->Attribute("extends"))) != vkData.enums.end());
assert(!!child->Attribute("bitpos") + !!child->Attribute("offset") + !!child->Attribute("value") == 1); assert(!!child->Attribute("bitpos") + !!child->Attribute("offset") + !!child->Attribute("value") == 1);
vkData.enums[getEnumName(child->Attribute("extends"))].addEnum(child->Attribute("name"), child->Attribute("offset") ? tag : "" ); vkData.enums[getEnumName(child->Attribute("extends"))].addEnum(child->Attribute("name"), child->Attribute("value") ? "" : tag );
} }
} }
else else
@ -1911,6 +1911,16 @@ void writeFunctionHeader(std::ofstream & ofs, std::string const& indentation, st
ofs << returnType << " " << name << "("; ofs << returnType << " " << name << "(";
if (skippedArguments.size() + (commandData.handleCommand ? 1 : 0) < commandData.arguments.size()) if (skippedArguments.size() + (commandData.handleCommand ? 1 : 0) < commandData.arguments.size())
{ {
size_t lastArgument = ~0;
for (size_t i = commandData.arguments.size() - 1; i < commandData.arguments.size(); i--)
{
if (skippedArguments.find(i) == skippedArguments.end())
{
lastArgument = i;
break;
}
}
ofs << " "; ofs << " ";
bool argEncountered = false; bool argEncountered = false;
for (size_t i = commandData.handleCommand ? 1 : 0; i < commandData.arguments.size(); i++) for (size_t i = commandData.handleCommand ? 1 : 0; i < commandData.arguments.size(); i++)
@ -1937,7 +1947,7 @@ void writeFunctionHeader(std::ofstream & ofs, std::string const& indentation, st
bool optional = commandData.arguments[i].optional && ((it == vectorParameters.end()) || (it->second == ~0)); bool optional = commandData.arguments[i].optional && ((it == vectorParameters.end()) || (it->second == ~0));
if (optional) if (optional)
{ {
ofs << "vk::Optional<"; ofs << "Optional<";
} }
if (vectorParameters.find(i) == vectorParameters.end()) if (vectorParameters.find(i) == vectorParameters.end())
{ {
@ -1980,6 +1990,10 @@ void writeFunctionHeader(std::ofstream & ofs, std::string const& indentation, st
ofs << "> const"; ofs << "> const";
} }
ofs << " & " << reduceName(commandData.arguments[i].name); ofs << " & " << reduceName(commandData.arguments[i].name);
if (optional && (i == lastArgument))
{
ofs << " = nullptr";
}
} }
argEncountered = true; argEncountered = true;
} }
@ -2386,7 +2400,7 @@ void writeEnumsToString(std::ofstream & ofs, DependencyData const& dependencyDat
void writeFlagsToString(std::ofstream & ofs, DependencyData const& dependencyData, EnumData const &enumData) void writeFlagsToString(std::ofstream & ofs, DependencyData const& dependencyData, EnumData const &enumData)
{ {
enterProtect(ofs, enumData.protect); enterProtect(ofs, enumData.protect);
std::string enumPrefix = "vk::" + *dependencyData.dependencies.begin() + "::"; std::string enumPrefix = *dependencyData.dependencies.begin() + "::";
ofs << " inline std::string to_string(" << dependencyData.name << (enumData.members.empty() ? ")" : " value)") << std::endl ofs << " inline std::string to_string(" << dependencyData.name << (enumData.members.empty() ? ")" : " value)") << std::endl
<< " {" << std::endl; << " {" << std::endl;
if (enumData.members.empty()) if (enumData.members.empty())

File diff suppressed because it is too large Load Diff