1363 Commits

Author SHA1 Message Date
Braden Ganetsky
3f4d5fc567 Put instantiate_[fca] classes into their respective test file, instead of in the headers 2024-09-03 21:17:36 -05:00
joaquintides
cd9a592f00
Fixed std::initializer_list assignment issues for open-addressing containers (#277)
* fixed #276

* used range insert, stylistic this->

* assigned non-empty std::initializer_lists
2024-09-02 18:56:13 +02:00
Braden Ganetsky
1b0037135c Add concurrent_node containers to the GDB pretty-printer script 2024-08-25 13:01:49 -05:00
joaquintides
f734e399e3
Feature/concurrent node containers (#271)
* added concurrent node containers

* removed spurious typename

* added missing includes

* avoided unused param warning

* worked around Clang bug

* s/{}/() to work around GCC4.8 problems with aggregate initialization

* used /bigobj for cfoa/visit_tests.cpp

* suppressed localized maybe-uninitialized warnings

* fixed comments

* added /bigobj to cfoa/insert_tests.cpp

* instrumented double exact comparison to spot a spurious error

* fixed pedantic error

* refactored byte_span machinery

* compromised on sub-epsilon equality for doubles that should be identical

* documented boost::concurrent_node_(map|set)

* added concurrent_node_set

* added missing AlternativeType

* tested empty node insertion

* tested node_handle allocator management

* added nonassignable_allocator and node_handle_allocator_swap_tests

* fixed warning disabling

* silenced spurious GCC warning

* broadened scope of previous pragma

* broadened even more

* worked around spurious constexpr-related msvc-14.0 bug
https://godbolt.org/z/v78545Ebf

* added workaround back

* replaced previous workaround with built-in one

* added workaround back on top of built-in solution (which doesn't work 100% of the time)
2024-08-25 18:34:58 +02:00
Braden Ganetsky
111a503195 Generate inline assembly header file for automatic GDB pretty-printer script inclusion 2024-08-22 18:56:24 -05:00
Braden Ganetsky
a14b159665 Add missing calls to as_const(), otherwise we may call a 'T(T&)' constructor instead of the intended 'T(T const&)' 2024-08-07 16:15:36 -05:00
Braden Ganetsky
793fad5620 Run clang-format on the 'types' files 2024-08-07 16:09:15 -05:00
Braden Ganetsky
c117f4448f static_assert on the constructibility of the containers' types 2024-08-07 16:09:15 -05:00
Braden Ganetsky
65f3ea60dd
Use as_const to remove any possibility of use-after-move (#272) 2024-08-06 15:48:13 +02:00
joaquintides
1d1f0d306d
Feature/nonconst set visit (#265)
* Made some boost::concurrent_flat_set operations exclusive-locked

* unnamed unused args

* fixed PR number

* replaced homemade mechanism with boost::compat::latch
2024-07-16 19:50:08 +02:00
Braden Ganetsky
7ddd562532
Implement natvis for fancy pointers (#262)
* Add file for manual natvis testing

* Equip natvis file to allow fancy pointers

* Update docs

* [skip ci] add links to natvis docs
2024-07-15 19:42:28 +02:00
joaquintides
e3818afd45
test interprocess concurrency (#258)
* added cfoa_interprocess_concurrency_tests

* avoided C++14 digit separators

* stopped using exit codes to pass numerical info to parent

* Reorder includes to make msvc-14.0 happy

* made cumulative_stats interprocess concurrency safe

* disabled interprocess_concurrency_tests for Clang 3.5-8
(Boost.Process compile error)

* made test names shorter for the benefit of MINGW32

---------

Co-authored-by: Peter Dimov <pdimov@gmail.com>
2024-06-22 09:13:30 +02:00
joaquintides
5827bf2574 gotten rid of redundant base1, base2 and base3 2024-06-03 18:53:24 +02:00
Braden Ganetsky
0a66c687fd Write natvis for foa and cfoa containers 2024-06-01 09:26:37 -05:00
joaquintides
401b06663f forced a compile error when Hash::is_avalanching is not a type 2024-05-30 09:11:06 +02:00
joaquintides
7e9032c703 s/UB/ill-formed 2024-05-30 09:08:07 +02:00
joaquintides
f77bdb9b67 updated is_avalanching trait protocol 2024-05-29 19:51:32 +02:00
joaquintides
4c0aea983e made reset_stats noexcept 2024-05-06 13:26:30 +02:00
joaquintides
22d8cca03b added stats to bulk visitation 2024-05-05 17:56:03 +02:00
joaquintides
c1317cb5be replaced get_cumulative_stats() with direct access to cstats 2024-05-03 18:11:13 +02:00
joaquintides
223f64752d implemented proper stats handling on concurrent<->unordered move construction 2024-05-03 18:04:21 +02:00
joaquintides
8452b30608 implemented proper stats handling on move assignment 2024-05-02 20:41:27 +02:00
joaquintides
ee77a65fae added missing typename 2024-05-01 20:32:12 +02:00
joaquintides
e588e04a1b swapped stats on move construction/assignment 2024-05-01 18:11:01 +02:00
joaquintides
d01ae76074 grouped cumulative_stats summarization in one operation 2024-05-01 16:34:53 +02:00
joaquintides
5feb7459ee added stat counts 2024-04-30 19:18:15 +02:00
joaquintides
83abd9cc4e avoided -Wextra-semi-stmt warning 2024-04-30 17:49:52 +02:00
joaquintides
648f6fd23e protected cumulative_stats against count wraparound 2024-04-30 17:32:53 +02:00
joaquintides
2d8fd43cc4 editorial 2024-04-30 17:25:10 +02:00
joaquintides
9806e75cc9 added stats to boost::concurrent_flat_set 2024-04-29 20:32:27 +02:00
joaquintides
76c460a703 grouped foa::table_core cumulative stats in one member 2024-04-29 20:30:16 +02:00
joaquintides
18797a3f32 added noexcept guarantees to cumulative stats calculation 2024-04-29 19:28:35 +02:00
joaquintides
1ecb92deb5 added stats to boost::concurrent_flat_map 2024-04-29 12:06:50 +02:00
joaquintides
443113840d added stats to foa::concurrent_table 2024-04-29 12:06:28 +02:00
joaquintides
b07cee08c4 added stats to the rest of open-addressing containers 2024-04-29 11:23:15 +02:00
joaquintides
05b66e1034 added stats to boost::unordered_flat_map 2024-04-28 18:44:40 +02:00
joaquintides
e712c37e9f added stats to foa::table 2024-04-28 18:44:23 +02:00
Braden Ganetsky
e63853d87d Fix fca allocator swapping, and test that pmr allocator swap compiles 2024-03-24 12:22:45 -05:00
Braden Ganetsky
16732c5c4c Add unordered container pmr aliases 2024-03-23 14:02:53 -05:00
joaquintides
ccf9a76ebe Fixed #237 2024-03-15 17:30:10 +01:00
joaquintides
15cfef6967
Fixed support for allocators with explicit copy constructors (#234)
* added tests for explicit allocators

* made explicit_alloc_ctor_tests work
by adhering to the principle that classes templated with Allocator should accept exactly Allocator objects

* removed TMP machinery older compilers choke about

* initialized variables

* updated release notes

* fixed PR number
2024-02-17 18:58:48 +01:00
Braden Ganetsky
1d25c1c053 Update copyright notices 2024-02-11 11:22:28 -06:00
Braden Ganetsky
aff242dbaf Optimize emplace(k,v) for fca containers 2024-02-11 11:22:28 -06:00
Braden Ganetsky
4e6d4ade6c Optimize emplace(k,v) for foa and cfoa containers 2024-02-11 11:22:27 -06:00
Braden Ganetsky
4fbe450a65 Generalize alloc_cted_insert_type into allocator_constructed and remove the factory function alloc_make_insert_type() 2024-02-11 11:22:27 -06:00
Peter Dimov
c4dbda0f78 Add missing include 2024-02-08 20:52:34 +02:00
Braden Ganetsky
67c5cdb3a6
Optimize emplace() for exactly a value_type or init_type argument (#227)
* Add structs to count special member functions

* Add failing emplace tests, that will pass after making the optimization

* Optimize emplace() to not allocate when we already have a value_type or init_type

* Fix newly failing cfoa tests
2023-12-31 18:56:14 +01:00
Braden Ganetsky
0d2751c5e1
Extract at()'s throw_exception calls into noinline function (#223)
* Create function `detail::throw_out_of_range()` to make `at()` more inlineable

* Replace `boost::throw_exception()` with `detail::throw_out_of_range()`
2023-12-19 17:08:08 +01:00
joaquintides
7fd94b9df7
Fix/bucket iterator indirection operator (#220 rewrite) (#221)
* Add tests for member of pointer operator for bucket iterators

* Fix erroneous conversion from node* to value_type* in bucket iterators

Originally caughy by vslashg  from PR https://github.com/boostorg/unordered/pull/220

* Update change log

* Update GHA config to use containers in C++20 builds for clang-14 as it's incompatible with libstdc++-13

* fixed Python installation problem

* tried variation of former fix

* tried another variation of former fix

* tried yet another variation

* editorial

---------

Co-authored-by: Christian Mazakas <christian.mazakas@gmail.com>
2023-11-17 08:51:40 +01:00
joaquintides
42df4f2749
removed lifting of swap and ==/!= operations 2023-10-22 20:16:05 +02:00