private DataTable ReadList(BinaryReader br, ElementsList list) { var table = new DataTable(list.Name); foreach (var type in list.Types) { var column = new DataColumn(type.Name, type.NormalType) { DefaultValue = type.DefaultValue, AllowDBNull = false }; table.Columns.Add(column); } if (!list.Types.Any()) { return(table); } var length = br.ReadInt32(); for (var i = 0; i < length; i++) { table.Rows.Add(ReadItem(br, table, list.Types)); } return(table); }
private List <byte[]> ReadSkip(BinaryReader br, ElementsList list) { var vals = new List <byte[]>(); switch (list.Skip) { case "AUTO": vals.Add(br.ReadBytes(4)); var count = br.ReadInt32(); vals.Add(BitConverter.GetBytes(count)); vals.Add(br.ReadBytes(count)); count = br.ReadInt32(); while (count <= 0 || count > 10000) { vals.Add(BitConverter.GetBytes(count)); count = br.ReadInt32(); } br.BaseStream.Position -= 4; break; case "RAW": var rCount = br.ReadInt32(); vals.Add(BitConverter.GetBytes(rCount)); for (var i = 0; i < rCount; i++) { vals.Add(br.ReadBytes(132)); var count2 = br.ReadInt32(); vals.Add(BitConverter.GetBytes(count2)); for (var i2 = 0; i2 < count2; i2++) { vals.Add(br.ReadBytes(8)); var l = br.ReadInt32(); vals.Add(BitConverter.GetBytes(l)); vals.Add(br.ReadBytes(l * 2)); var count3 = br.ReadInt32(); vals.Add(BitConverter.GetBytes(count3)); vals.Add(br.ReadBytes(count3 * 136)); } } break; default: vals.Add(br.ReadBytes(int.Parse(list.Skip))); break; } return(vals); }
private void WriteTable(ElementsList list, BinaryWriter _binaryWriter) { if (Elements.SkipValues.ContainsKey(list)) { foreach (var bytese in Elements.SkipValues[list]) { _binaryWriter.Write(bytese); } } var values = Elements.Data.Tables[list.Name].Rows; if (list.Skip != "RAW") { _binaryWriter.Write(values.Count); } foreach (DataRow value in values) { WriteRow(value, list.Types, _binaryWriter); } }
/// <summary> /// Search unique identifier in the list /// If the ID is not found - will return -1 /// </summary> /// <param name="list">there list</param> /// <param name="MaxID">finish ID</param> /// <returns>unique identifier or -1</returns> public int GetFreeID(ElementsList list, int MaxID) => GetFreeID(GetAllRows(list), MaxID);
/// <summary> /// It returns all rows from these list /// </summary> /// <param name="list">these lists</param> /// <returns>All rows</returns> public IEnumerable <DataRow> GetAllRows(ElementsList list) => Data.Tables[list.Name].Select();