Beispiel #1
0
        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);
            }
        }
Beispiel #2
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);
        }