public void Serialize(object obj, BinaryDataWriter writer, IBaseline baseline) { for (int i = 0; i < _items.Count && i < byte.MaxValue; i++) { _items[i].Serialize(obj, writer, baseline); } }
public void Serialize(object obj, BinaryDataWriter writer, IBaseline <TKey> baseline) { IBinaryObjectCollection <TKey> collections = (IBinaryObjectCollection <TKey>)obj; List <TKey> baseKeys = new List <TKey>(baseline.BaselineKeys); foreach (TKey key in collections.Keys) { BinaryDataWriter itemWriter = writer.TryWriteNode(_keySize); Baseline <byte> itemBaseline = baseline.GetOrCreateBaseline <Baseline <byte> >(key, _itemSerializer.Count, out bool isNew); _itemSerializer.Serialize(collections[key], itemWriter, itemBaseline); if (itemWriter.Length > 0 || isNew) { _writer.Write(writer, key); itemWriter.PushNode(); } baseKeys.Remove(key); } if (baseKeys.Count <= 0) { return; } _writer.Write(writer, _reservedKey); foreach (TKey key in baseKeys) { _writer.Write(writer, key); baseline.DestroyBaseline(key); } }
public void Serialize(object obj, BinaryDataWriter writer, IBaseline <byte> baseline) { Property <T> property = _getter(obj); if (baseline[_index] == property.Version) { return; } baseline[_index] = property.Version; writer.WriteByte(_index); _writer.Write(writer, property.Value); }
public void Serialize(object obj, BinaryDataWriter writer, IBaseline <byte> baseline) { T value = _getter(obj); int hash = _writer.GetHashCode(value); int baseHash = baseline[_index]; if (baseHash == 0 && Equals(value, default) || baseHash == hash) { return; } baseline[_index] = hash; writer.WriteByte(_index); _writer.Write(writer, value); }
public void Serialize(object obj, BinaryDataWriter writer, IBaseline <TKey> baseline) { BinaryDataWriter childWriter = writer.TryWriteNode(sizeof(byte)); Baseline <TChildKey> itemBaseline = baseline.GetOrCreateBaseline <Baseline <TChildKey> >(_index, _valuesCount, out bool isNew); _serializer.Serialize(_getter(obj), childWriter, itemBaseline); if (childWriter.Length <= 0 && !isNew) { return; } WriteKey(_index, writer); childWriter.PushNode(); }
public override void Serialize(object obj, BinaryDataWriter writer, IBaseline <byte> baseline) { int value = (int)Getter(obj); int baseHash = baseline[Index]; if (baseHash == 0 && value == default || baseHash == value) { return; } baseline[Index] = value; writer.WriteByte(Index); writer.WriteInt(value); }
void IBinarySerializer.Serialize(object obj, BinaryDataWriter writer, IBaseline baseline) { Serialize(obj, writer, (IBaseline <TKey>)baseline); }
public OtherClass(IBaseline instance) { GenericInstance = instance; }
public abstract void Serialize(object obj, BinaryDataWriter writer, IBaseline <byte> baseline);