deserializeStruct function

Object? deserializeStruct(
  1. Type self,
  2. SerialBuffer buffer, {
  3. SerializerState? state,
  4. bool? allowExtensions = true,
})

Implementation

Object? deserializeStruct(Type self, SerialBuffer buffer,
    {SerializerState? state, bool? allowExtensions = true}) {
  state ??= SerializerState();
  try {
    dynamic result;
    if (self.base != null) {
      result = self.base!.deserialize!(self.base, buffer, state: state, allowExtensions: allowExtensions);
    } else {
      result = {};
    }
    for (final field in self.fields!) {
      if ((allowExtensions ?? false) && field.type!.extensionOf != null && !buffer.haveReadData()) {
        state.skippedBinaryExtension = true;
      } else {
        result[field.name] =
            field.type!.deserialize!(field.type, buffer, state: state, allowExtensions: allowExtensions);
      }
    }
    return result;
  } catch (e) {
    rethrow;
  }
}