Esempio n. 1
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="left"></param>
        /// <param name="right"></param>
        /// <returns></returns>
        public static SuffixString Concat(object left, object right)
        {
            var leftValue = left.ToString();
            var rightValue = right.ToString();
            var @new = new SuffixString();

            @new.Length = leftValue.Length + rightValue.Length;
            @new.Builder = new StringBuilder(leftValue, @new.Length);
            @new.Builder.Append(rightValue);

            return @new;
        }
Esempio n. 2
0
        /*
        override x.Finalize() =
        if x.Parent !== null then
            x.Parent.Suffixes <- x.Parent.Suffixes - 1
            if x.Suffixes = 0
            then x.Builder.Remove(x.Parent.Length, x.Length-x.Parent.Length) |> ignore
            else x.Parent.Suffixes <- x.Parent.Suffixes + x.Suffixes
        */
        /// <summary>
        /// 
        /// </summary>
        /// <param name="current"></param>
        /// <param name="right"></param>
        /// <returns></returns>
        public static SuffixString Concat(SuffixString current, object right)
        {
            SuffixString @new;
            StringBuilder builder;

            var value = right.ToString();

            if (current.Length == current.Builder.Length)
            {
                builder = current.Builder.Append(value);
            }
            else
            {
                var newLength = current.Length + value.Length;
                builder = new StringBuilder(current.ToString(), newLength);
                builder.Append(value);
            }

            @new = new SuffixString();
            @new.Length = builder.Length;
            @new.Builder = builder;

            return @new;
        }
Esempio n. 3
0
 public static BoxedValue ToBoxedValue(SuffixString s)
 {
     return BoxedValue.Box(s);
 }