| 7560 | } |
| 7561 | |
| 7562 | void push_back(const xpath_node& node, xpath_allocator* alloc) |
| 7563 | { |
| 7564 | if (_end == _eos) |
| 7565 | { |
| 7566 | size_t capacity = static_cast<size_t>(_eos - _begin); |
| 7567 | |
| 7568 | // get new capacity (1.5x rule) |
| 7569 | size_t new_capacity = capacity + capacity / 2 + 1; |
| 7570 | |
| 7571 | // reallocate the old array or allocate a new one |
| 7572 | xpath_node* data = static_cast<xpath_node*>( |
| 7573 | alloc->reallocate(_begin, capacity * sizeof(xpath_node), new_capacity * sizeof(xpath_node))); |
| 7574 | assert(data); |
| 7575 | |
| 7576 | // finalize |
| 7577 | _begin = data; |
| 7578 | _end = data + capacity; |
| 7579 | _eos = data + new_capacity; |
| 7580 | } |
| 7581 | |
| 7582 | *_end++ = node; |
| 7583 | } |
| 7584 | |
| 7585 | void append(const xpath_node* begin_, const xpath_node* end_, xpath_allocator* alloc) |
| 7586 | { |
no test coverage detected