Exemple #1
0
        public unsafe ValueString CreateValueString(ValueString vs)
        {
            EnsureSpace(vs._length);

            fixed(char *dest = str)
            {
                var destx  = dest + used;
                var offset = used;

                fixed(char *source = vs._string)
                {
#if NET35
                    ValueString.CopyChars(source + vs._start, destx, vs._length);
#else
                    Buffer.MemoryCopy((void *)(source + vs._start), destx, vs._length * 2, vs._length * 2);
#endif
                }

                used += vs._length;
                return(new ValueString(str, offset, vs._length));
            }
        }
        public unsafe ValueString CreateValueString(char[] arr, int start, int length)
        {
            if (length == 0)
            {
                return(ValueString.Empty);
            }
            if (start + length > arr.Length)
            {
                throw new ArgumentException();
            }
            EnsureSpace(length);
            fixed(char *ptr = str)
            {
                fixed(char *src = arr)
                {
                    ValueString.CopyChars(ptr + used, src + start, length);
                    var offset = used;

                    used += length;
                    return(new ValueString(str, offset, length));
                }
            }
        }