fix upgrading native type changes
This commit is contained in:
@@ -293,7 +293,7 @@ void CppFileWriter::WriteInternal(WriteBuffer& buf, const char* templateStr, va_
|
|||||||
}
|
}
|
||||||
|
|
||||||
void CppFileWriter::PrintTypeName(
|
void CppFileWriter::PrintTypeName(
|
||||||
char* buf, int32_t bufSize, Def::TypeRef type, const Def::DefinitionFile& definitions, bool printActualEnumType)
|
char* buf, int32_t bufSize, Def::TypeRef type, const Def::DefinitionFile& definitions, PrintFlags flags)
|
||||||
{
|
{
|
||||||
if (buf == nullptr || bufSize == 0 || !IsValid(type))
|
if (buf == nullptr || bufSize == 0 || !IsValid(type))
|
||||||
{
|
{
|
||||||
@@ -303,7 +303,8 @@ void CppFileWriter::PrintTypeName(
|
|||||||
if (type.FieldKind == Def::EFieldType::DefinedClass)
|
if (type.FieldKind == Def::EFieldType::DefinedClass)
|
||||||
{
|
{
|
||||||
auto& t = definitions.Types[type.TypeIdx];
|
auto& t = definitions.Types[type.TypeIdx];
|
||||||
if ((uint32_t)t.TypeFlags & (uint32_t)Def::ETypeFlags::IsNative)
|
if (((uint32_t)t.TypeFlags & (uint32_t)Def::ETypeFlags::IsNative) &&
|
||||||
|
((uint32_t)flags & (uint32_t)PrintFlags::PrintNativeTypeName))
|
||||||
{
|
{
|
||||||
bx::strCopy(buf, bufSize, t.NativeCName);
|
bx::strCopy(buf, bufSize, t.NativeCName);
|
||||||
}
|
}
|
||||||
@@ -315,7 +316,7 @@ void CppFileWriter::PrintTypeName(
|
|||||||
else if (type.FieldKind == Def::EFieldType::DefinedEnum)
|
else if (type.FieldKind == Def::EFieldType::DefinedEnum)
|
||||||
{
|
{
|
||||||
bx::strCopy(buf, bufSize, definitions.Enums[type.TypeIdx].Name);
|
bx::strCopy(buf, bufSize, definitions.Enums[type.TypeIdx].Name);
|
||||||
if (printActualEnumType)
|
if ((int32_t)flags & (int32_t)PrintFlags::PrintFullEnumName)
|
||||||
{
|
{
|
||||||
bx::strCat(buf, bufSize, "::Enum");
|
bx::strCat(buf, bufSize, "::Enum");
|
||||||
}
|
}
|
||||||
@@ -454,7 +455,10 @@ void CppFileWriter::WriteSaveLoadMethods(const Def::DefinitionFile& definitions)
|
|||||||
for (int32_t fieldIdx = 0; fieldIdx < t.FieldCount; ++fieldIdx)
|
for (int32_t fieldIdx = 0; fieldIdx < t.FieldCount; ++fieldIdx)
|
||||||
{
|
{
|
||||||
const char* fieldName = t.FieldNames[fieldIdx];
|
const char* fieldName = t.FieldNames[fieldIdx];
|
||||||
PrintTypeName(fieldTypeName, sizeof(fieldTypeName), t.FieldTypes[fieldIdx], definitions, false);
|
// This prints native type name, seems wrong??
|
||||||
|
// Havent i already fixed this???
|
||||||
|
PrintTypeName(
|
||||||
|
fieldTypeName, sizeof(fieldTypeName), t.FieldTypes[fieldIdx], definitions, PrintFlags::None);
|
||||||
WriteCpp(WriteTemplates::LoadFuncBodyMemberCheck4, fieldName, fieldTypeName, typeName, fieldName);
|
WriteCpp(WriteTemplates::LoadFuncBodyMemberCheck4, fieldName, fieldTypeName, typeName, fieldName);
|
||||||
}
|
}
|
||||||
WriteCpp(WriteTemplates::LoadFuncBodyTypeUpgradeStart);
|
WriteCpp(WriteTemplates::LoadFuncBodyTypeUpgradeStart);
|
||||||
|
|||||||
@@ -10,6 +10,13 @@ struct WriteBuffer
|
|||||||
uint64_t WrittenBytes = 0;
|
uint64_t WrittenBytes = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
enum class PrintFlags : uint32_t
|
||||||
|
{
|
||||||
|
None = 0,
|
||||||
|
PrintFullEnumName = 1 << 0,
|
||||||
|
PrintNativeTypeName = 1 << 1,
|
||||||
|
};
|
||||||
|
|
||||||
struct CppFileWriter
|
struct CppFileWriter
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
@@ -25,7 +32,8 @@ struct CppFileWriter
|
|||||||
int32_t bufSize,
|
int32_t bufSize,
|
||||||
Def::TypeRef type,
|
Def::TypeRef type,
|
||||||
const Def::DefinitionFile& definitions,
|
const Def::DefinitionFile& definitions,
|
||||||
bool printActualEnumType = true);
|
PrintFlags flags = (PrintFlags)((uint32_t)PrintFlags::PrintFullEnumName |
|
||||||
|
(uint32_t)PrintFlags::PrintNativeTypeName));
|
||||||
void WriteEnums(const Def::DefinitionFile& definitions);
|
void WriteEnums(const Def::DefinitionFile& definitions);
|
||||||
void WriteTypes(const Def::DefinitionFile& definitions);
|
void WriteTypes(const Def::DefinitionFile& definitions);
|
||||||
void WriteSaveLoadMethods(const Def::DefinitionFile& definitions);
|
void WriteSaveLoadMethods(const Def::DefinitionFile& definitions);
|
||||||
|
|||||||
BIN
tools/minidef.exe
LFS
BIN
tools/minidef.exe
LFS
Binary file not shown.
Reference in New Issue
Block a user