private static void Merge(ProtoReader reader, ref ProtoReader.State state, ref protogen.Database obj) { SubItemToken tok; int field; if (obj == null) { obj = new protogen.Database(); } while ((field = reader.ReadFieldHeader(ref state)) != 0) { switch (field) { case 1: do { protogen.Order _1 = default; tok = ProtoReader.StartSubItem(reader, ref state); Merge(reader, ref state, ref _1); ProtoReader.EndSubItem(tok, reader, ref state); obj.Orders.Add(_1); } while (reader.TryReadFieldHeader(ref state, 1)); break; default: reader.AppendExtensionData(ref state, obj); break; } } }
private static ActiveCodeReq Read(ActiveCodeReq acReq, ProtoReader protoReader) { int fieldNum; while ((fieldNum = protoReader.ReadFieldHeader()) > 0) { if (fieldNum != 1) { if (fieldNum != 2) { if (acReq == null) { ActiveCodeReq activeCodeReq = new ActiveCodeReq(); ProtoReader.NoteObject(activeCodeReq, protoReader); acReq = activeCodeReq; } protoReader.AppendExtensionData(acReq); } else { if (acReq == null) { ActiveCodeReq activeCodeReq = new ActiveCodeReq(); ProtoReader.NoteObject(activeCodeReq, protoReader); acReq = activeCodeReq; } string activeCode = protoReader.ReadString(); if (activeCode != null) { acReq.ActiveCode = activeCode; } } } else { if (acReq == null) { ActiveCodeReq activeCodeReq = new ActiveCodeReq(); ProtoReader.NoteObject(activeCodeReq, protoReader); acReq = activeCodeReq; } long accountId = protoReader.ReadInt64(); acReq.AccountId = accountId; } } if (acReq == null) { ActiveCodeReq activeCodeReq = new ActiveCodeReq(); ProtoReader.NoteObject(activeCodeReq, protoReader); acReq = activeCodeReq; } return(acReq); }
private static void Merge(ProtoReader reader, ref ProtoReader.State state, ref protogen.OrderLine obj) { int field; if (obj == null) { obj = new protogen.OrderLine(); } while ((field = reader.ReadFieldHeader(ref state)) != 0) { switch (field) { case 1: obj.OrderID = reader.ReadInt32(ref state); break; case 2: obj.ProductID = reader.ReadInt32(ref state); break; case 3: obj.UnitPrice = reader.ReadDouble(ref state); break; case 4: reader.Hint(WireType.SignedVariant); obj.Quantity = reader.ReadInt32(ref state); break; case 5: obj.Discount = reader.ReadSingle(ref state); break; default: reader.AppendExtensionData(ref state, obj); break; } } }
public object Read(object value, ProtoReader source) { if (isRootType && value != null) { Callback(value, TypeModel.CallbackType.BeforeDeserialize, source.Context); } int fieldNumber, lastFieldNumber = 0, lastFieldIndex = 0; bool fieldHandled; //Helpers.DebugWriteLine(">> Reading fields for " + forType.FullName); while ((fieldNumber = source.ReadFieldHeader()) > 0) { fieldHandled = false; if (fieldNumber < lastFieldNumber) { lastFieldNumber = lastFieldIndex = 0; } for (int i = lastFieldIndex; i < fieldNumbers.Length; i++) { if (fieldNumbers[i] == fieldNumber) { IProtoSerializer ser = serializers[i]; //Helpers.DebugWriteLine(": " + ser.ToString()); Type serType = ser.ExpectedType; if (value == null) { if (serType == forType) { value = CreateInstance(source, true); } } else { if (serType != forType && ((IProtoTypeSerializer)ser).CanCreateInstance() && serType #if WINRT .GetTypeInfo() #endif .IsSubclassOf(value.GetType())) { value = ProtoReader.Merge(source, value, ((IProtoTypeSerializer)ser).CreateInstance(source)); } } if (ser.ReturnsValue) { value = ser.Read(value, source); } else { // pop ser.Read(value, source); } lastFieldIndex = i; lastFieldNumber = fieldNumber; fieldHandled = true; break; } } if (!fieldHandled) { //Helpers.DebugWriteLine(": [" + fieldNumber + "] (unknown)"); if (value == null) { value = CreateInstance(source, true); } if (isExtensible) { source.AppendExtensionData((IExtensible)value); } else { source.SkipField(); } } } //Helpers.DebugWriteLine("<< Reading fields for " + forType.FullName); if (value == null) { value = CreateInstance(source, true); } if (isRootType) { Callback(value, TypeModel.CallbackType.AfterDeserialize, source.Context); } return(value); }
public object Read(object value, ProtoReader source) { if (isRootType && value != null) { Callback(value, TypeModel.CallbackType.BeforeDeserialize, source.Context); } int num = 0; int num2 = 0; int num3; while ((num3 = source.ReadFieldHeader()) > 0) { bool flag = false; if (num3 < num) { num = (num2 = 0); } for (int i = num2; i < fieldNumbers.Length; i++) { if (fieldNumbers[i] != num3) { continue; } IProtoSerializer protoSerializer = serializers[i]; Type expectedType = protoSerializer.ExpectedType; if (value == null) { if (expectedType == forType) { value = CreateInstance(source, includeLocalCallback: true); } } else if (expectedType != forType && ((IProtoTypeSerializer)protoSerializer).CanCreateInstance() && expectedType.IsSubclassOf(value.GetType())) { value = ProtoReader.Merge(source, value, ((IProtoTypeSerializer)protoSerializer).CreateInstance(source)); } if (protoSerializer.ReturnsValue) { value = protoSerializer.Read(value, source); } else { protoSerializer.Read(value, source); } num2 = i; num = num3; flag = true; break; } if (!flag) { if (value == null) { value = CreateInstance(source, includeLocalCallback: true); } if (isExtensible) { source.AppendExtensionData((IExtensible)value); } else { source.SkipField(); } } } if (value == null) { value = CreateInstance(source, includeLocalCallback: true); } if (isRootType) { Callback(value, TypeModel.CallbackType.AfterDeserialize, source.Context); } return(value); }
private static void Merge(ProtoReader reader, ref ProtoReader.State state, ref protogen.Order obj) { SubItemToken tok; int field; if (obj == null) { obj = new protogen.Order(); } while ((field = reader.ReadFieldHeader(ref state)) != 0) { switch (field) { case 1: obj.OrderID = reader.ReadInt32(ref state); break; case 2: obj.CustomerID = reader.ReadString(ref state); break; case 3: obj.EmployeeID = reader.ReadInt32(ref state); break; case 4: obj.OrderDate = BclHelpers.ReadTimestamp(reader, ref state); break; case 5: obj.RequiredDate = BclHelpers.ReadTimestamp(reader, ref state); break; case 6: obj.ShippedDate = BclHelpers.ReadTimestamp(reader, ref state); break; case 7: obj.ShipVia = reader.ReadInt32(ref state); break; case 8: obj.Freight = reader.ReadDouble(ref state); break; case 9: obj.ShipName = reader.ReadString(ref state); break; case 10: obj.ShipAddress = reader.ReadString(ref state); break; case 11: obj.ShipCity = reader.ReadString(ref state); break; case 12: obj.ShipRegion = reader.ReadString(ref state); break; case 13: obj.ShipPostalCode = reader.ReadString(ref state); break; case 14: obj.ShipCountry = reader.ReadString(ref state); break; case 15: do { protogen.OrderLine _15 = default; tok = ProtoReader.StartSubItem(reader, ref state); Merge(reader, ref state, ref _15); ProtoReader.EndSubItem(tok, reader, ref state); obj.Lines.Add(_15); } while (reader.TryReadFieldHeader(ref state, 1)); break; default: reader.AppendExtensionData(ref state, obj); break; } } }
public object Read(object value, ProtoReader source) { if (isRootType && value != null) { Callback(value, TypeModel.CallbackType.BeforeDeserialize, source.Context); } int fieldNumber, lastFieldNumber = 0, lastFieldIndex = 0; bool fieldHandled; //Helpers.DebugWriteLine(">> Reading fields for " + forType.FullName); while ((fieldNumber = source.ReadFieldHeader()) > 0) { fieldHandled = false; if (fieldNumber < lastFieldNumber) { lastFieldNumber = lastFieldIndex = 0; } for (int i = lastFieldIndex; i < fieldNumbers.Length; i++) { if (fieldNumbers[i] == fieldNumber) { IProtoSerializer ser = serializers[i]; //Helpers.DebugWriteLine(": " + ser.ToString()); if (value == null && ser.ExpectedType == forType) value = CreateInstance(source); if (ser.ReturnsValue) { value = ser.Read(value, source); } else { // pop ser.Read(value, source); } lastFieldIndex = i; lastFieldNumber = fieldNumber; fieldHandled = true; break; } } if (!fieldHandled) { //Helpers.DebugWriteLine(": [" + fieldNumber + "] (unknown)"); if (value == null) value = CreateInstance(source); if (isExtensible) { source.AppendExtensionData((IExtensible)value); } else { source.SkipField(); } } } //Helpers.DebugWriteLine("<< Reading fields for " + forType.FullName); if(value == null) value = CreateInstance(source); if (isRootType) { Callback(value, TypeModel.CallbackType.AfterDeserialize, source.Context); } return value; }
public object Read(object value, ProtoReader source) { int num; if (this.isRootType && (value != null)) { this.Callback(value, TypeModel.CallbackType.BeforeDeserialize, source.Context); } int num2 = 0; int num3 = 0; while ((num = source.ReadFieldHeader()) > 0) { bool flag = false; if (num < num2) { num2 = num3 = 0; } for (int i = num3; i < this.fieldNumbers.Length; i++) { if (this.fieldNumbers[i] == num) { IProtoSerializer serializer = this.serializers[i]; Type expectedType = serializer.ExpectedType; if (value == null) { if (expectedType == this.forType) { value = this.CreateInstance(source, true); } } else if (((expectedType != this.forType) && ((IProtoTypeSerializer)serializer).CanCreateInstance()) && expectedType.IsSubclassOf(value.GetType())) { value = ProtoReader.Merge(source, value, ((IProtoTypeSerializer)serializer).CreateInstance(source)); } if (serializer.ReturnsValue) { value = serializer.Read(value, source); } else { serializer.Read(value, source); } num3 = i; num2 = num; flag = true; break; } } if (!flag) { if (value == null) { value = this.CreateInstance(source, true); } if (this.isExtensible) { source.AppendExtensionData((IExtensible)value); continue; } source.SkipField(); } } if (value == null) { value = this.CreateInstance(source, true); } if (this.isRootType) { this.Callback(value, TypeModel.CallbackType.AfterDeserialize, source.Context); } return(value); }
public object Read(object value, ProtoReader source) { var token = ProtoReader.StartSubItem(source); if (_isRootType && value != null) { Callback(value, TypeModel.CallbackType.BeforeDeserialize, source.Context); } int fieldNumber, lastFieldNumber = 0, lastFieldIndex = 0; //Helpers.DebugWriteLine(">> Reading fields for " + forType.FullName); while ((fieldNumber = source.ReadFieldHeader()) > 0) { bool fieldHandled = false; if (fieldNumber < lastFieldNumber) { lastFieldNumber = lastFieldIndex = 0; } for (int i = lastFieldIndex; i < _fieldNumbers.Length; i++) { if (_fieldNumbers[i] == fieldNumber) { IProtoSerializer ser = _serializers[i]; //Helpers.DebugWriteLine(": " + ser.ToString()); Type serType = ser.ExpectedType; if (value == null || !Helpers.IsInstanceOfType(ExpectedType, value)) { if (serType == ExpectedType && CanCreateInstance) { value = CreateInstance(source, true); } } value = ser.Read(value, source); lastFieldIndex = i; lastFieldNumber = fieldNumber; fieldHandled = true; break; } } if (!fieldHandled) { //Helpers.DebugWriteLine(": [" + fieldNumber + "] (unknown)"); if (value == null) { value = CreateInstance(source, true); } if (_isExtensible) { source.AppendExtensionData((IExtensible)value); } else { source.SkipField(); } } } //Helpers.DebugWriteLine("<< Reading fields for " + forType.FullName); if (value == null) { value = CreateInstance(source, true); } if (_isRootType) { Callback(value, TypeModel.CallbackType.AfterDeserialize, source.Context); } ProtoReader.EndSubItem(token, source); return(value); }
public object Read(object value, ProtoReader source) { if (this.isRootType && value != null) { this.Callback(value, TypeModel.CallbackType.BeforeDeserialize, source.Context); } int num = 0; int num1 = 0; while (true) { int num2 = source.ReadFieldHeader(); int num3 = num2; if (num2 <= 0) { break; } bool flag = false; if (num3 < num) { int num4 = 0; num1 = num4; num = num4; } int num5 = num1; while (num5 < (int)this.fieldNumbers.Length) { if (this.fieldNumbers[num5] != num3) { num5++; } else { IProtoSerializer protoSerializer = this.serializers[num5]; Type expectedType = protoSerializer.ExpectedType; if (value == null) { if (expectedType == this.forType) { value = this.CreateInstance(source, true); } } else if (expectedType != this.forType && ((IProtoTypeSerializer)protoSerializer).CanCreateInstance() && expectedType.IsSubclassOf(value.GetType())) { value = ProtoReader.Merge(source, value, ((IProtoTypeSerializer)protoSerializer).CreateInstance(source)); } if (!protoSerializer.ReturnsValue) { protoSerializer.Read(value, source); } else { value = protoSerializer.Read(value, source); } num1 = num5; num = num3; flag = true; break; } } if (!flag) { if (value == null) { value = this.CreateInstance(source, true); } if (!this.isExtensible) { source.SkipField(); } else { source.AppendExtensionData((IExtensible)value); } } } if (value == null) { value = this.CreateInstance(source, true); } if (this.isRootType) { this.Callback(value, TypeModel.CallbackType.AfterDeserialize, source.Context); } return(value); }
public object Read(object value, ProtoReader source) { if (this.isRootType && value != null) { this.Callback(value, TypeModel.CallbackType.BeforeDeserialize, source.Context); } int num = 0; int num2 = 0; int num3; while ((num3 = source.ReadFieldHeader()) > 0) { bool flag = false; if (num3 < num) { num2 = (num = 0); } for (int i = num2; i < this.fieldNumbers.Length; i++) { if (this.fieldNumbers[i] == num3) { IProtoSerializer protoSerializer = this.serializers[i]; Type expectedType = protoSerializer.ExpectedType; if (value == null) { if (expectedType == this.forType) { value = this.CreateInstance(source, true); } } else if (expectedType != this.forType && ((IProtoTypeSerializer)protoSerializer).CanCreateInstance() && expectedType.IsSubclassOf(value.GetType())) { value = ProtoReader.Merge(source, value, ((IProtoTypeSerializer)protoSerializer).CreateInstance(source)); } if (protoSerializer.ReturnsValue) { value = protoSerializer.Read(value, source); } else { protoSerializer.Read(value, source); } num2 = i; num = num3; flag = true; break; } } if (!flag) { if (value == null) { value = this.CreateInstance(source, true); } if (this.isExtensible) { source.AppendExtensionData((IExtensible)value); } else { source.SkipField(); } } } if (value == null) { value = this.CreateInstance(source, true); } if (this.isRootType) { this.Callback(value, TypeModel.CallbackType.AfterDeserialize, source.Context); } return value; }