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++; } }
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++; } }
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; }