diff --git a/source/adios2/toolkit/format/bp/BPSerializer.tcc b/source/adios2/toolkit/format/bp/BPSerializer.tcc index 9a33cfbea9..9f5f7f6739 100644 --- a/source/adios2/toolkit/format/bp/BPSerializer.tcc +++ b/source/adios2/toolkit/format/bp/BPSerializer.tcc @@ -210,7 +210,30 @@ void BPSerializer::UpdateIndexOffsetsCharacteristics(size_t ¤tPosition, 3 * sizeof(uint64_t) * dimensionsSize + 2; // 2 is for length break; } - // TODO: implement operators + case (characteristic_transform_type): + { + const size_t typeLength = + static_cast(helper::ReadValue( + buffer, currentPosition, isLittleEndian)); + // skip over operator name (transform type) string + currentPosition += typeLength; + + // skip over pre-data type (1) and dimensionsSize (1) + currentPosition += 2; + + const uint16_t dimensionsLength = helper::ReadValue( + buffer, currentPosition, isLittleEndian); + // skip over dimensions + currentPosition += dimensionsLength; + + const size_t metadataLength = + static_cast(helper::ReadValue( + buffer, currentPosition, isLittleEndian)); + // skip over operator metadata + currentPosition += metadataLength; + + break; + } default: { throw std::invalid_argument(