public static object ConsumeUnmatched(TypedDoc doc, ReadingStreamer streamer, string name, DataType dt, DataType?atp) { object value = null; if (dt != DataType.Null) { if (dt == DataType.Array && !atp.HasValue) { atp = Reader.ReadDataType(streamer); } if (atp.HasValue) { var len = ReadArrayLength(streamer); var arr = new object[len]; for (var i = 0; i < arr.Length; i++) { if (atp.Value == DataType.Doc) { var has = streamer.ReadBool(); if (!has) { continue; } } arr[i] = readOneAsObject(streamer, atp.Value); } value = arr; } else { value = readOneAsObject(streamer, dt); } } var arow = doc as IAmorphousData; if (arow == null) { return(value); } if (!arow.AmorphousDataEnabled) { return(value); } arow.AmorphousData[name] = value; return(value); }
public static TDoc[] ReadRowArray <TDoc>(TypedDoc docScope, ReadingStreamer streamer, string name) where TDoc : TypedDoc, new() { var len = Reader.ReadArrayLength(streamer); var arr = new TDoc[len]; for (var i = 0; i < len; i++) { var has = streamer.ReadBool(); if (!has) { continue; } var vrow = new TDoc(); if (Reader.TryReadRow(docScope, vrow, streamer, name + '_' + i.ToString())) { arr[i] = vrow; } } return(arr); }
public static List <TDoc> ReadRowList <TDoc>(TypedDoc docScope, ReadingStreamer streamer, string name) where TDoc : TypedDoc, new() { var len = Reader.ReadArrayLength(streamer); var lst = new List <TDoc>(len); for (var i = 0; i < len; i++) { var has = streamer.ReadBool(); if (!has) { lst.Add(null); continue; } var vrow = new TDoc(); if (Reader.TryReadRow(docScope, vrow, streamer, name + '_' + i.ToString())) { lst.Add(vrow); } } return(lst); }
public static Boolean ReadBoolean(ReadingStreamer streamer) { return(streamer.ReadBool()); }