private static void AddUniqueName( string columnName, VBuffer <ReadOnlyMemory <char> > slotNames, ref ValueListBuilder <int> nameIndices, ref ValueListBuilder <byte> utf8Names) { var columnNameBytes = Encoding.UTF8.GetBytes(columnName); var dotBytes = Encoding.UTF8.GetBytes("."); foreach (var kvp in slotNames.Items(true)) { // REVIEW: Add the proper number of zeros to the slot index to make them sort in the right order. var slotName = (!kvp.Value.IsEmpty ? kvp.Value.ToString() : kvp.Key.ToString(CultureInfo.InvariantCulture)); if (utf8Names.Capacity - utf8Names.Length < slotName.Length * 2 + columnNameBytes.Length + dotBytes.Length) { utf8Names.Grow(); } nameIndices.Append(utf8Names.Length); utf8Names.AppendRange(columnNameBytes); utf8Names.AppendRange(dotBytes); var bytesNumber = Encoding.UTF8.GetBytes(slotName, 0, slotName.Length, utf8Names.Buffer, utf8Names.Length); utf8Names.Length += bytesNumber; utf8Names.Append(0); } }
private static void AddUniqueName(string name, ref ValueListBuilder <int> nameIndices, ref ValueListBuilder <byte> utf8Names) { if (utf8Names.Capacity - utf8Names.Length < name.Length * 2 + 2) { utf8Names.Grow(); } nameIndices.Append(utf8Names.Length); var bytesNumber = Encoding.UTF8.GetBytes(name, 0, name.Length, utf8Names.Buffer, utf8Names.Length); utf8Names.Length += bytesNumber; utf8Names.Append(0); }