2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-10 08:27:43 +00:00

YAML RAII refactor

This commit is contained in:
Jack Andersen
2017-02-12 13:56:03 -10:00
parent 1b8baca988
commit 748e81ae6e
29 changed files with 1314 additions and 1842 deletions

View File

@@ -81,43 +81,40 @@ void CRSM<IDType>::read(athena::io::YAMLDocReader& r)
continue;
}
r.enterSubRecord(elem.first.c_str());
FourCC clsId(elem.first.c_str());
auto gen = std::find_if(GeneratorTypes.begin(), GeneratorTypes.end(), [&clsId](const FourCC& other) -> bool{
return clsId == other;
});
if (gen != GeneratorTypes.end())
if (auto rec = r.enterSubRecord(elem.first.c_str()))
{
x0_generators[clsId].read(r);
r.leaveSubRecord();
continue;
}
FourCC clsId(elem.first.c_str());
auto gen = std::find_if(GeneratorTypes.begin(), GeneratorTypes.end(), [&clsId](const FourCC& other) -> bool{
return clsId == other;
});
if (gen != GeneratorTypes.end())
{
x0_generators[clsId].read(r);
continue;
}
auto sfx = std::find_if(SFXTypes.begin(), SFXTypes.end(), [&clsId](const FourCC& other) -> bool{
return clsId == other;
});
if (sfx != SFXTypes.end())
{
x10_sfx[clsId] = r.readInt32(clsId.toString().c_str());
r.leaveSubRecord();
continue;
}
auto sfx = std::find_if(SFXTypes.begin(), SFXTypes.end(), [&clsId](const FourCC& other) -> bool{
return clsId == other;
});
if (sfx != SFXTypes.end())
{
x10_sfx[clsId] = r.readInt32(clsId.toString().c_str());
continue;
}
auto decal = std::find_if(DecalTypes.begin(), DecalTypes.end(), [&clsId](const FourCC& other) -> bool{
return clsId == other;
});
if (decal != DecalTypes.end())
{
x20_decals[clsId].read(r);
r.leaveSubRecord();
continue;
auto decal = std::find_if(DecalTypes.begin(), DecalTypes.end(), [&clsId](const FourCC& other) -> bool{
return clsId == other;
});
if (decal != DecalTypes.end())
{
x20_decals[clsId].read(r);
continue;
}
if (clsId == SBIG('RNGE'))
x30_RNGE = r.readFloat(nullptr);
else if (clsId == SBIG('FOFF'))
x34_FOFF = r.readFloat(nullptr);
}
if (clsId == SBIG('RNGE'))
x30_RNGE = r.readFloat(nullptr);
else if (clsId == SBIG('FOFF'))
x34_FOFF = r.readFloat(nullptr);
r.leaveSubRecord();
}
}
@@ -125,30 +122,18 @@ template <class IDType>
void CRSM<IDType>::write(athena::io::YAMLDocWriter& w) const
{
for (const auto& pair : x0_generators)
{
if (pair.second)
{
w.enterSubRecord(pair.first.toString().c_str());
pair.second.write(w);
w.leaveSubRecord();
}
}
if (auto rec = w.enterSubRecord(pair.first.toString().c_str()))
pair.second.write(w);
for (const auto& pair : x10_sfx)
{
if (pair.second != ~0)
w.writeUint32(pair.first.toString().c_str(), pair.second);
}
for (const auto& pair : x20_decals)
{
if (pair.second)
{
w.enterSubRecord(pair.first.toString().c_str());
pair.second.write(w);
w.leaveSubRecord();
}
}
if (auto rec = w.enterSubRecord(pair.first.toString().c_str()))
pair.second.write(w);
if (x30_RNGE != 50.f)
w.writeFloat("RNGE", x30_RNGE);

View File

@@ -63,21 +63,23 @@ public:
void read(athena::io::YAMLDocReader& reader)
{
size_t count;
reader.enterSubVector(nullptr, count);
r = (count >= 1) ? reader.readFloat(nullptr) : 0.f;
g = (count >= 2) ? reader.readFloat(nullptr) : 0.f;
b = (count >= 3) ? reader.readFloat(nullptr) : 0.f;
a = (count >= 4) ? reader.readFloat(nullptr) : 0.f;
reader.leaveSubVector();
if (auto v = reader.enterSubVector(nullptr, count))
{
r = (count >= 1) ? reader.readFloat(nullptr) : 0.f;
g = (count >= 2) ? reader.readFloat(nullptr) : 0.f;
b = (count >= 3) ? reader.readFloat(nullptr) : 0.f;
a = (count >= 4) ? reader.readFloat(nullptr) : 0.f;
}
}
void write(athena::io::YAMLDocWriter& writer) const
{
writer.enterSubVector(nullptr);
writer.writeFloat(nullptr, r);
writer.writeFloat(nullptr, g);
writer.writeFloat(nullptr, b);
writer.writeFloat(nullptr, a);
writer.leaveSubVector();
if (auto v = writer.enterSubVector(nullptr))
{
writer.writeFloat(nullptr, r);
writer.writeFloat(nullptr, g);
writer.writeFloat(nullptr, b);
writer.writeFloat(nullptr, a);
}
}
size_t binarySize(size_t __isz) const
{return __isz + 4;}

View File

@@ -15,58 +15,58 @@ void DPSM<IDType>::read(athena::io::YAMLDocReader& r)
continue;
}
r.enterSubRecord(elem.first.c_str());
bool loadFirstDesc = false;
uint32_t clsId = *reinterpret_cast<const uint32_t*>(elem.first.c_str());
switch(clsId)
if (auto rec = r.enterSubRecord(elem.first.c_str()))
{
case SBIG('1SZE'):
case SBIG('1LFT'):
case SBIG('1ROT'):
case SBIG('1OFF'):
case SBIG('1CLR'):
case SBIG('1TEX'):
case SBIG('1ADD'):
loadFirstDesc = true;
case SBIG('2SZE'):
case SBIG('2LFT'):
case SBIG('2ROT'):
case SBIG('2OFF'):
case SBIG('2CLR'):
case SBIG('2TEX'):
case SBIG('2ADD'):
if (loadFirstDesc)
readQuadDecalInfo(r, clsId, x0_quad);
else
readQuadDecalInfo(r, clsId, x1c_quad);
break;
case SBIG('DMDL'):
x38_DMDL.read(r);
break;
case SBIG('DLFT'):
x48_DLFT.read(r);
break;
case SBIG('DMOP'):
x4c_DMOP.read(r);
break;
case SBIG('DMRT'):
x50_DMRT.read(r);
break;
case SBIG('DMSC'):
x54_DMSC.read(r);
break;
case SBIG('DMCL'):
x58_DMCL.read(r);
break;
case SBIG('DMAB'):
x5c_24_DMAB = r.readBool(nullptr);
break;
case SBIG('DMOO'):
x5c_25_DMOO = r.readBool(nullptr);
break;
bool loadFirstDesc = false;
uint32_t clsId = *reinterpret_cast<const uint32_t*>(elem.first.c_str());
switch(clsId)
{
case SBIG('1SZE'):
case SBIG('1LFT'):
case SBIG('1ROT'):
case SBIG('1OFF'):
case SBIG('1CLR'):
case SBIG('1TEX'):
case SBIG('1ADD'):
loadFirstDesc = true;
case SBIG('2SZE'):
case SBIG('2LFT'):
case SBIG('2ROT'):
case SBIG('2OFF'):
case SBIG('2CLR'):
case SBIG('2TEX'):
case SBIG('2ADD'):
if (loadFirstDesc)
readQuadDecalInfo(r, clsId, x0_quad);
else
readQuadDecalInfo(r, clsId, x1c_quad);
break;
case SBIG('DMDL'):
x38_DMDL.read(r);
break;
case SBIG('DLFT'):
x48_DLFT.read(r);
break;
case SBIG('DMOP'):
x4c_DMOP.read(r);
break;
case SBIG('DMRT'):
x50_DMRT.read(r);
break;
case SBIG('DMSC'):
x54_DMSC.read(r);
break;
case SBIG('DMCL'):
x58_DMCL.read(r);
break;
case SBIG('DMAB'):
x5c_24_DMAB = r.readBool(nullptr);
break;
case SBIG('DMOO'):
x5c_25_DMOO = r.readBool(nullptr);
break;
}
}
r.leaveSubRecord();
}
}
@@ -77,41 +77,24 @@ void DPSM<IDType>::write(athena::io::YAMLDocWriter& w) const
writeQuadDecalInfo(w, x1c_quad, false);
if (x38_DMDL)
{
w.enterSubRecord("DMDL");
x38_DMDL.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("DMDL"))
x38_DMDL.write(w);
if (x48_DLFT)
{
w.enterSubRecord("DLFT");
x48_DLFT.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("DLFT"))
x48_DLFT.write(w);
if (x4c_DMOP)
{
w.enterSubRecord("DMOP");
x4c_DMOP.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("DMOP"))
x4c_DMOP.write(w);
if (x50_DMRT)
{
w.enterSubRecord("DMRT");
x50_DMRT.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("DMRT"))
x50_DMRT.write(w);
if (x54_DMSC)
{
w.enterSubRecord("DMSC");
x54_DMSC.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("DMSC"))
x54_DMSC.write(w);
if (x58_DMCL)
{
w.enterSubRecord("DMCL");
x54_DMSC.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("DMCL"))
x54_DMSC.write(w);
if (x5c_24_DMAB)
w.writeBool("DMAB", x5c_24_DMAB);
if (x5c_25_DMOO)
@@ -160,48 +143,26 @@ void DPSM<IDType>::writeQuadDecalInfo(athena::io::YAMLDocWriter& w,
const typename DPSM<IDType>::SQuadDescr& quad, bool first) const
{
if (quad.x0_LFT)
{
w.enterSubRecord((first ? "1LFT" : "2LFT"));
quad.x0_LFT.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord((first ? "1LFT" : "2LFT")))
quad.x0_LFT.write(w);
if (quad.x4_SZE)
{
w.enterSubRecord((first ? "1SZE" : "2SZE"));
quad.x4_SZE.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord((first ? "1SZE" : "2SZE")))
quad.x4_SZE.write(w);
if (quad.x8_ROT)
{
w.enterSubRecord((first ? "1ROT" : "2ROT"));
quad.x8_ROT.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord((first ? "1ROT" : "2ROT")))
quad.x8_ROT.write(w);
if (quad.xc_OFF)
{
w.enterSubRecord((first ? "1OFF" : "2OFF"));
quad.xc_OFF.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord((first ? "1OFF" : "2OFF")))
quad.xc_OFF.write(w);
if (quad.x10_CLR)
{
w.enterSubRecord((first ? "1CLR" : "2CLR"));
quad.x10_CLR.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord((first ? "1CLR" : "2CLR")))
quad.x10_CLR.write(w);
if (quad.x14_TEX)
{
w.enterSubRecord((first ? "1TEX" : "2TEX"));
quad.x14_TEX.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord((first ? "1TEX" : "2TEX")))
quad.x14_TEX.write(w);
if (quad.x18_ADD)
{
w.enterSubRecord((first ? "1ADD" : "2ADD"));
quad.x18_ADD.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord((first ? "1ADD" : "2ADD")))
quad.x18_ADD.write(w);
}
template <class IDType>

View File

@@ -84,125 +84,65 @@ template <class IDType>
void ELSM<IDType>::write(athena::io::YAMLDocWriter& w) const
{
if (x0_LIFE)
{
w.enterSubRecord("LIFE");
x0_LIFE.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("LIFE"))
x0_LIFE.write(w);
if (x4_SLIF)
{
w.enterSubRecord("SLIF");
x4_SLIF.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("SLIF"))
x4_SLIF.write(w);
if (x8_GRAT)
{
w.enterSubRecord("GRAT");
x8_GRAT.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("GRAT"))
x8_GRAT.write(w);
if (xc_SCNT)
{
w.enterSubRecord("SCNT");
xc_SCNT.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("SCNT"))
xc_SCNT.write(w);
if (x10_SSEG)
{
w.enterSubRecord("SSEG");
x10_SSEG.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("SSEG"))
x10_SSEG.write(w);
if (x14_COLR)
{
w.enterSubRecord("COLR");
x14_COLR.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("COLR"))
x14_COLR.write(w);
if (x18_IEMT)
{
w.enterSubRecord("IEMT");
x18_IEMT.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("IEMT"))
x18_IEMT.write(w);
if (x1c_FEMT)
{
w.enterSubRecord("FEMT");
x1c_FEMT.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("FEMT"))
x1c_FEMT.write(w);
if (x20_AMPL)
{
w.enterSubRecord("AMPL");
x20_AMPL.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("AMPL"))
x20_AMPL.write(w);
if (x24_AMPD)
{
w.enterSubRecord("AMPD");
x24_AMPD.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("AMPD"))
x24_AMPD.write(w);
if (x28_LWD1)
{
w.enterSubRecord("LWD1");
x28_LWD1.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("LWD1"))
x28_LWD1.write(w);
if (x2c_LWD2)
{
w.enterSubRecord("LWD2");
x2c_LWD2.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("LWD2"))
x2c_LWD2.write(w);
if (x30_LWD3)
{
w.enterSubRecord("LWD3");
x30_LWD3.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("LWD3"))
x30_LWD3.write(w);
if (x34_LCL1)
{
w.enterSubRecord("LCL1");
x34_LCL1.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("LCL1"))
x34_LCL1.write(w);
if (x38_LCL2)
{
w.enterSubRecord("LCL2");
x38_LCL2.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("LCL2"))
x38_LCL2.write(w);
if (x3c_LCL3)
{
w.enterSubRecord("LCL3");
x3c_LCL3.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("LCL3"))
x3c_LCL3.write(w);
if (x40_SSWH)
{
w.enterSubRecord("SSWH");
x40_SSWH.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("SSWH"))
x40_SSWH.write(w);
if (x50_GPSM)
{
w.enterSubRecord("GPSM");
x50_GPSM.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("GPSM"))
x50_GPSM.write(w);
if (x60_EPSM)
{
w.enterSubRecord("EPSM");
x60_EPSM.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("EPSM"))
x60_EPSM.write(w);
if (x70_ZERY)
{
w.enterSubRecord("ZERY");
x70_ZERY.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("ZERY"))
x70_ZERY.write(w);
}
template <class IDType>

View File

@@ -186,20 +186,20 @@ void FONT<IDType>::read(athena::io::YAMLDocReader& __dna_docin)
/* glyphCount */
/* glyphs */
size_t count;
__dna_docin.enterSubVector("glyphs", count);
glyphCount = count;
for (atUint32 i = 0; i < glyphCount; i++)
if (auto v = __dna_docin.enterSubVector("glyphs", count))
{
if (version < 4)
glyphs.emplace_back(new GlyphMP1);
else
glyphs.emplace_back(new GlyphMP2);
glyphCount = count;
for (atUint32 i = 0; i < glyphCount; i++)
{
if (version < 4)
glyphs.emplace_back(new GlyphMP1);
else
glyphs.emplace_back(new GlyphMP2);
__dna_docin.enterSubRecord(nullptr);
glyphs.back()->read(__dna_docin);
__dna_docin.leaveSubRecord();
if (auto rec = __dna_docin.enterSubRecord(nullptr))
glyphs.back()->read(__dna_docin);
}
}
__dna_docin.leaveSubVector();
/* kerningInfoCount squelched */
/* kerningInfo */
kerningInfoCount = __dna_docin.enumerate("kerningInfo", kerningInfo);
@@ -234,16 +234,10 @@ void FONT<IDType>::write(athena::io::YAMLDocWriter& __dna_docout) const
__dna_docout.writeUint32("textureFormat", textureFormat);
/* glyphCount squelched */
/* glyphs */
__dna_docout.enterSubVector("glyphs");
for (const std::unique_ptr<IGlyph>& glyph : glyphs)
{
__dna_docout.enterSubRecord(nullptr);
glyph->write(__dna_docout);
__dna_docout.leaveSubRecord();
}
__dna_docout.leaveSubVector();
if (auto v = __dna_docout.enterSubVector("glyphs"))
for (const std::unique_ptr<IGlyph>& glyph : glyphs)
if (auto rec = __dna_docout.enterSubRecord(nullptr))
glyph->write(__dna_docout);
/* kerningInfoCount squelched */
/* kerningInfo */
__dna_docout.enumerate("kerningInfo", kerningInfo);

View File

@@ -207,18 +207,20 @@ void PAKRouter<BRIDGETYPE>::build(std::vector<BRIDGETYPE>& bridges, std::functio
{
if (namedEntry.name == "holo_cinf")
continue; /* Problematic corner case */
catalogWriter.enterSubRecord(namedEntry.name.c_str());
hecl::ProjectPath working = getWorking(namedEntry.id);
if (working.getAuxInfoUTF8().size())
if (auto rec = catalogWriter.enterSubRecord(namedEntry.name.c_str()))
{
catalogWriter.enterSubVector(nullptr);
catalogWriter.writeString(nullptr, working.getRelativePathUTF8().c_str());
catalogWriter.writeString(nullptr, working.getAuxInfoUTF8().c_str());
catalogWriter.leaveSubVector();
hecl::ProjectPath working = getWorking(namedEntry.id);
if (working.getAuxInfoUTF8().size())
{
if (auto v = catalogWriter.enterSubVector(nullptr))
{
catalogWriter.writeString(nullptr, working.getRelativePathUTF8().c_str());
catalogWriter.writeString(nullptr, working.getAuxInfoUTF8().c_str());
}
}
else
catalogWriter.writeString(nullptr, working.getRelativePathUTF8().c_str());
}
else
catalogWriter.writeString(nullptr, working.getRelativePathUTF8().c_str());
catalogWriter.leaveSubRecord();
}
/* Write catalog */

File diff suppressed because it is too large Load Diff

View File

@@ -125,19 +125,15 @@ void RealElementFactory::read(athena::io::YAMLDocReader& r)
m_elem.reset();
return;
}
r.enterSubRecord(elem.first.c_str());
m_elem->read(r);
r.leaveSubRecord();
if (auto rec = r.enterSubRecord(elem.first.c_str()))
m_elem->read(r);
}
void RealElementFactory::write(athena::io::YAMLDocWriter& w) const
{
if (m_elem)
{
w.enterSubRecord(m_elem->ClassID());
m_elem->write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord(m_elem->ClassID()))
m_elem->write(w);
}
size_t RealElementFactory::binarySize(size_t __isz) const
@@ -348,19 +344,15 @@ void IntElementFactory::read(athena::io::YAMLDocReader& r)
m_elem.reset();
return;
}
r.enterSubRecord(elem.first.c_str());
m_elem->read(r);
r.leaveSubRecord();
if (auto rec = r.enterSubRecord(elem.first.c_str()))
m_elem->read(r);
}
void IntElementFactory::write(athena::io::YAMLDocWriter& w) const
{
if (m_elem)
{
w.enterSubRecord(m_elem->ClassID());
m_elem->write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord(m_elem->ClassID()))
m_elem->write(w);
}
size_t IntElementFactory::binarySize(size_t __isz) const
@@ -522,19 +514,15 @@ void VectorElementFactory::read(athena::io::YAMLDocReader& r)
m_elem.reset();
return;
}
r.enterSubRecord(elem.first.c_str());
m_elem->read(r);
r.leaveSubRecord();
if (auto rec = r.enterSubRecord(elem.first.c_str()))
m_elem->read(r);
}
void VectorElementFactory::write(athena::io::YAMLDocWriter& w) const
{
if (m_elem)
{
w.enterSubRecord(m_elem->ClassID());
m_elem->write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord(m_elem->ClassID()))
m_elem->write(w);
}
size_t VectorElementFactory::binarySize(size_t __isz) const
@@ -664,19 +652,15 @@ void ColorElementFactory::read(athena::io::YAMLDocReader& r)
m_elem.reset();
return;
}
r.enterSubRecord(elem.first.c_str());
m_elem->read(r);
r.leaveSubRecord();
if (auto rec = r.enterSubRecord(elem.first.c_str()))
m_elem->read(r);
}
void ColorElementFactory::write(athena::io::YAMLDocWriter& w) const
{
if (m_elem)
{
w.enterSubRecord(m_elem->ClassID());
m_elem->write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord(m_elem->ClassID()))
m_elem->write(w);
}
size_t ColorElementFactory::binarySize(size_t __isz) const
@@ -790,19 +774,15 @@ void ModVectorElementFactory::read(athena::io::YAMLDocReader& r)
m_elem.reset();
return;
}
r.enterSubRecord(elem.first.c_str());
m_elem->read(r);
r.leaveSubRecord();
if (auto rec = r.enterSubRecord(elem.first.c_str()))
m_elem->read(r);
}
void ModVectorElementFactory::write(athena::io::YAMLDocWriter& w) const
{
if (m_elem)
{
w.enterSubRecord(m_elem->ClassID());
m_elem->write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord(m_elem->ClassID()))
m_elem->write(w);
}
size_t ModVectorElementFactory::binarySize(size_t __isz) const
@@ -909,19 +889,15 @@ void EmitterElementFactory::read(athena::io::YAMLDocReader& r)
m_elem.reset();
return;
}
r.enterSubRecord(elem.first.c_str());
m_elem->read(r);
r.leaveSubRecord();
if (auto rec = r.enterSubRecord(elem.first.c_str()))
m_elem->read(r);
}
void EmitterElementFactory::write(athena::io::YAMLDocWriter& w) const
{
if (m_elem)
{
w.enterSubRecord(m_elem->ClassID());
m_elem->write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord(m_elem->ClassID()))
m_elem->write(w);
}
size_t EmitterElementFactory::binarySize(size_t __isz) const

View File

@@ -631,25 +631,21 @@ struct VEConstant : IVectorElement
void read(athena::io::YAMLDocReader& r)
{
size_t elemCount;
r.enterSubVector(nullptr, elemCount);
for (int i=0 ; i<3 && i<elemCount ; ++i)
if (auto v = r.enterSubVector(nullptr, elemCount))
{
r.enterSubRecord(nullptr);
comps[i].read(r);
r.leaveSubRecord();
for (int i=0 ; i<3 && i<elemCount ; ++i)
{
if (auto rec = r.enterSubRecord(nullptr))
comps[i].read(r);
}
}
r.leaveSubVector();
}
void write(athena::io::YAMLDocWriter& w) const
{
w.enterSubVector(nullptr);
for (int i=0 ; i<3 ; ++i)
{
w.enterSubRecord(nullptr);
comps[i].write(w);
w.leaveSubRecord();
}
w.leaveSubVector();
if (auto v = w.enterSubVector(nullptr))
for (int i=0 ; i<3 ; ++i)
if (auto rec = w.enterSubRecord(nullptr))
comps[i].write(w);
}
size_t binarySize(size_t __isz) const
{
@@ -782,22 +778,15 @@ struct CEConstant : IColorElement
void read(athena::io::YAMLDocReader& r)
{
for (int i=0 ; i<4 ; ++i)
{
r.enterSubRecord(nullptr);
comps[i].read(r);
r.leaveSubRecord();
}
if (auto rec = r.enterSubRecord(nullptr))
comps[i].read(r);
}
void write(athena::io::YAMLDocWriter& w) const
{
w.enterSubVector(nullptr);
for (int i=0 ; i<4 ; ++i)
{
w.enterSubRecord(nullptr);
comps[i].write(w);
w.leaveSubRecord();
}
w.leaveSubVector();
if (auto v = w.enterSubVector(nullptr))
for (int i=0 ; i<4 ; ++i)
if (auto rec = w.enterSubRecord(nullptr))
comps[i].write(w);
}
size_t binarySize(size_t __isz) const
{
@@ -912,22 +901,15 @@ struct MVEConstant : IModVectorElement
void read(athena::io::YAMLDocReader& r)
{
for (int i=0 ; i<3 ; ++i)
{
r.enterSubRecord(nullptr);
comps[i].read(r);
r.leaveSubRecord();
}
if (auto rec = r.enterSubRecord(nullptr))
comps[i].read(r);
}
void write(athena::io::YAMLDocWriter& w) const
{
w.enterSubVector(nullptr);
for (int i=0 ; i<3 ; ++i)
{
w.enterSubRecord(nullptr);
comps[i].write(w);
w.leaveSubRecord();
}
w.leaveSubVector();
if (auto v = w.enterSubVector(nullptr))
for (int i=0 ; i<3 ; ++i)
if (auto rec = w.enterSubRecord(nullptr))
comps[i].write(w);
}
size_t binarySize(size_t __isz) const
{
@@ -1050,25 +1032,17 @@ struct EESimpleEmitterTR : EESimpleEmitter
{
position.m_elem.reset();
velocity.m_elem.reset();
if (r.enterSubRecord("ILOC"))
{
if (auto rec = r.enterSubRecord("ILOC"))
position.read(r);
r.leaveSubRecord();
}
if (r.enterSubRecord("IVEC"))
{
if (auto rec = r.enterSubRecord("IVEC"))
velocity.read(r);
r.leaveSubRecord();
}
}
void write(athena::io::YAMLDocWriter& w) const
{
w.enterSubRecord("ILOC");
position.write(w);
w.leaveSubRecord();
w.enterSubRecord("IVEC");
velocity.write(w);
w.leaveSubRecord();
if (auto rec = w.enterSubRecord("ILOC"))
position.write(w);
if (auto rec = w.enterSubRecord("IVEC"))
velocity.write(w);
}
size_t binarySize(size_t __isz) const
{
@@ -1109,17 +1083,13 @@ struct UVEConstant : IUVElement
void read(athena::io::YAMLDocReader& r)
{
tex.clear();
if (r.enterSubRecord("tex"))
{
if (auto rec = r.enterSubRecord("tex"))
tex.read(r);
r.leaveSubRecord();
}
}
void write(athena::io::YAMLDocWriter& w) const
{
w.enterSubRecord("tex");
tex.write(w);
w.leaveSubRecord();
if (auto rec = w.enterSubRecord("tex"))
tex.write(w);
}
size_t binarySize(size_t __isz) const
{
@@ -1160,62 +1130,35 @@ struct UVEAnimTexture : IUVElement
void read(athena::io::YAMLDocReader& r)
{
tex.clear();
if (r.enterSubRecord("tex"))
{
if (auto rec = r.enterSubRecord("tex"))
tex.read(r);
r.leaveSubRecord();
}
if (r.enterSubRecord("tileW"))
{
if (auto rec = r.enterSubRecord("tileW"))
tileW.read(r);
r.leaveSubRecord();
}
if (r.enterSubRecord("tileH"))
{
if (auto rec = r.enterSubRecord("tileH"))
tileH.read(r);
r.leaveSubRecord();
}
if (r.enterSubRecord("strideW"))
{
if (auto rec = r.enterSubRecord("strideW"))
strideW.read(r);
r.leaveSubRecord();
}
if (r.enterSubRecord("strideH"))
{
if (auto rec = r.enterSubRecord("strideH"))
strideH.read(r);
r.leaveSubRecord();
}
if (r.enterSubRecord("cycleFrames"))
{
if (auto rec = r.enterSubRecord("cycleFrames"))
cycleFrames.read(r);
r.leaveSubRecord();
}
if (r.enterSubRecord("loop"))
{
if (auto rec = r.enterSubRecord("loop"))
loop = r.readBool(nullptr);
r.leaveSubRecord();
}
}
void write(athena::io::YAMLDocWriter& w) const
{
w.enterSubRecord("tex");
tex.write(w);
w.leaveSubRecord();
w.enterSubRecord("tileW");
tileW.write(w);
w.leaveSubRecord();
w.enterSubRecord("tileH");
tileH.write(w);
w.leaveSubRecord();
w.enterSubRecord("strideW");
strideW.write(w);
w.leaveSubRecord();
w.enterSubRecord("strideH");
strideH.write(w);
w.leaveSubRecord();
w.enterSubRecord("cycleFrames");
cycleFrames.write(w);
w.leaveSubRecord();
if (auto rec = w.enterSubRecord("tex"))
tex.write(w);
if (auto rec = w.enterSubRecord("tileW"))
tileW.write(w);
if (auto rec = w.enterSubRecord("tileH"))
tileH.write(w);
if (auto rec = w.enterSubRecord("strideW"))
strideW.write(w);
if (auto rec = w.enterSubRecord("strideH"))
strideH.write(w);
if (auto rec = w.enterSubRecord("cycleFrames"))
cycleFrames.write(w);
w.writeBool("loop", loop);
}
size_t binarySize(size_t __isz) const
@@ -1274,17 +1217,15 @@ struct UVElementFactory : BigYAML
void read(athena::io::YAMLDocReader& r)
{
if (r.enterSubRecord("CNST"))
if (auto rec = r.enterSubRecord("CNST"))
{
m_elem.reset(new struct UVEConstant<IDType>);
m_elem->read(r);
r.leaveSubRecord();
}
else if (r.enterSubRecord("ATEX"))
else if (auto rec = r.enterSubRecord("ATEX"))
{
m_elem.reset(new struct UVEAnimTexture<IDType>);
m_elem->read(r);
r.leaveSubRecord();
}
else
m_elem.reset();
@@ -1293,11 +1234,8 @@ struct UVElementFactory : BigYAML
void write(athena::io::YAMLDocWriter& w) const
{
if (m_elem)
{
w.enterSubRecord(m_elem->ClassID());
m_elem->write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord(m_elem->ClassID()))
m_elem->write(w);
}
size_t binarySize(size_t __isz) const
@@ -1358,32 +1296,19 @@ struct SpawnSystemKeyframeData : BigYAML
void read(athena::io::YAMLDocReader& r)
{
if (r.enterSubRecord("id"))
{
if (auto rec = r.enterSubRecord("id"))
id.read(r);
r.leaveSubRecord();
}
if (r.enterSubRecord("a"))
{
if (auto rec = r.enterSubRecord("a"))
a = r.readUint32(nullptr);
r.leaveSubRecord();
}
if (r.enterSubRecord("b"))
{
if (auto rec = r.enterSubRecord("b"))
b = r.readUint32(nullptr);
r.leaveSubRecord();
}
if (r.enterSubRecord("c"))
{
if (auto rec = r.enterSubRecord("c"))
c = r.readUint32(nullptr);
r.leaveSubRecord();
}
}
void write(athena::io::YAMLDocWriter& w) const
{
w.enterSubRecord("id");
id.write(w);
w.leaveSubRecord();
if (auto rec = w.enterSubRecord("id"))
id.write(w);
w.writeUint32("a", a);
w.writeUint32("b", b);
w.writeUint32("c", c);
@@ -1412,55 +1337,39 @@ struct SpawnSystemKeyframeData : BigYAML
void read(athena::io::YAMLDocReader& r)
{
if (r.enterSubRecord("a"))
{
if (auto rec = r.enterSubRecord("a"))
a = r.readUint32(nullptr);
r.leaveSubRecord();
}
if (r.enterSubRecord("b"))
{
if (auto rec = r.enterSubRecord("b"))
b = r.readUint32(nullptr);
r.leaveSubRecord();
}
if (r.enterSubRecord("endFrame"))
{
if (auto rec = r.enterSubRecord("endFrame"))
endFrame = r.readUint32(nullptr);
r.leaveSubRecord();
}
if (r.enterSubRecord("d"))
{
if (auto rec = r.enterSubRecord("d"))
d = r.readUint32(nullptr);
r.leaveSubRecord();
}
spawns.clear();
size_t spawnCount;
if (r.enterSubVector("spawns", spawnCount))
if (auto v = r.enterSubVector("spawns", spawnCount))
{
spawns.reserve(spawnCount);
for (const auto& child : r.getCurNode()->m_seqChildren)
{
if (r.enterSubRecord(nullptr))
if (auto rec = r.enterSubRecord(nullptr))
{
spawns.emplace_back();
spawns.back().first = r.readUint32("startFrame");
size_t systemCount;
if (r.enterSubVector("systems", systemCount))
if (auto v = r.enterSubVector("systems", systemCount))
{
spawns.back().second.reserve(systemCount);
for (const auto& in : r.getCurNode()->m_seqChildren)
{
spawns.back().second.emplace_back();
SpawnSystemKeyframeInfo& info = spawns.back().second.back();
r.enterSubRecord(nullptr);
info.read(r);
r.leaveSubRecord();
if (auto rec = r.enterSubRecord(nullptr))
info.read(r);
}
r.leaveSubVector();
}
r.leaveSubRecord();
}
}
r.leaveSubVector();
}
}
void write(athena::io::YAMLDocWriter& w) const
@@ -1471,22 +1380,20 @@ struct SpawnSystemKeyframeData : BigYAML
w.writeUint32("b", b);
w.writeUint32("endFrame", endFrame);
w.writeUint32("d", d);
w.enterSubVector("spawns");
for (const auto& spawn : spawns)
if (auto v = w.enterSubVector("spawns"))
{
w.enterSubRecord(nullptr);
w.writeUint32("startFrame", spawn.first);
w.enterSubVector("systems");
for (const auto& info : spawn.second)
for (const auto& spawn : spawns)
{
w.enterSubRecord(nullptr);
info.write(w);
w.leaveSubRecord();
if (auto rec = w.enterSubRecord(nullptr))
{
w.writeUint32("startFrame", spawn.first);
if (auto v = w.enterSubVector("systems"))
for (const auto& info : spawn.second)
if (auto rec = w.enterSubRecord(nullptr))
info.write(w);
}
}
w.leaveSubVector();
w.leaveSubRecord();
}
w.leaveSubVector();
}
size_t binarySize(size_t __isz) const
{
@@ -1566,20 +1473,14 @@ struct ChildResourceFactory : BigYAML
void read(athena::io::YAMLDocReader& r)
{
id.clear();
if (r.enterSubRecord("CNST"))
{
if (auto rec = r.enterSubRecord("CNST"))
id.read(r);
r.leaveSubRecord();
}
}
void write(athena::io::YAMLDocWriter& w) const
{
if (id)
{
w.enterSubRecord("CNST");
id.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("CNST"))
id.write(w);
}
size_t binarySize(size_t __isz) const
{

View File

@@ -16,96 +16,96 @@ void SWSH<IDType>::read(athena::io::YAMLDocReader& r)
continue;
}
r.enterSubRecord(elem.first.c_str());
switch(*reinterpret_cast<const uint32_t*>(elem.first.data()))
if (auto rec = r.enterSubRecord(elem.first.c_str()))
{
case SBIG('PSLT'):
x0_PSLT.read(r);
break;
case SBIG('TIME'):
x4_TIME.read(r);
break;
case SBIG('LRAD'):
x8_LRAD.read(r);
break;
case SBIG('RRAD'):
xc_RRAD.read(r);
break;
case SBIG('LENG'):
x10_LENG.read(r);
break;
case SBIG('COLR'):
x14_COLR.read(r);
break;
case SBIG('SIDE'):
x18_SIDE.read(r);
break;
case SBIG('IROT'):
x1c_IROT.read(r);
break;
case SBIG('ROTM'):
x20_ROTM.read(r);
break;
case SBIG('POFS'):
x24_POFS.read(r);
break;
case SBIG('IVEL'):
x28_IVEL.read(r);
break;
case SBIG('NPOS'):
x2c_NPOS.read(r);
break;
case SBIG('VELM'):
x30_VELM.read(r);
break;
case SBIG('VLM2'):
x34_VLM2.read(r);
break;
case SBIG('SPLN'):
x38_SPLN.read(r);
break;
case SBIG('TEXR'):
x3c_TEXR.read(r);
break;
case SBIG('TSPN'):
x40_TSPN.read(r);
break;
case SBIG('LLRD'):
x44_24_LLRD = r.readBool(nullptr);
break;
case SBIG('CROS'):
x44_25_CROS = r.readBool(nullptr);
break;
case SBIG('VLS1'):
x44_26_VLS1 = r.readBool(nullptr);
break;
case SBIG('VLS2'):
x44_27_VLS2 = r.readBool(nullptr);
break;
case SBIG('SROT'):
x44_28_SROT = r.readBool(nullptr);
break;
case SBIG('WIRE'):
x44_29_WIRE = r.readBool(nullptr);
break;
case SBIG('TEXW'):
x44_30_TEXW = r.readBool(nullptr);
break;
case SBIG('AALP'):
x44_31_AALP = r.readBool(nullptr);
break;
case SBIG('ZBUF'):
x45_24_ZBUF = r.readBool(nullptr);
break;
case SBIG('ORNT'):
x45_25_ORNT = r.readBool(nullptr);
break;
case SBIG('CRND'):
x45_26_CRND = r.readBool(nullptr);
break;
switch(*reinterpret_cast<const uint32_t*>(elem.first.data()))
{
case SBIG('PSLT'):
x0_PSLT.read(r);
break;
case SBIG('TIME'):
x4_TIME.read(r);
break;
case SBIG('LRAD'):
x8_LRAD.read(r);
break;
case SBIG('RRAD'):
xc_RRAD.read(r);
break;
case SBIG('LENG'):
x10_LENG.read(r);
break;
case SBIG('COLR'):
x14_COLR.read(r);
break;
case SBIG('SIDE'):
x18_SIDE.read(r);
break;
case SBIG('IROT'):
x1c_IROT.read(r);
break;
case SBIG('ROTM'):
x20_ROTM.read(r);
break;
case SBIG('POFS'):
x24_POFS.read(r);
break;
case SBIG('IVEL'):
x28_IVEL.read(r);
break;
case SBIG('NPOS'):
x2c_NPOS.read(r);
break;
case SBIG('VELM'):
x30_VELM.read(r);
break;
case SBIG('VLM2'):
x34_VLM2.read(r);
break;
case SBIG('SPLN'):
x38_SPLN.read(r);
break;
case SBIG('TEXR'):
x3c_TEXR.read(r);
break;
case SBIG('TSPN'):
x40_TSPN.read(r);
break;
case SBIG('LLRD'):
x44_24_LLRD = r.readBool(nullptr);
break;
case SBIG('CROS'):
x44_25_CROS = r.readBool(nullptr);
break;
case SBIG('VLS1'):
x44_26_VLS1 = r.readBool(nullptr);
break;
case SBIG('VLS2'):
x44_27_VLS2 = r.readBool(nullptr);
break;
case SBIG('SROT'):
x44_28_SROT = r.readBool(nullptr);
break;
case SBIG('WIRE'):
x44_29_WIRE = r.readBool(nullptr);
break;
case SBIG('TEXW'):
x44_30_TEXW = r.readBool(nullptr);
break;
case SBIG('AALP'):
x44_31_AALP = r.readBool(nullptr);
break;
case SBIG('ZBUF'):
x45_24_ZBUF = r.readBool(nullptr);
break;
case SBIG('ORNT'):
x45_25_ORNT = r.readBool(nullptr);
break;
case SBIG('CRND'):
x45_26_CRND = r.readBool(nullptr);
break;
}
}
r.leaveSubRecord();
}
}
@@ -113,107 +113,56 @@ template <class IDType>
void SWSH<IDType>::write(athena::io::YAMLDocWriter& w) const
{
if (x0_PSLT)
{
w.enterSubRecord("PSLT");
x0_PSLT.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("PSLT"))
x0_PSLT.write(w);
if (x4_TIME)
{
w.enterSubRecord("TIME");
x4_TIME.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("TIME"))
x4_TIME.write(w);
if (x8_LRAD)
{
w.enterSubRecord("LRAD");
x8_LRAD.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("LRAD"))
x8_LRAD.write(w);
if (xc_RRAD)
{
w.enterSubRecord("RRAD");
xc_RRAD.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("RRAD"))
xc_RRAD.write(w);
if (x10_LENG)
{
w.enterSubRecord("LENG");
x10_LENG.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("LENG"))
x10_LENG.write(w);
if (x14_COLR)
{
w.enterSubRecord("COLR");
x14_COLR.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("COLR"))
x14_COLR.write(w);
if (x18_SIDE)
{
w.enterSubRecord("SIDE");
x18_SIDE.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("SIDE"))
x18_SIDE.write(w);
if (x1c_IROT)
{
w.enterSubRecord("IROT");
x1c_IROT.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("IROT"))
x1c_IROT.write(w);
if (x20_ROTM)
{
w.enterSubRecord("ROTM");
x20_ROTM.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("ROTM"))
x20_ROTM.write(w);
if (x24_POFS)
{
w.enterSubRecord("POFS");
x24_POFS.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("POFS"))
x24_POFS.write(w);
if (x28_IVEL)
{
w.enterSubRecord("IVEL");
x28_IVEL.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("IVEL"))
x28_IVEL.write(w);
if (x2c_NPOS)
{
w.enterSubRecord("NPOS");
x2c_NPOS.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("NPOS"))
x2c_NPOS.write(w);
if (x30_VELM)
{
w.enterSubRecord("VELM");
x30_VELM.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("VELM"))
x30_VELM.write(w);
if (x34_VLM2)
{
w.enterSubRecord("VLM2");
x34_VLM2.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("VLM2"))
x34_VLM2.write(w);
if (x38_SPLN)
{
w.enterSubRecord("SPLN");
x38_SPLN.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("SPLN"))
x38_SPLN.write(w);
if (x3c_TEXR)
{
w.enterSubRecord("TEXR");
x3c_TEXR.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("TEXR"))
x3c_TEXR.write(w);
if (x40_TSPN)
{
w.enterSubRecord("TSPN");
x40_TSPN.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("TSPN"))
x40_TSPN.write(w);
if (x44_24_LLRD)
w.writeBool("LLRD", true);

View File

@@ -16,115 +16,114 @@ void WPSM<IDType>::read(athena::io::YAMLDocReader& r)
continue;
}
r.enterSubRecord(elem.first.c_str());
switch (*reinterpret_cast<const uint32_t*>(elem.first.data()))
if (auto rec = r.enterSubRecord(elem.first.c_str()))
{
case SBIG('IORN'):
x0_IORN.read(r);
break;
case SBIG('IVEC'):
x4_IVEC.read(r);
break;
case SBIG('PSOV'):
x8_PSOV.read(r);
break;
case SBIG('PSVM'):
xc_PSVM.read(r);
break;
case SBIG('VMD2'):
x10_VMD2.read(r);
break;
case SBIG('PSLT'):
x14_PSLT.read(r);
break;
case SBIG('PSCL'):
x18_PSCL.read(r);
break;
case SBIG('PCOL'):
x1c_PCOL.read(r);
break;
case SBIG('POFS'):
x20_POFS.read(r);
break;
case SBIG('OFST'):
x24_OFST.read(r);
break;
case SBIG('APSO'):
x28_APSO.read(r);
break;
case SBIG('HOMG'):
x29_HOMG.read(r);
break;
case SBIG('AP11'):
x2a_AP11.read(r);
break;
case SBIG('AP21'):
x2b_AP21.read(r);
break;
case SBIG('AS11'):
x2c_AS11.read(r);
break;
case SBIG('AS12'):
x2d_AS12.read(r);
break;
case SBIG('AS13'):
x2e_AS13.read(r);
break;
case SBIG('TRAT'):
x30_TRAT.read(r);
break;
case SBIG('APSM'):
x34_APSM.read(r);
break;
case SBIG('APS2'):
x44_APS2.read(r);
break;
case SBIG('ASW1'):
x54_ASW1.read(r);
break;
case SBIG('ASW2'):
x64_ASW2.read(r);
break;
case SBIG('ASW3'):
x74_ASW3.read(r);
break;
case SBIG('OHEF'):
x84_OHEF.read(r);
break;
case SBIG('COLR'):
x94_COLR.read(r);
break;
case SBIG('EWTR'):
xa4_EWTR.read(r);
break;
case SBIG('LWTR'):
xa5_LWTR.read(r);
break;
case SBIG('SWTR'):
xa6_SWTR.read(r);
break;
case SBIG('PJFX'):
xa8_PJFX = r.readUint32(nullptr);
break;
case SBIG('RNGE'):
xac_RNGE.read(r);
break;
case SBIG('FOFF'):
xb0_FOFF.read(r);
break;
case SBIG('FC60'):
xunk_FC60.read(r);
break;
case SBIG('SPS1'):
xunk_SPS2.read(r);
break;
case SBIG('SPS2'):
xunk_SPS2.read(r);
break;
switch (*reinterpret_cast<const uint32_t*>(elem.first.data()))
{
case SBIG('IORN'):
x0_IORN.read(r);
break;
case SBIG('IVEC'):
x4_IVEC.read(r);
break;
case SBIG('PSOV'):
x8_PSOV.read(r);
break;
case SBIG('PSVM'):
xc_PSVM.read(r);
break;
case SBIG('VMD2'):
x10_VMD2.read(r);
break;
case SBIG('PSLT'):
x14_PSLT.read(r);
break;
case SBIG('PSCL'):
x18_PSCL.read(r);
break;
case SBIG('PCOL'):
x1c_PCOL.read(r);
break;
case SBIG('POFS'):
x20_POFS.read(r);
break;
case SBIG('OFST'):
x24_OFST.read(r);
break;
case SBIG('APSO'):
x28_APSO.read(r);
break;
case SBIG('HOMG'):
x29_HOMG.read(r);
break;
case SBIG('AP11'):
x2a_AP11.read(r);
break;
case SBIG('AP21'):
x2b_AP21.read(r);
break;
case SBIG('AS11'):
x2c_AS11.read(r);
break;
case SBIG('AS12'):
x2d_AS12.read(r);
break;
case SBIG('AS13'):
x2e_AS13.read(r);
break;
case SBIG('TRAT'):
x30_TRAT.read(r);
break;
case SBIG('APSM'):
x34_APSM.read(r);
break;
case SBIG('APS2'):
x44_APS2.read(r);
break;
case SBIG('ASW1'):
x54_ASW1.read(r);
break;
case SBIG('ASW2'):
x64_ASW2.read(r);
break;
case SBIG('ASW3'):
x74_ASW3.read(r);
break;
case SBIG('OHEF'):
x84_OHEF.read(r);
break;
case SBIG('COLR'):
x94_COLR.read(r);
break;
case SBIG('EWTR'):
xa4_EWTR.read(r);
break;
case SBIG('LWTR'):
xa5_LWTR.read(r);
break;
case SBIG('SWTR'):
xa6_SWTR.read(r);
break;
case SBIG('PJFX'):
xa8_PJFX = r.readUint32(nullptr);
break;
case SBIG('RNGE'):
xac_RNGE.read(r);
break;
case SBIG('FOFF'):
xb0_FOFF.read(r);
break;
case SBIG('FC60'):
xunk_FC60.read(r);
break;
case SBIG('SPS1'):
xunk_SPS2.read(r);
break;
case SBIG('SPS2'):
xunk_SPS2.read(r);
break;
}
}
r.leaveSubRecord();
}
}
@@ -132,205 +131,106 @@ template <class IDType>
void WPSM<IDType>::write(athena::io::YAMLDocWriter& w) const
{
if (x0_IORN)
{
w.enterSubRecord("IORN");
x0_IORN.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("IORN"))
x0_IORN.write(w);
if (x4_IVEC)
{
w.enterSubRecord("IVEC");
x4_IVEC.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("IVEC"))
x4_IVEC.write(w);
if (x8_PSOV)
{
w.enterSubRecord("PSOV");
x8_PSOV.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("PSOV"))
x8_PSOV.write(w);
if (xc_PSVM)
{
w.enterSubRecord("PSVM");
xc_PSVM.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("PSVM"))
xc_PSVM.write(w);
if (x10_VMD2)
{
w.enterSubRecord("VMD2");
x10_VMD2.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("VMD2"))
x10_VMD2.write(w);
if (x14_PSLT)
{
w.enterSubRecord("PSLT");
x14_PSLT.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("PSLT"))
x14_PSLT.write(w);
if (x18_PSCL)
{
w.enterSubRecord("PSCL");
x18_PSCL.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("PSCL"))
x18_PSCL.write(w);
if (x1c_PCOL)
{
w.enterSubRecord("PCOL");
x1c_PCOL.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("PCOL"))
x1c_PCOL.write(w);
if (x20_POFS)
{
w.enterSubRecord("POFS");
x20_POFS.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("POFS"))
x20_POFS.write(w);
if (x24_OFST)
{
w.enterSubRecord("OFST");
x24_OFST.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("OFST"))
x24_OFST.write(w);
if (x28_APSO)
{
w.enterSubRecord("APSO");
x28_APSO.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("APSO"))
x28_APSO.write(w);
if (x29_HOMG)
{
w.enterSubRecord("HOMG");
x29_HOMG.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("HOMG"))
x29_HOMG.write(w);
if (x2a_AP11)
{
w.enterSubRecord("AP11");
x2a_AP11.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("AP11"))
x2a_AP11.write(w);
if (x2b_AP21)
{
w.enterSubRecord("AP21");
x2b_AP21.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("AP21"))
x2b_AP21.write(w);
if (x2c_AS11)
{
w.enterSubRecord("AS11");
x2c_AS11.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("AS11"))
x2c_AS11.write(w);
if (x2d_AS12)
{
w.enterSubRecord("AS12");
x2d_AS12.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("AS12"))
x2d_AS12.write(w);
if (x2e_AS13)
{
w.enterSubRecord("AS13");
x2e_AS13.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("AS13"))
x2e_AS13.write(w);
if (x30_TRAT)
{
w.enterSubRecord("TRAT");
x30_TRAT.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("TRAT"))
x30_TRAT.write(w);
if (x34_APSM)
{
w.enterSubRecord("APSM");
x34_APSM.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("APSM"))
x34_APSM.write(w);
if (x44_APS2)
{
w.enterSubRecord("APS2");
x44_APS2.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("APS2"))
x44_APS2.write(w);
if (x54_ASW1)
{
w.enterSubRecord("ASW1");
x54_ASW1.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("ASW1"))
x54_ASW1.write(w);
if (x64_ASW2)
{
w.enterSubRecord("ASW2");
x64_ASW2.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("ASW2"))
x64_ASW2.write(w);
if (x74_ASW3)
{
w.enterSubRecord("ASW3");
x74_ASW3.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("ASW3"))
x74_ASW3.write(w);
if (x84_OHEF)
{
w.enterSubRecord("OHEF");
x84_OHEF.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("OHEF"))
x84_OHEF.write(w);
if (x94_COLR)
{
w.enterSubRecord("COLR");
x94_COLR.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("COLR"))
x94_COLR.write(w);
if (!xa4_EWTR)
{
w.enterSubRecord("EWTR");
xa4_EWTR.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("EWTR"))
xa4_EWTR.write(w);
if (!xa5_LWTR)
{
w.enterSubRecord("LWTR");
xa5_LWTR.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("LWTR"))
xa5_LWTR.write(w);
if (!xa6_SWTR)
{
w.enterSubRecord("SWTR");
xa6_SWTR.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("SWTR"))
xa6_SWTR.write(w);
if (xa8_PJFX != ~0)
w.writeUint32("PJFX", xa8_PJFX);
if (xac_RNGE)
{
w.enterSubRecord("RNGE");
xac_RNGE.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("RNGE"))
xac_RNGE.write(w);
if (xb0_FOFF)
{
w.enterSubRecord("FOFF");
xb0_FOFF.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("FOFF"))
xb0_FOFF.write(w);
if (xunk_FC60)
{
w.enterSubRecord("FC60");
xunk_FC60.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("FC60"))
xunk_FC60.write(w);
if (xunk_SPS1)
{
w.enterSubRecord("SPS1");
xunk_SPS1.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("SPS1"))
xunk_SPS1.write(w);
if (xunk_SPS1)
{
w.enterSubRecord("SPS2");
xunk_SPS2.write(w);
w.leaveSubRecord();
}
if (auto rec = w.enterSubRecord("SPS2"))
xunk_SPS2.write(w);
}
template <class IDType>