Example #1
0
        public static int DecodePackedSInt64Delta(byte[] buf, int ofs, out MemArray <long> val)
        {
            int   len = 0;
            ulong dataLen;

            len += ReadVarInt(buf, ofs + len, out dataLen);
            int endLen = len + (int)dataLen;

            var result = new MemArray <long>((int)dataLen);

            ulong tmp;

            len      += ReadVarInt(buf, ofs + len, out tmp);
            result[0] = SignedInt64(tmp);

            int resultLen;

            for (resultLen = 1; resultLen < result.Length && len < endLen; resultLen++)
            {
                len += ReadVarInt(buf, ofs + len, out tmp);
                result[resultLen] = SignedInt64(tmp) + result[resultLen - 1];
            }

            result.Resize(resultLen);
            val = result;

            if (len != endLen)
            {
                throw new PbfParseException();
            }

            return(len);
        }
Example #2
0
        public static int DecodePackedSInt64Delta(byte[] buf, int ofs, out MemArray <long> val, int itemCount)
        {
            int   len = 0;
            ulong dataLen;

            len += ReadVarInt(buf, ofs + len, out dataLen);
            int endLen = len + (int)dataLen;

            var result = new MemArray <long>(itemCount);
            var rs     = result.RawData;

            ulong tmp;

            len  += ReadVarInt(buf, ofs + len, out tmp);
            rs[0] = SignedInt64(tmp);

            for (int i = 1; len < endLen && i < rs.Length; i++)
            {
                len  += ReadVarInt(buf, ofs + len, out tmp);
                rs[i] = SignedInt64(tmp) + rs[i - 1];
            }

            val = result;

            if (len != endLen)
            {
                throw new PbfParseException();
            }

            return(len);
        }
Example #3
0
        static void MemTest()
        {
            var tim = Stopwatch.StartNew();

            for (int i = 0; i < 10000; i++)
            {
                //var mem = new OsmNode[1000000];
                var mem = new MemArray <OsmNode>(1000000);
                mem[mem.Length / 2] = new OsmNode(1, 2, 3, null);
                mem[mem.Length - 1] = new OsmNode(2, 3, 4, null);
                mem.Dispose();
            }
            tim.Stop();
            Console.WriteLine("{0:N0} ms", tim.ElapsedMilliseconds);
        }