public override global::MyFlatBuffers.Data?Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { byteSize = 2; var hasValue = BinaryUtil.ReadBoolean(ref bytes, offset); if (!hasValue) { return(null); } return((global::MyFlatBuffers.Data)BinaryUtil.ReadByte(ref bytes, offset + 1)); }
public Memory <TKey, TElement> ToMemory <TKey, TElement>(DirtyTracker tracker, Func <TElement, TKey> indexSelector) { return(new Memory <TKey, TElement>(buffer.Array, buffer.Offset, tracker, indexSelector)); }
public void ObjectFormatter() { var tracker = new DirtyTracker(0); var mc = new MyClass { Age = 999, FirstName = "hoge", LastName = "hugahgua", MyList = new List <int> { 1, 10, 100, 1000 } }; Formatter <MyClass> .Register(new MyClassFormatter()); byte[] bytes = null; int size; Formatter <MyClass> .Default.Serialize(ref bytes, 0, mc); var mc2 = Formatter <MyClass> .Default.Deserialize(ref bytes, 0, tracker, out size); var getAge = mc2.Age; mc2.Age.Is(mc.Age); mc2.FirstName.Is(mc.FirstName); mc2.LastName.Is(mc.LastName); bytes = null; Formatter <MyClass> .Default.Serialize(ref bytes, 0, mc2); var mc3 = Formatter <MyClass> .Default.Deserialize(ref bytes, 0, tracker, out size); mc3.Age.Is(mc.Age); mc3.FirstName.Is(mc.FirstName); mc3.LastName.Is(mc.LastName); mc3.Age = 99999; mc3.FirstName = "aiueokakikukekosasisuseso"; bytes = null; Formatter <MyClass> .Default.Serialize(ref bytes, 0, mc3); var mc4 = Formatter <MyClass> .Default.Deserialize(ref bytes, 0, tracker, out size); mc4.Age.Is(99999); mc4.FirstName.Is("aiueokakikukekosasisuseso"); mc4.LastName.Is("hugahgua"); mc4.LastName = null; bytes = null; Formatter <MyClass> .Default.Serialize(ref bytes, 0, mc4); var mc5 = Formatter <MyClass> .Default.Deserialize(ref bytes, 0, tracker, out size); mc5.Age.Is(99999); mc5.FirstName.Is("aiueokakikukekosasisuseso"); mc5.LastName.IsNull(); }
public override DictionaryEntry <TKey, TValue> Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { return(DictionaryEntry.Create <TKey, TValue>(bytes, offset, tracker, out byteSize)); }
public override T Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { throw exception; }
public override Decimal Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { byteSize = 16; return(BinaryUtil.ReadDecimal(ref bytes, offset)); }
public override T Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { byteSize = 1; return(deserializeCast(BinaryUtil.ReadSByte(ref bytes, offset))); }
public override global::MyFlatBuffers.Data Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { byteSize = 1; return((global::MyFlatBuffers.Data)BinaryUtil.ReadByte(ref bytes, offset)); }
public override FSharpOption <T> Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { return(OptionModule.OfObj(innerFormatter.Deserialize(ref bytes, offset, tracker, out byteSize))); }
public override global::MonsterDataBase.VersionType Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { byteSize = 4; return((global::MonsterDataBase.VersionType)BinaryUtil.ReadInt32(ref bytes, offset)); }
public override global::MonsterDataBase.VersionType?Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { byteSize = 5; var hasValue = BinaryUtil.ReadBoolean(ref bytes, offset); if (!hasValue) { return(null); } return((global::MonsterDataBase.VersionType)BinaryUtil.ReadInt32(ref bytes, offset + 1)); }
public override global::Test3.SettingData Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { byteSize = 1; if (!BinaryUtil.ReadBoolean(ref bytes, offset)) { return(null); } offset += 1; int size; var unionKey = Formatter <global::Test3.FileVersion> .Default.Deserialize(ref bytes, offset, tracker, out size); byteSize += size; offset += size; global::Test3.SettingData result; if (comparer.Equals(unionKey, unionKeys[0])) { result = Formatter <global::Test3.SettingDataVer1> .Default.Deserialize(ref bytes, offset, tracker, out size); } else if (comparer.Equals(unionKey, unionKeys[1])) { result = Formatter <global::Test3.SettingDataVer2> .Default.Deserialize(ref bytes, offset, tracker, out size); } else { throw new Exception("Unknown unionKey type of Union: " + unionKey.ToString()); } byteSize += size; return(result); }
public override global::Test3.SettingDataVer2 Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { byteSize = BinaryUtil.ReadInt32(ref bytes, offset); if (byteSize == -1) { byteSize = 4; return(null); } return(new SettingDataVer2ObjectSegment(tracker, new ArraySegment <byte>(bytes, offset, byteSize))); }
public override global::Test3.LanguageType Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { byteSize = 4; return((global::Test3.LanguageType)BinaryUtil.ReadInt32(ref bytes, offset)); }
public override Single Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { byteSize = 4; return(BinaryUtil.ReadSingle(ref bytes, offset)); }
public override KeyValuePair <TKey, TValue> Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { int size; byteSize = 0; var key = Formatter <TTypeResolver, TKey> .Default.Deserialize(ref bytes, offset, tracker, out size); offset += size; byteSize += size; var value = Formatter <TTypeResolver, TValue> .Default.Deserialize(ref bytes, offset, tracker, out size); offset += size; byteSize += size; return(new KeyValuePair <TKey, TValue>(key, value)); }
public override Char Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { byteSize = 2; return(BinaryUtil.ReadChar(ref bytes, offset)); }
public override ILookup <TKey, TElement> Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { // tracker.Dirty(); // ilookup is immutable var length = BinaryUtil.ReadInt32(ref bytes, offset); if (length == -1) { byteSize = 4; return(null); } BinaryUtil.ValidateNewSize(length); // size is not strict(Marshal.SizeOf<T>()) but okay to use. var startOffset = offset; offset += 4; var lastOffset = offset; var lookup = DeserializeSequence(bytes, offset, tracker, length).ToLookup(x => x.Item1, x => { lastOffset = x.Item3; // capture in lambda is overhead but lookup can only create from ToLookup return(x.Item2); }); byteSize = lastOffset - startOffset; return(lookup); }
public override TimeSpan Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { byteSize = 12; return(BinaryUtil.ReadTimeSpan(ref bytes, offset)); }
IEnumerable <KeyTuple <TKey, TElement, int> > DeserializeSequence(byte[] bytes, int offset, DirtyTracker tracker, int length) { int size; for (int i = 0; i < length; i++) { var key = keyFormatter.Deserialize(ref bytes, offset, tracker, out size); offset += size; // no use valuesFormatter(avoid intermediate array allocate) var valuesLength = BinaryUtil.ReadInt32(ref bytes, offset); offset += 4; for (int j = 0; j < valuesLength; j++) { var value = valueFormatter.Deserialize(ref bytes, offset, tracker, out size); offset += size; yield return(new KeyTuple <TKey, TElement, int>(key, value, offset)); } } }
public override ReplayDataV1 Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { Encoding enc = Encoding.GetEncoding("UTF-8"); ReplayDataV1 value = new ReplayDataV1(); value.Version = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; value.Id = Formatter <TTypeResolver, string> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4 + enc.GetByteCount(value.Id); value.PlayDateTime = Formatter <TTypeResolver, long> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 8; value.ScoreKindValue = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; value.Seed = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; value.FrameCount = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; value.InputCount = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; value.InputFrame = Formatter <TTypeResolver, int[]> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; if (value.InputFrame != null) { offset += value.InputFrame.Length * 4; } value.InputType = Formatter <TTypeResolver, byte[]> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; if (value.InputType != null) { offset += value.InputType.Length; } value.InputData1 = Formatter <TTypeResolver, byte[]> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; if (value.InputData1 != null) { offset += value.InputData1.Length; } value.InputData2 = Formatter <TTypeResolver, byte[]> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; if (value.InputData2 != null) { offset += value.InputData2.Length; } value.Row = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; value.Col = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; value.Color = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; value.Link = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; value.Direction = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; value.Time = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; value.Stop = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; value.CountDisp = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; value.Garbage = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; value.Name = Formatter <TTypeResolver, string> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4 + enc.GetByteCount(value.Name); value.ScoreCategoryValue = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; value.Reserved22 = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; value.Reserved23 = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; value.Reserved24 = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; value.Reserved25 = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; value.Reserved26 = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; value.Reserved27 = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; value.Reserved28 = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; value.Reserved29 = Formatter <TTypeResolver, int> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); offset += 4; return(value); }
public override IReadOnlyCollection <T> Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { // tracker.Dirty(); // immutable var length = BinaryUtil.ReadInt32(ref bytes, offset); if (length == -1) { byteSize = 4; return(null); } BinaryUtil.ValidateNewSize(length); // size is not strict(Marshal.SizeOf<T>()) but okay to use. var startOffset = offset; offset += 4; int size; var result = new T[length]; for (int i = 0; i < length; i++) { result[i] = formatter.Deserialize(ref bytes, offset, tracker, out size); offset += size; } byteSize = offset - startOffset; return(result); }
public override ILazyReadOnlyDictionary <TKey, TValue> Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { return(DictionarySegment <TKey, TValue> .Create(tracker, bytes, offset, out byteSize)); }
public override IReadOnlyDictionary <TKey, TValue> Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { // tracker.Dirty(); // immutable var length = BinaryUtil.ReadInt32(ref bytes, offset); if (length == -1) { byteSize = 4; return(null); } BinaryUtil.ValidateNewSize(length); // size is not strict(Marshal.SizeOf<T>()) but okay to use. var startOffset = offset; offset += 4; int size; var comparer = ZeroFormatterEqualityComparer <TKey> .NondeterministicSafeFallbacked; var result = new Dictionary <TKey, TValue>(length, comparer); for (int i = 0; i < length; i++) { var kvp = formatter.Deserialize(ref bytes, offset, tracker, out size); result.Add(kvp.Key, kvp.Value); offset += size; } byteSize = offset - startOffset; return(result); }
public abstract T Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize);
public T DeserializePrimitive <T>(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { T item = Formatter <DefaultResolver, T> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); return(item); }
private void InitDirtyTracker() { dirtyTracker = new DirtyTracker(audioHkDataGrid, controlHkDataGrid, fadingDataGrid); }
public override UInt64 Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { byteSize = 8; return(BinaryUtil.ReadUInt64(ref bytes, offset)); }
public override GroupingSegment <TTypeResolver, TKey, TValue> Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { return(GroupingSegment <TTypeResolver, TKey, TValue> .Create(tracker, bytes, offset, out byteSize)); }
public override Uri Deserialize(ref byte[] bytes, int offset, DirtyTracker tracker, out int byteSize) { var uriString = Formatter <string> .Default.Deserialize(ref bytes, offset, tracker, out byteSize); return((uriString == null) ? null : new Uri(uriString)); }