Ejemplo n.º 1
0
        private T read_element <T>(SprotoTypeReader reader, UInt32 sz, out UInt32 read_size) where T : SprotoTypeBase, new()
        {
            read_size = 0;
            if (sz < SprotoTypeSize.sizeof_length)
            {
                SprotoTypeSize.error("error array size.");
            }

            UInt32 hsz = this.read_dword();

            sz        -= (UInt32)SprotoTypeSize.sizeof_length;
            read_size += (UInt32)SprotoTypeSize.sizeof_length;

            if (hsz > sz)
            {
                SprotoTypeSize.error("error array object.");
            }

            reader.Init(this.reader.Buffer, this.reader.Offset, (int)hsz);
            this.reader.Seek(this.reader.Position + (int)hsz);

            T obj = new T();

            obj.init(reader);

            read_size += hsz;
            return(obj);
        }
Ejemplo n.º 2
0
		public long init (SprotoTypeReader reader) {
			this.clear ();
			this.deserialize.init (reader);
			this.decode ();

			return this.deserialize.size ();
		}
        public List <T> read_obj_list <T>() where T : SprotoTypeBase, new()
        {
            UInt32 sz = this.read_array_size();

            List <T> obj_list = new List <T> ();

            for (UInt32 i = 0; sz > 0; i++)
            {
                if (sz < SprotoTypeSize.sizeof_length)
                {
                    SprotoTypeSize.error("error array size.");
                }

                UInt32 hsz = this.read_dword();
                sz -= (UInt32)SprotoTypeSize.sizeof_length;

                if (hsz > sz)
                {
                    SprotoTypeSize.error("error array object.");
                }

                SprotoTypeReader reader = new SprotoTypeReader(this.reader.Buffer, this.reader.Offset, hsz);
                this.reader.Seek(this.reader.Position + hsz);

                T obj = new T();
                obj.init(reader);
                obj_list.Add(obj);

                sz -= hsz;
            }

            return(obj_list);
        }
Ejemplo n.º 4
0
        public long init(SprotoTypeReader reader)
        {
            this.clear();
            this.deserialize.init(reader);
            this.decode();

            return(this.deserialize.size());
        }
Ejemplo n.º 5
0
 public void init(byte[] data, int offset = 0, int size = 0)
 {
     this.clear();
     if (size <= 0)
     {
         size = data.Length;
     }
     this.reader = new SprotoTypeReader(data, offset, size);
     this.init();
 }
Ejemplo n.º 6
0
        public T read_obj <T>() where T : SprotoTypeBase, new()
        {
            int sz = (int)this.read_dword();

            SprotoTypeReader reader = new SprotoTypeReader(this.reader.Buffer, this.reader.Offset, sz);

            this.reader.Seek(this.reader.Position + sz);

            T obj = new T();

            obj.init(reader);
            return(obj);
        }
Ejemplo n.º 7
0
        public List <T> read_obj_list <T>() where T : SprotoTypeBase, new()
        {
            UInt32 sz = this.read_array_size();

            List <T>         obj_list = new List <T> ();
            SprotoTypeReader reader   = new SprotoTypeReader();

            for (UInt32 i = 0; sz > 0; i++)
            {
                UInt32 read_size;
                obj_list.Add(read_element <T> (reader, sz, out read_size));
                sz -= read_size;
            }

            return(obj_list);
        }
Ejemplo n.º 8
0
        public Dictionary <TK, TV> read_map <TK, TV>(gen_key_func <TK, TV> func) where TV : SprotoTypeBase, new()
        {
            UInt32 sz = this.read_array_size();

            Dictionary <TK, TV> map    = new Dictionary <TK, TV> ();
            SprotoTypeReader    reader = new SprotoTypeReader();

            for (UInt32 i = 0; sz > 0; i++)
            {
                UInt32 read_size;
                TV     v = read_element <TV> (reader, sz, out read_size);
                TK     k = func(v);
                map.Add(k, v);
                sz -= read_size;
            }

            return(map);
        }
Ejemplo n.º 9
0
 public void init(SprotoTypeReader reader)
 {
     this.clear();
     this.reader = reader;
     this.init();
 }
Ejemplo n.º 10
0
 public void init(byte[] data, int offset = 0)
 {
     this.clear();
     this.reader = new SprotoTypeReader(data, offset, data.Length);
     this.init();
 }
Ejemplo n.º 11
0
 public SprotoTypeDeserialize(SprotoTypeReader reader)
 {
     this.init(reader);
 }
Ejemplo n.º 12
0
 public void init(SprotoTypeReader reader)
 {
     this.clear();
     this.deserialize = new SprotoTypeDeserialize(reader);
     this.decode();
 }
 public SprotoTypeDeserialize(SprotoTypeReader reader)
 {
     this.reader = reader;
     this.init();
 }
 public SprotoTypeDeserialize(byte[] data)
 {
     this.reader = new SprotoTypeReader(data, 0, data.LongLength);
     this.init();
 }