loading works!!
This commit is contained in:
@@ -88,6 +88,25 @@ namespace Generated
|
||||
return isOk;
|
||||
}
|
||||
)END";
|
||||
|
||||
constexpr char LoadFuncHeader1[] =
|
||||
R"END( bool Load(%s* obj, uint32_t count, Deserializer& serializer);
|
||||
)END";
|
||||
constexpr char LoadFuncBodyStart1[] = R"END( bool Load(%s* obj, uint32_t count, Deserializer& serializer)
|
||||
{
|
||||
bool isOk = true;
|
||||
for (uint32_t i = 0; i < count; ++i)
|
||||
{
|
||||
)END";
|
||||
constexpr char LoadFuncBodyType3[] = R"END( isOk = Load(%sobj[i].%s, %u, serializer) && isOk;
|
||||
)END";
|
||||
constexpr char LoadFuncBodyEnum1[] = R"END( auto val = (%s)obj[i];
|
||||
isOk = Load(&val, 1, serializer) && isOk;
|
||||
)END";
|
||||
constexpr char LoadFuncBodyEnd[] = R"END( }
|
||||
return isOk;
|
||||
}
|
||||
)END";
|
||||
} // namespace WriteTemplates
|
||||
|
||||
void CppFileWriter::InitBuffer(WriteBuffer& buf)
|
||||
@@ -220,24 +239,32 @@ void CppFileWriter::WriteTypes(const Def::DefinitionFile& definitions)
|
||||
Write(WriteTemplates::StructEnd);
|
||||
}
|
||||
}
|
||||
void CppFileWriter::WriteSaveMethods(const Def::DefinitionFile& definitions)
|
||||
void CppFileWriter::WriteSaveLoadMethods(const Def::DefinitionFile& definitions)
|
||||
{
|
||||
char buf[64]{0};
|
||||
char nameBuf[64]{0};
|
||||
char fieldBuf[64]{0};
|
||||
for (int32_t enumIdx = 0; enumIdx < definitions.EnumCount; ++enumIdx)
|
||||
{
|
||||
const Def::Enum& e = definitions.Enums[enumIdx];
|
||||
bx::snprintf(buf, sizeof(buf), "%s::Enum", e.Name);
|
||||
Write(WriteTemplates::SaveFuncHeader1, buf);
|
||||
bx::snprintf(nameBuf, sizeof(nameBuf), "%s::Enum", e.Name);
|
||||
PrintTypeName(fieldBuf, sizeof(fieldBuf), e.EnumType, definitions);
|
||||
|
||||
WriteCpp(WriteTemplates::SaveFuncBodyStart1, buf);
|
||||
PrintTypeName(buf, sizeof(buf), e.EnumType, definitions);
|
||||
WriteCpp(WriteTemplates::SaveFuncBodyEnum1, buf);
|
||||
Write(WriteTemplates::SaveFuncHeader1, nameBuf);
|
||||
Write(WriteTemplates::LoadFuncHeader1, nameBuf);
|
||||
|
||||
WriteCpp(WriteTemplates::SaveFuncBodyStart1, nameBuf);
|
||||
WriteCpp(WriteTemplates::SaveFuncBodyEnum1, fieldBuf);
|
||||
WriteCpp(WriteTemplates::SaveFuncBodyEnd);
|
||||
|
||||
WriteCpp(WriteTemplates::LoadFuncBodyStart1, nameBuf);
|
||||
WriteCpp(WriteTemplates::LoadFuncBodyEnum1, fieldBuf);
|
||||
WriteCpp(WriteTemplates::LoadFuncBodyEnd);
|
||||
}
|
||||
for (int32_t typeIdx = 0; typeIdx < definitions.TypeCount; ++typeIdx)
|
||||
{
|
||||
const Def::Type& t = definitions.Types[typeIdx];
|
||||
Write(WriteTemplates::SaveFuncHeader1, t.Name);
|
||||
Write(WriteTemplates::LoadFuncHeader1, t.Name);
|
||||
|
||||
WriteCpp(WriteTemplates::SaveFuncBodyStart1, t.Name);
|
||||
for (int32_t fieldIdx = 0; fieldIdx < t.FieldCount; ++fieldIdx)
|
||||
@@ -248,11 +275,18 @@ void CppFileWriter::WriteSaveMethods(const Def::DefinitionFile& definitions)
|
||||
bx::max(1, t.FieldArraySizes[fieldIdx]));
|
||||
}
|
||||
WriteCpp(WriteTemplates::SaveFuncBodyEnd);
|
||||
|
||||
WriteCpp(WriteTemplates::LoadFuncBodyStart1, t.Name);
|
||||
for (int32_t fieldIdx = 0; fieldIdx < t.FieldCount; ++fieldIdx)
|
||||
{
|
||||
WriteCpp(WriteTemplates::LoadFuncBodyType3,
|
||||
t.FieldArraySizes[fieldIdx] > 0 ? "" : "&",
|
||||
t.FieldNames[fieldIdx],
|
||||
bx::max(1, t.FieldArraySizes[fieldIdx]));
|
||||
}
|
||||
WriteCpp(WriteTemplates::LoadFuncBodyEnd);
|
||||
}
|
||||
}
|
||||
void CppFileWriter::WriteLoadMethods(const Def::DefinitionFile& definitions)
|
||||
{
|
||||
}
|
||||
void CppFileWriter::GenerateCpp(const bx::FilePath& outDir, const Def::DefinitionFile& definitions)
|
||||
{
|
||||
LOG(0, "Generating output files...");
|
||||
@@ -264,7 +298,7 @@ void CppFileWriter::GenerateCpp(const bx::FilePath& outDir, const Def::Definitio
|
||||
WriteCpp(WriteTemplates::FileCppStart);
|
||||
WriteEnums(definitions);
|
||||
WriteTypes(definitions);
|
||||
WriteSaveMethods(definitions);
|
||||
WriteSaveLoadMethods(definitions);
|
||||
Write(WriteTemplates::FileEnd);
|
||||
WriteCpp(WriteTemplates::FileEnd);
|
||||
|
||||
|
||||
@@ -24,8 +24,7 @@ struct CppFileWriter
|
||||
void PrintTypeName(char* buf, int32_t bufSize, const Def::FieldType& type, const Def::DefinitionFile& definitions);
|
||||
void WriteEnums(const Def::DefinitionFile& definitions);
|
||||
void WriteTypes(const Def::DefinitionFile& definitions);
|
||||
void WriteSaveMethods(const Def::DefinitionFile& definitions);
|
||||
void WriteLoadMethods(const Def::DefinitionFile& definitions);
|
||||
void WriteSaveLoadMethods(const Def::DefinitionFile& definitions);
|
||||
|
||||
void GenerateCpp(const bx::FilePath& outDir, const Def::DefinitionFile& definitions);
|
||||
void Write(const char* templateStr, ...);
|
||||
|
||||
Reference in New Issue
Block a user