/// <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; }
/* 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; }
public static BoxedValue ToBoxedValue(SuffixString s) { return BoxedValue.Box(s); }