Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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);
        }
Esempio n. 4
0
 public static Boolean                                ReadBoolean(ReadingStreamer streamer)
 {
     return(streamer.ReadBool());
 }