diff options
Diffstat (limited to 'source/slang/slang-serialize-ir.cpp')
| -rw-r--r-- | source/slang/slang-serialize-ir.cpp | 42 |
1 files changed, 16 insertions, 26 deletions
diff --git a/source/slang/slang-serialize-ir.cpp b/source/slang/slang-serialize-ir.cpp index bdea2faaa..f03f46da8 100644 --- a/source/slang/slang-serialize-ir.cpp +++ b/source/slang/slang-serialize-ir.cpp @@ -334,51 +334,43 @@ Result IRSerialWriter::write( Result _writeInstArrayChunk( FourCC chunkId, const List<IRSerialData::Inst>& array, - RiffContainer* container) + RIFF::BuildCursor& cursor) { - typedef RiffContainer::Chunk Chunk; - typedef RiffContainer::ScopeChunk ScopeChunk; - if (array.getCount() == 0) { return SLANG_OK; } - return SerialRiffUtil::writeArrayChunk(chunkId, array, container); + return SerialRiffUtil::writeArrayChunk(chunkId, array, cursor); } -/* static */ Result IRSerialWriter::writeContainer( - const IRSerialData& data, - RiffContainer* container) +/* static */ Result IRSerialWriter::writeTo(const IRSerialData& data, RIFF::BuildCursor& cursor) { - typedef RiffContainer::Chunk Chunk; - typedef RiffContainer::ScopeChunk ScopeChunk; - - ScopeChunk scopeModule(container, Chunk::Kind::List, Bin::kIRModuleFourCc); + SLANG_SCOPED_RIFF_BUILDER_LIST_CHUNK(cursor, Bin::kIRModuleFourCc); - SLANG_RETURN_ON_FAIL(_writeInstArrayChunk(Bin::kInstFourCc, data.m_insts, container)); + SLANG_RETURN_ON_FAIL(_writeInstArrayChunk(Bin::kInstFourCc, data.m_insts, cursor)); SLANG_RETURN_ON_FAIL( - SerialRiffUtil::writeArrayChunk(Bin::kChildRunFourCc, data.m_childRuns, container)); + SerialRiffUtil::writeArrayChunk(Bin::kChildRunFourCc, data.m_childRuns, cursor)); SLANG_RETURN_ON_FAIL(SerialRiffUtil::writeArrayChunk( Bin::kExternalOperandsFourCc, data.m_externalOperands, - container)); + cursor)); SLANG_RETURN_ON_FAIL(SerialRiffUtil::writeArrayChunk( SerialBinary::kStringTableFourCc, data.m_stringTable, - container)); + cursor)); SLANG_RETURN_ON_FAIL(SerialRiffUtil::writeArrayChunk( Bin::kUInt32RawSourceLocFourCc, data.m_rawSourceLocs, - container)); + cursor)); if (data.m_debugSourceLocRuns.getCount()) { SerialRiffUtil::writeArrayChunk( Bin::kDebugSourceLocRunFourCc, data.m_debugSourceLocRuns, - container); + cursor); } return SLANG_OK; @@ -417,31 +409,29 @@ Result _writeInstArrayChunk( // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! IRSerialReader !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -static Result _readInstArrayChunk( - RiffContainer::DataChunk* chunk, - List<IRSerialData::Inst>& arrayOut) +static Result _readInstArrayChunk(RIFF::DataChunk const* chunk, List<IRSerialData::Inst>& arrayOut) { SerialRiffUtil::ListResizerForType<IRSerialData::Inst> resizer(arrayOut); return SerialRiffUtil::readArrayChunk(chunk, resizer); } -/* static */ Result IRSerialReader::readContainer( - RiffContainer::ListChunk* module, +/* static */ Result IRSerialReader::readFrom( + IRModuleChunk const* irModuleChunk, IRSerialData* outData) { typedef IRSerialBinary Bin; outData->clear(); - for (RiffContainer::Chunk* chunk = module->m_containedChunks; chunk; chunk = chunk->m_next) + for (auto chunk : irModuleChunk->getChildren()) { - RiffContainer::DataChunk* dataChunk = as<RiffContainer::DataChunk>(chunk); + auto dataChunk = as<RIFF::DataChunk>(chunk); if (!dataChunk) { continue; } - switch (dataChunk->m_fourCC) + switch (dataChunk->getType()) { case Bin::kInstFourCc: { |
