Пример #1
0
        public void Add(T *val)
        {
            Ion.Write(_top, val);

            if (++count == _capacity)
            {
                _capacity  *= _multiplier;
                buffer_size = _capacity * item_size;
                _begin      = Ion.xrealloc(_begin, buffer_size);
                _top        = _begin + count;
            }
            else
            {
                _top++;
            }
        }
Пример #2
0
        public void Add(void *val)
        {
            *_top = val;

            if (++count == _capacity)
            {
                _capacity    *= _multiplier;
                buf_byte_size = _capacity * Ion.PTR_SIZE;
                _begin        = (void **)Ion.xrealloc(_begin, buf_byte_size);
                _top          = _begin + count;
                _end          = _begin + _capacity;
            }
            else
            {
                _top++;
            }
        }
Пример #3
0
        public void Append(T *val, int len)
        {
            if (count + len >= _capacity)
            {
                while (_capacity < len)
                {
                    _capacity *= _multiplier;
                }
                buffer_size = _capacity * item_size;
                _begin      = Ion.xrealloc(_begin, buffer_size);
                _top        = _begin + count;
            }

            Unsafe.CopyBlock(_top, val, (uint)(len * item_size));
            count += len;
            _top  += len;
        }