Commit Graph

828 Commits

Author SHA1 Message Date
Ion Gaztañaga d8a9959360 Convert force and force_copy in macros so that it's a no-op for modern compilers. 2026-02-21 22:45:06 +01:00
Ion Gaztañaga 67f4bf69a2 Add prefetch option 2026-02-21 22:43:21 +01:00
Ion Gaztañaga e2278d3ab6 Fixes #332 ("aligned_alloc not available in C++11/14 on XCode 12") 2026-02-20 23:19:32 +01:00
Ion Gaztañaga 958fe7d326 Fixes #330: ("boost/container/detail/pair.hpp: partial specializations of boost::move_detail traits for std::pair break Unity (jumbo)") 2026-02-16 22:53:37 +01:00
Ion Gaztañaga be8fa0ae35 Fix incorrect BOOST_MOVE_BASE usage 2026-02-13 17:25:20 +01:00
Ion Gaztañaga db62e4b814 Refactor block_base/block to avoid storing the data pointer and make sizeof(next) smaller. 2026-02-13 10:11:32 +01:00
Ion Gaztañaga 1a50b78e15 Add "store_data_in_block" option to nest 2026-02-12 22:42:54 +01:00
Ion Gaztañaga 078fb8671e Added, for testing and comparison and benchmarking purposes, experimental "nest" container under "experimental" folder, a C++03 backport and adaptation to use Boost.Container internals of Joaquín López Muñoz's "hub" container proposal (https://lists.boost.org/archives/list/boost@lists.boost.org/thread/6YXMHMARNAEFTGBTZYYAETCAYCYHHKQP/). 2026-02-11 12:05:12 +01:00
Ion Gaztañaga d24ff073cf Rename segmented_vector to segtor, to reserve "vector" name to contiguous memory containers. 2026-02-07 15:04:21 +01:00
Ion Gaztañaga 1620287965 Clarify the block_size/block_bytes option 2026-02-06 00:00:47 +01:00
Ion Gaztañaga cd0387b5fc Changed return type of erase/erase_if/unique members of list and slist to size_type to follow C++20 changes to std::list. 2026-02-05 00:29:03 +01:00
Ion Gaztañaga 2b1c08b010 Add "get_segment_size/bytes" to segmented_vector. 2026-02-04 00:27:01 +01:00
Ion Gaztañaga bfb2563355 Use "get_segment_size/bytes" in deque and its example. 2026-02-04 00:26:25 +01:00
Ion Gaztañaga ea94858c0a Add "get_segment_size" alias 2026-02-04 00:25:49 +01:00
Ion Gaztañaga 3205bce1b7 Remove experimental warning to segmented_vector 2026-02-04 00:05:33 +01:00
Ion Gaztañaga 0e0e9c51a7 Add segment_size/segment_bytes aliases 2026-02-04 00:04:47 +01:00
Ion Gaztañaga 65f7bba30d Clean up CTAD code formatting 2026-02-03 15:50:14 +01:00
Ion Gaztañaga f483482d7c Optimize segmented_vector:
- Add option to deque_impl to optimize a "single-ended" version.
- If single_ended, start offset is not stored as member and is assumed to be zero.
- Members with cases for front insertion are modified to avoid those branches.
- If single_ended, only a free slot at the back on the index is needed instead of 2 (front and back)
2026-02-03 02:09:50 +01:00
Ion Gaztañaga 56268e7a18 Add experimental "segmented_vector" container, which is a single-ended version of deque. First implementation is suboptimal. 2026-02-02 12:59:07 +01:00
Ion Gaztañaga 56b4ccac37 Extract deque implementation to a deque_impl class in order to reuse that class for new containers 2026-02-01 21:53:31 +01:00
Ion Gaztañaga eabba274a2 Fix documenation to state begin() is also amortized constant-time for deque. 2026-01-31 16:24:34 +01:00
Ion Gaztañaga 9e2afe85ad Add "inline_chars" option to basic_string 2026-01-24 23:29:36 +01:00
Ion Gaztañaga 11f13e8d7e Add warning to stored_size option 2026-01-24 17:12:20 +01:00
Ion Gaztañaga 7adef4f425 Use SFINAE to avoid calling iterator-range functions when trying to call size + value constructors 2026-01-24 17:11:34 +01:00
Ion Gaztañaga d4e38179fc Add options "stored_size" and "growth_factor" options to string. Make string's default growth factor the same as vector's (60%) 2026-01-24 11:08:28 +01:00
Ion Gaztañaga da579be9c1 Avoid priv_set_storage since storage is only stored in long representation 2026-01-23 22:51:56 +01:00
Ion Gaztañaga d60d8d1e21 Correct dlmalloc_allocation_command arguments are bytes, not objects 2026-01-23 00:37:55 +01:00
Ion Gaztañaga 4f449051f0 Rollback clang's _NonNull attribute, too many warnings in older compilers. Replaced with BOOST_ASSERT null checks and added some corner cases to the test-suite. 2026-01-23 00:18:46 +01:00
Ion Gaztañaga 60d933fc09 Added Clang nullability checks for basic_string methods 2026-01-22 19:42:55 +01:00
Ion Gaztañaga 20aa1aee7e Implement "ends_with" and update "starts_with" to the same implementation style. 2026-01-22 00:09:11 +01:00
Ion Gaztañaga dc3a96a29b Add C++20 "starts_with" overloads 2026-01-21 23:40:18 +01:00
Ion Gaztañaga a02aae0b9f Add C++23 "contains" to basic_string. 2026-01-21 22:46:19 +01:00
Ion Gaztañaga 548496fa2e Fixes #328 ("boost::container::deque stores a redundant copy of the allocator, increasing size") 2026-01-21 13:43:31 +01:00
Ion Gaztañaga bf058bcc54 Force explicit alignment argument to private_node_pool and shared_node_pool to avoid bugs on overaligned types. 2026-01-20 23:57:43 +01:00
Ion Gaztañaga 07806c7752 Properly rename implementation pool types 2026-01-20 22:51:43 +01:00
Ion Gaztañaga 4e2e8ecd18 Add unlikely hint and uniffy priv_allocation_command with adaptive_pool. 2026-01-20 19:41:23 +01:00
Ion Gaztañaga 7f2e33ec38 - Make sure only version-related functions are called.
- Add some missing nodiscard
2026-01-20 19:39:54 +01:00
Ion Gaztañaga 08ee5c97bd Remove unused "allocate" function, as aligned allocations are used now 2026-01-20 19:37:37 +01:00
Ion Gaztañaga faa4ce8111 Remove deprecated hint parameter from "allocate" 2026-01-20 10:22:18 +01:00
Ion Gaztañaga 189c2faefe Take advantage of alignment argument of shared_node_pool so that node_allocator supports overaligned types 2026-01-20 00:59:26 +01:00
Ion Gaztañaga 06f38d1cae Always pass node alignment to private_node_pool_impl 2026-01-20 00:58:12 +01:00
Ion Gaztañaga 49c9c26dbf Add missing alignment argument to shared_adaptive_node_pool. 2026-01-19 23:23:57 +01:00
Ion Gaztañaga 9201bbf83b - Modify dlmalloc_allocation_command to use alignment info, this requires modifying the dlmalloc_ext wrapper library.
- Replace all dlmalloc_malloc uses with dlmalloc_allocation_command to support overaligned types in array allocations.
2026-01-19 01:06:56 +01:00
Ion Gaztañaga fbfa25d434 Add missing <.../multiallocation_chain.hpp> include 2026-01-18 21:38:06 +01:00
Ion Gaztañaga a0dd5bb7c5 Fix -Wshadow warning 2026-01-18 17:15:29 +01:00
Ion Gaztañaga 120d663949 Make node pool based allocators support overaligned types. To avoid breaking ABI, pack overalignment value in spare bits on existing fields. Probably in the future we want to break ABI to simplify the maintenance. 2026-01-18 16:15:01 +01:00
Ion Gaztañaga f818ee9bfd Delete alignment check, ubsan will be used to detect this in tests 2026-01-14 12:36:54 +01:00
Ion Gaztañaga 72ff09d7d2 Fix bug, m_nodes_per_block was directly used instead of unpacking its value and stripping the stored bits. 2026-01-13 01:26:43 +01:00
Ion Gaztañaga 7cc06da5d8 Insert alignment assertion for construct 2026-01-13 01:25:57 +01:00
Ion Gaztañaga ac36c424fd Add overalignment support for private_node_pool_impl. To avoid breaking ABI (internal Interprocess pool representation depends on this and it might brake programs) the overalignmend (alignment bigger than pointer alignment) is stored in the free bits of existing 3 integers. 2026-01-12 23:06:07 +01:00