예제 #1
0
    public void Add(
        int number,
        [InterpolatedStringHandlerArgument("")]
        ref IPropertyList.InterpolatedStringHandler handler)
    {
        if (number == 0)
        {
            return;
        }

        var chars = _arrayToReturnToPool.AsSpan(0, _pos);

        if (Header == 0)
        {
            Header     = number;
            HeaderArgs = chars.ToString();
            HeaderArgs.GetHashCode(StringComparison.Ordinal);
        }

        AddHash(number);
        if (chars.Length > 0)
        {
            AddHash(string.GetHashCode(chars, StringComparison.Ordinal));
        }

        int strLength = chars.Length * 2;
        int length    = _bufferPos + 6 + strLength;

        while (length > _buffer.Length)
        {
            Flush();
        }

        var writer = new SpanWriter(_buffer.AsSpan(_bufferPos));

        writer.Write(number);
        writer.Write((ushort)strLength);
        writer.Write(chars, TextEncoding.UnicodeLE);

        _bufferPos += writer.BytesWritten;
    }
예제 #2
0
 public void Add(
     int number,
     [InterpolatedStringHandlerArgument("")]
     ref IPropertyList.InterpolatedStringHandler handler
     ) => InternalAdd(number, ref handler);
예제 #3
0
 public void Add(
     [InterpolatedStringHandlerArgument("")]
     ref IPropertyList.InterpolatedStringHandler handler
     ) => InternalAdd(GetStringNumber(), ref handler);