MCPcopy Create free account
hub / github.com/dengwirda/jigsaw / set_alloc

Method set_alloc

src/libcpp/containers/block_array.hpp:280–358  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

278 */
279
280 __normal_call void_type set_alloc (
281 size_type _new_alloc
282 )
283 {
284 size_type _cur_count = count();
285 size_type _cur_alloc = alloc();
286
287 size_type _cur_block = +0;
288 size_type _new_block = +0;
289 size_type _end_block = +0;
290 size_type _end_shift = +0;
291
292 size_type _siz_block = _size ;
293 size_type _nil_block = +0 ;
294
295 if (_new_alloc < _cur_count )
296 {
297 /*--------------- _destruct un-needed range first */
298 set_count(_new_alloc,
299 __cont::loose_alloc) ;
300 }
301
302 if (_cur_alloc!=+0)
303 {
304 /*-------------- calc. block-wise storage offsets */
305 _cur_block =
306 (_cur_alloc - 1) / _size + 0 ;
307 }
308 if (_new_alloc!=+0)
309 {
310 _new_block =
311 (_new_alloc - 1) / _size + 0 ;
312 _end_block =
313 (_new_alloc - 1) / _size + 1 ;
314 _end_shift =
315 (_new_alloc - 1) % _size + 1 ;
316 }
317
318 if (_new_alloc < _cur_alloc )
319 {
320 /*--------------- _pop old blocks and realloc end */
321 size_type _pos_block ;
322 for(_pos_block=_cur_block;
323 _pos_block>_new_block;
324 --_pos_block )
325 {
326 this->_block [_pos_block].
327 set_alloc(_nil_block);
328 }
329 this->_block [_new_block].
330 set_alloc(_end_shift);
331
332 this->_block.set_count (
333 _end_block, __cont::loose_alloc) ;
334
335 this->_alloc =_new_alloc ;
336 }
337 else

Callers

nothing calls this directly

Calls 2

set_countMethod · 0.45
get_allocMethod · 0.45

Tested by

no test coverage detected