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); }
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); }
public long init(SprotoTypeReader reader) { this.clear(); this.deserialize.init(reader); this.decode(); return(this.deserialize.size()); }
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(); }
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); }
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); }
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); }
public void init(SprotoTypeReader reader) { this.clear(); this.reader = reader; this.init(); }
public void init(byte[] data, int offset = 0) { this.clear(); this.reader = new SprotoTypeReader(data, offset, data.Length); this.init(); }
public SprotoTypeDeserialize(SprotoTypeReader reader) { this.init(reader); }
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(); }