fix upgrades one more time
This commit is contained in:
@@ -166,7 +166,8 @@ namespace Gen
|
||||
if (WriteDestinations[j] == UINT64_MAX)
|
||||
{
|
||||
// Unknown member name or type changed
|
||||
serializer.Skip(childDef.Size);
|
||||
uint16_t count = bx::max(1, matchedDef.ChildArraySizes[matchedDef.ChildIndices[j]]);
|
||||
serializer.Skip(childDef.Size * count);
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -204,6 +205,8 @@ namespace Gen
|
||||
)END";
|
||||
constexpr char MetadataStart1[] = R"END(
|
||||
namespace Meta {
|
||||
constexpr uint16_t CurrentMetaVersion = 1;
|
||||
|
||||
struct StrRef
|
||||
{
|
||||
uint16_t Offset;
|
||||
@@ -217,6 +220,7 @@ namespace Gen
|
||||
char Name[64]{"Dummy"};
|
||||
uint16_t ChildCount = 0;
|
||||
uint16_t ChildIndices[64]{0};
|
||||
uint16_t ChildArraySizes[64]{0};
|
||||
StrRef MemberNameIndices[64]{0};
|
||||
};
|
||||
|
||||
@@ -226,7 +230,7 @@ namespace Gen
|
||||
{
|
||||
)END";
|
||||
|
||||
constexpr char MetadataTypeEntry6[] = R"END( TypeDef{sizeof(%s), %u, "%s", %u, {%s}, {%s}},
|
||||
constexpr char MetadataTypeEntry7[] = R"END( TypeDef{sizeof(%s), %u, "%s", %u, {%s}, {%s}, {%s}},
|
||||
)END";
|
||||
constexpr char MetadataEnd1[] = R"END( };
|
||||
char MemberNameBuffer[64*64*64]{"%s"};
|
||||
@@ -505,8 +509,24 @@ void CppFileWriter::WriteMetadata(const Def::DefinitionFile& definitions)
|
||||
sizeof(MemberNameBuffer) - memberNameBufferIdx,
|
||||
type.FieldNames[j]);
|
||||
}
|
||||
Write(
|
||||
WriteTemplates::MetadataTypeEntry6, typeStr, type.Hash, type.Name, type.FieldCount, fieldStr, memberIdxStr);
|
||||
|
||||
char arrStr[256]{0};
|
||||
for (int32_t j = 0; j < type.FieldCount; ++j)
|
||||
{
|
||||
if (j != 0) bx::strCat(arrStr, sizeof(arrStr), ", ");
|
||||
char numBuf[16]{0};
|
||||
bx::snprintf(numBuf, sizeof(numBuf), "%u", type.FieldArraySizes[j]);
|
||||
bx::strCat(arrStr, sizeof(arrStr), numBuf);
|
||||
}
|
||||
|
||||
Write(WriteTemplates::MetadataTypeEntry7,
|
||||
typeStr,
|
||||
type.Hash,
|
||||
type.Name,
|
||||
type.FieldCount,
|
||||
fieldStr,
|
||||
arrStr,
|
||||
memberIdxStr);
|
||||
}
|
||||
for (uint16_t i = 0; i < definitions.EnumCount; ++i)
|
||||
{
|
||||
@@ -515,7 +535,7 @@ void CppFileWriter::WriteMetadata(const Def::DefinitionFile& definitions)
|
||||
char typeStr[Def::MaxNameLength]{0};
|
||||
PrintTypeName(typeStr, sizeof(typeStr), {i, Def::EFieldType::DefinedEnum}, definitions);
|
||||
|
||||
Write(WriteTemplates::MetadataTypeEntry6, typeStr, enumType.Hash, enumType.Name, 0, "", "");
|
||||
Write(WriteTemplates::MetadataTypeEntry7, typeStr, enumType.Hash, enumType.Name, 0, "", "", "");
|
||||
}
|
||||
Write(WriteTemplates::MetadataEnd1, MemberNameBuffer);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user