private unsafe bool TryEncode()

in Microsoft.Shared.Dna.Json/JsonBuilder.cs [1143:1185]


        private unsafe bool TryEncode(string value, int reserve, int rollback)
        {
            if (value == null)
            {
                return this.builder.TryAppend(JsonConstants.NullValue, reserve, rollback);
            }

            if (!this.builder.TryAppend(JsonConstants.StringEnclosure, reserve, rollback))
            {
                return false;
            }

            fixed (char* valuePointer = value)
            {
                int valueLength = value.Length;
                for (int i = 0; i < valueLength; i++)
                {
                    char c = *(valuePointer + i);
                    string escaped = null;
                    int asIndex = c;
                    if (asIndex < JsonConstants.EscapeSequencesLength)
                    {
                        escaped = JsonConstants.EscapeSequences[asIndex];
                    }

                    if (escaped == null)
                    {
                        if (this.builder.TryAppend(c, reserve, rollback))
                        {
                            continue;
                        }
                    }
                    else if (this.builder.TryAppend(escaped, reserve, rollback))
                    {
                        continue;
                    }

                    return false;
                }
            }

            return this.builder.TryAppend(JsonConstants.StringEnclosure, reserve, rollback);
        }