22 #ifndef _PASL_DATA_CHUNKEDSEQ_H_
23 #define _PASL_DATA_CHUNKEDSEQ_H_
38 int Chunk_capacity = 512,
48 int ___Chunk_capacity,
49 class ___Cached_measure,
50 class Top_item_deleter,
51 class Top_item_copier,
57 class ___Chunk_struct,
61 class Item_alloc = std::allocator<Item>
76 using item_queue_type = Chunk_struct<value_type, Chunk_capacity, item_allocator_type>;
85 #ifdef DISABLE_RANDOM_ACCESS_ITERATOR
90 #ifndef ENABLE_FINGER_SEARCH
123 : client_meas(client_meas) { }
128 m.value2 = client_meas(v);
134 for (
auto p = lo; p < hi; p++)
141 m.value1 = p->
size();
148 for (
auto p = lo; p < hi; p++)
158 this->client_meas = client_meas;
164 std::swap(x.value1, y.value1);
165 std::swap(x.value2, y.value2);
192 #ifdef DEBUG_MIDDLE_SEQUENCE
194 static constexpr
int middle_capacity = 1<<23;
212 namespace bootstrapped {
218 int Chunk_capacity=512,
223 class Chunk_item_alloc = std::allocator<Item>
226 class Item_alloc = std::allocator<Item>
234 int Chunk_capacity = 512,
236 class Item_alloc = std::allocator<Item>
251 int Chunk_capacity = 512,
256 class Chunk_item_alloc = std::allocator<Item>
259 class Item_alloc = std::allocator<Item>
268 int Chunk_capacity = 512,
270 class Item_alloc = std::allocator<Item>
algebra::combiner< size_algebra_type, client_algebra_type > middle_algebra_type
measured_type operator()(const client_value_type &v) const
static constexpr bool enable_index_optimization
typename middle_cache_type::measure_type middle_measure_type
measured_type operator()(const client_value_type *lo, const client_value_type *hi) const
static value_type identity()
Fixed-capacity ring buffer.
base::ringbuffer_ptr< base::heap_allocator< Item, Capacity+1 >> ringbuffer_ptr
static constexpr size_type chunk_capacity
bootchunkseq< bootchunkseq_deque_config< Item, cachedmeasure::trivial< Item, size_t >, Capacity >> cdeque
static client_measured_type cclient(middle_measured_type m)
Fixed-capacity array along with cached measurement of array contents.
typename Client_cache::size_type size_type
static value_type combine(value_type x, value_type y)
Middle_sequence< chunk_type, middle_chunk_capacity, middle_cache_type, Pointer_deleter, Pointer_deep_copier, fixedcapacity::heap_allocated::ringbuffer_ptr, size_access > middle_type
void set_client_measure(client_measure_type client_meas)
Chunk_struct< value_type, Chunk_capacity, item_allocator_type > item_queue_type
Representation of a chunk.
typename chunk_cache_type::measured_type chunk_measured_type
Hinze & Patterson's 2-3 finger tree.
typename middle_algebra_type::value_type middle_measured_type
Client_cache chunk_cache_type
base::ringbuffer_ptrx< base::heap_allocator< Item, Capacity+1 >> ringbuffer_ptrx
[int_group_under_addition_and_negation]
Definitions of a few cached-measurement policies.
measure::measured_pair< value1_type, value2_type > value_type
typename queue_type::value_type value_type
static void swap(measured_type &x, measured_type &y)
typename Client_cache::measure_type client_measure_type
ptrdiff_t difference_type
chunk< item_queue_type, chunk_cache_type, annotation_type > chunk_type
typename chunk_type::value_type client_value_type
Item_alloc item_allocator_type
static size_type csize(middle_measured_type m)
Chunked-sequence functor.
measured_type operator()(const value_type *lo, const value_type *hi) const
measured_type get_cached() const
static constexpr int middle_chunk_capacity
static size_type & size(middle_measured_type &m)
Representation of a chunk.
static client_measured_type & client(middle_measured_type &m)
typename Client_cache::size_type size_type
measured_type operator()(value_type p) const
typename Client_cache::algebra_type client_algebra_type
chunk_measured_type client_measured_type
typename algebra_type::value_type measured_type
client_measure_type get_client_measure() const
measure_type(const client_measure_type &client_meas)