public override bool CanWrite(DateTimeOffset value, PropertyMap propMap = null) { switch (_type) { case EpochType.UnixNanos: return(_innerConverter.CanWrite(value.Ticks * 100, propMap)); case EpochType.UnixMillis: return(_innerConverter.CanWrite(value.Ticks / TimeSpan.TicksPerMillisecond, propMap)); case EpochType.UnixSeconds: return(_innerConverter.CanWrite(value.Ticks / TimeSpan.TicksPerSecond, propMap)); } return(false); }
public override bool TryWrite(ref ResizableMemory <byte> writer, T[] value, PropertyMap propMap = null) { if (value == null) { return(EtfWriter.TryWriteNull(ref writer)); } var start = writer.Length; writer.Push((byte)EtfTokenType.List); writer.Advance(4); uint count = 0; for (int i = 0; i < value.Length; i++) { if (!_innerConverter.CanWrite(value[i], propMap)) { continue; } if (!_innerConverter.TryWrite(ref writer, value[i], propMap)) { return(false); } count++; } writer.Array[start + 1] = (byte)(count >> 24); writer.Array[start + 2] = (byte)(count >> 16); writer.Array[start + 3] = (byte)(count >> 8); writer.Array[start + 4] = (byte)count; writer.Push((byte)EtfTokenType.Nil); // Tail return(true); }
public override bool CanWrite(TBase baseValue, PropertyMap propMap = null) { //if (!(baseValue is TValue value)) // return true; var value = (TValue)baseValue; return(_innerConverter.CanWrite(value, propMap)); }
public override bool TryWrite(ref ResizableMemory <byte> writer, Dictionary <string, T> value, PropertyMap propMap = null) { if (value == null) { return(EtfWriter.TryWriteNull(ref writer)); } var start = writer.Length; writer.Push((byte)EtfTokenType.Map); writer.Advance(4); uint count = 0; foreach (var pair in value) { if (!_innerConverter.CanWrite(pair.Value, propMap)) { continue; } if (!EtfWriter.TryWriteUtf16Key(ref writer, pair.Key)) { return(false); } if (!_innerConverter.TryWrite(ref writer, pair.Value, propMap)) { return(false); } count++; } writer.Array[start + 1] = (byte)(count >> 24); writer.Array[start + 2] = (byte)(count >> 16); writer.Array[start + 3] = (byte)(count >> 8); writer.Array[start + 4] = (byte)count; return(true); }
public override bool CanWrite(T?value, PropertyMap propMap = null) => propMap == null || (!propMap.ExcludeNull || value != null) && (!value.HasValue || _innerConverter.CanWrite(value.Value, propMap));
public override bool CanWrite(Optional <T> value, PropertyMap propMap = null) => value.IsSpecified && _innerConverter.CanWrite(value.Value, propMap);