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