/// <summary>Serializes the specified table.</summary> /// <param name="writer">The writer.</param> /// <param name="flags">The flags.</param> /// <param name="layout">The layout.</param> /// <param name="rows">The rows.</param> /// <exception cref="ArgumentNullException">Rows or Layout or Writer.</exception> public static void Serialize(this DataWriter writer, Flags flags, RowLayout layout, params Row[] rows) { if (rows == null) { throw new ArgumentNullException(nameof(rows)); } if (layout == null) { throw new ArgumentNullException(nameof(layout)); } if (writer == null) { throw new ArgumentNullException(nameof(writer)); } writer.Write7BitEncoded32((int)flags); if ((flags & Flags.WithLayout) != 0) { layout.Save(writer); } writer.Write7BitEncoded64(rows.Length); foreach (var row in rows) { SerializeData(writer, layout, row); } }