public void *Remove() { Ion.assert(_top != _begin); _top--; count--; return(*_top); }
void map_put_uint64_from_uint64(ulong key, ulong val) { Ion.assert(key != 0); if (val == 0) { return; } if (2 * len >= cap) { map_grow(2 * cap); } Ion.assert(2 * len < cap); Ion.assert(Ion.IS_POW2(cap)); for (var i = key; ; i++) { i &= cap - 1; if (keys[i] == 0) { len++; keys[i] = key; vals[i] = val; return; } if (keys[i] == key) { vals[i] = val; return; } } }
public static PtrBuffer *Create(int capacity = START_CAPACITY, int multiplier = MULTIPLIER) { Ion.assert(multiplier >= MULTIPLIER); Ion.assert(capacity > 0); var b = (PtrBuffer *)Ion.xmalloc(sizeof(PtrBuffer)); b->_capacity = capacity; b->_multiplier = multiplier; b->count = 0; b->buf_byte_size = capacity * Ion.PTR_SIZE; b->_begin = (void **)Ion.xmalloc(b->buf_byte_size); b->_top = b->_begin; b->_end = b->_begin + b->buf_byte_size; return(b); }
public static Buffer <T> Create(int capacity = START_CAPACITY, int multiplier = MULTIPLIER) { Ion.assert(capacity >= START_CAPACITY); Ion.assert(multiplier > 1); var b = new Buffer <T> { item_size = sizeof(T), _capacity = capacity, _multiplier = multiplier, count = 0 }; b.buffer_size = b._capacity * b.item_size; b._begin = (T *)Ion.xmalloc(b.buffer_size); b._top = b._begin; return(b); }
ulong map_get_uint64_from_uint64(ulong key) { if (len == 0) { return(0); } Ion.assert(Ion.IS_POW2(cap)); Ion.assert(len < cap); for (var i = key; ; i++) { i &= cap - 1; if (keys[i] == key) { return(vals[i]); } if (keys[i] == 0) { return(0); } } }