Skip to content

Commit 9ddafb7

Browse files
committed
cleanup part of code in deque for preparing insertion
1 parent 87211ba commit 9ddafb7

1 file changed

Lines changed: 37 additions & 3 deletions

File tree

include/fast_io_dsal/impl/deque.h

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -564,11 +564,16 @@ inline constexpr void deque_rebalance_or_grow_2x_after_blocks_impl(dequecontrolt
564564
}
565565

566566
template <typename allocator, typename dequecontroltype>
567-
inline constexpr void deque_allocate_on_empty_common_impl(dequecontroltype &controller, ::std::size_t align, ::std::size_t bytes) noexcept
567+
inline constexpr void deque_allocate_on_empty_common_with_n_impl(dequecontroltype &controller, ::std::size_t align, ::std::size_t bytes,
568+
::std::size_t initial_allocated_block_counts) noexcept
568569
{
570+
constexpr ::std::size_t maxval{::std::numeric_limits<::std::size_t>::max()};
571+
if (initial_allocated_block_counts == maxval) [[unlikely]]
572+
{
573+
::fast_io::fast_terminate();
574+
}
575+
::std::size_t initial_allocated_block_counts_with_sentinel{initial_allocated_block_counts + 1u};
569576
using block_typed_allocator = ::fast_io::typed_generic_allocator_adapter<allocator, typename dequecontroltype::controlreplacetype>;
570-
constexpr ::std::size_t initial_allocated_block_counts{3};
571-
constexpr ::std::size_t initial_allocated_block_counts_with_sentinel{initial_allocated_block_counts + 1u};
572577
auto [allocated_blocks_ptr, allocated_blocks_count] = block_typed_allocator::allocate_at_least(initial_allocated_block_counts_with_sentinel);
573578
// we need a null terminator as sentinel like c style string does
574579
--allocated_blocks_count;
@@ -596,6 +601,13 @@ inline constexpr void deque_allocate_on_empty_common_impl(dequecontroltype &cont
596601
back_block.curr_ptr = halfposptr;
597602
}
598603

604+
template <typename allocator, typename dequecontroltype>
605+
inline constexpr void deque_allocate_on_empty_common_impl(dequecontroltype &controller, ::std::size_t align, ::std::size_t bytes) noexcept
606+
{
607+
constexpr ::std::size_t initial_allocated_block_counts{3};
608+
::fast_io::containers::details::deque_allocate_on_empty_common_with_n_impl<allocator>(controller, align, bytes, initial_allocated_block_counts);
609+
}
610+
599611
template <typename allocator, typename dequecontroltype>
600612
inline constexpr void deque_grow_back_common_impl(
601613
dequecontroltype &controller,
@@ -1193,6 +1205,28 @@ deque_erase_common_trivial_impl(::fast_io::containers::details::deque_controller
11931205
return first;
11941206
}
11951207

1208+
#if 0
1209+
template <typename allocator, typename dequecontroltype>
1210+
inline constexpr void deque_reserve_back_spaces_impl(dequecontroltype &controller, ::std::size_t n, ::std::size_t align, ::std::size_t blockbytes) noexcept
1211+
{
1212+
::std::size_t const nb{n/blockbytes};
1213+
1214+
if (controller.controller_block.controller_start_ptr == nullptr)
1215+
{
1216+
::fast_io::containers::details::deque_allocate_on_empty_common_with_n_impl<allocator>(
1217+
controller, align, blockbytes, nb);
1218+
return;
1219+
}
1220+
1221+
}
1222+
1223+
template <typename allocator, ::std::size_t align, ::std::size_t sz, ::std::size_t block_size, typename dequecontroltype>
1224+
inline constexpr void deque_reserve_back_spaces(dequecontroltype &controller, ::std::size_t n)
1225+
{
1226+
1227+
}
1228+
#endif
1229+
11961230
} // namespace details
11971231

11981232
template <::std::forward_iterator ForwardIt>

0 commit comments

Comments
 (0)