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(
|
||||
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))
|
||||
{
|
||||
@@ -303,7 +303,8 @@ void CppFileWriter::PrintTypeName(
|
||||
if (type.FieldKind == Def::EFieldType::DefinedClass)
|
||||
{
|
||||
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);
|
||||
}
|
||||
@@ -315,7 +316,7 @@ void CppFileWriter::PrintTypeName(
|
||||
else if (type.FieldKind == Def::EFieldType::DefinedEnum)
|
||||
{
|
||||
bx::strCopy(buf, bufSize, definitions.Enums[type.TypeIdx].Name);
|
||||
if (printActualEnumType)
|
||||
if ((int32_t)flags & (int32_t)PrintFlags::PrintFullEnumName)
|
||||
{
|
||||
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)
|
||||
{
|
||||
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::LoadFuncBodyTypeUpgradeStart);
|
||||
|
||||
@@ -10,6 +10,13 @@ struct WriteBuffer
|
||||
uint64_t WrittenBytes = 0;
|
||||
};
|
||||
|
||||
enum class PrintFlags : uint32_t
|
||||
{
|
||||
None = 0,
|
||||
PrintFullEnumName = 1 << 0,
|
||||
PrintNativeTypeName = 1 << 1,
|
||||
};
|
||||
|
||||
struct CppFileWriter
|
||||
{
|
||||
private:
|
||||
@@ -25,7 +32,8 @@ struct CppFileWriter
|
||||
int32_t bufSize,
|
||||
Def::TypeRef type,
|
||||
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 WriteTypes(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