Ion Gaztañaga
27c00ae498
Fixes #75 ("Bug: Rehashing an empty unordered_set with cache_begin set to true hits an assert")
2022-06-25 18:32:27 +02:00
Ion Gaztañaga
05bb58091e
Add experimental fastmod_buckets option
2022-06-13 00:42:58 +02:00
Ion Gaztañaga
3c5c8cec3f
Rewritten hash semi-intrusive containers to improve compilation times and runtime performance. Added experimental "linear_buckets" option.
2022-05-04 23:36:34 +02:00
Ion Gaztañaga
afe294063b
Remove some forceinline attributes that might be counter-productive and add noexcept to others.
2022-01-04 00:34:33 +01:00
Ion Gaztañaga
01b4f6264c
Take all pointers by value to avoid aliasing issues in release mode
2021-12-29 14:02:03 +01:00
Ion Gaztañaga
65353e038b
Fix -Wshadow warnings
2021-12-27 14:37:12 +01:00
Ion Gaztañaga
5c4d116b82
Support Clang's -Wconversion -Wfloat-conversion -Wsign-conversion with -Werror
2021-10-20 00:17:13 +02:00
Ion Gaztañaga
2eeee6cb4c
Support GCC's -Wconversion -Wfloat-conversion -Warith-conversion -Wsign-conversion warnings.
2021-10-16 15:56:54 +02:00
Ion Gaztañaga
a4180b9e9f
Remove GCC's -Wconversion warnings
2021-10-06 00:08:18 +02:00
Ion Gaztañaga
a633906847
Fixes #59 ("Add noexcept support to the library").
2021-04-19 11:17:48 +02:00
Ed Catmur
39f7315a42
UB: comparing unrelated pointers
...
detected by gcc10 asan:
==13==ERROR: AddressSanitizer: invalid-pointer-pair: 0x612000031cc8 0x61d0000000d0
#0 0x18f3270 in boost::intrusive::bucket_plus_vtraits<...>::priv_get_bucket_num_no_hash_store(boost::intrusive::slist_iterator<boost::intrusive::trivial_value_traits<boost::intrusive::slist_node_traits<void*>, (boost::intrusive::link_mode_type)0>, false>, boost::move_detail::bool_<false>) libs/intrusive/include/boost/intrusive/hashtable.hpp:935
#1 0x18f3270 in boost::intrusive::hashtable_impl<...>::priv_get_bucket_num_hash_dispatch(boost::intrusive::slist_iterator<boost::intrusive::trivial_value_traits<boost::intrusive::slist_node_traits<void*>, (boost::intrusive::link_mode_type)0>, false>, boost::move_detail::bool_<false>) libs/intrusive/include/boost/intrusive/hashtable.hpp:3509
#2 0x18f3270 in boost::intrusive::hashtable_impl<...>::priv_get_bucket_num(boost::intrusive::slist_iterator<boost::intrusive::trivial_value_traits<boost::intrusive::slist_node_traits<void*>, (boost::intrusive::link_mode_type)0>, false>) /home/edward.catmur/packages/boost/1.75.0-maven6/libs/intrusive/include/boost/intrusive/hashtable.hpp:3500
#3 0x18f3270 in boost::move_detail::disable_if_convertible<...>::type boost::intrusive::hashtable_impl<...>::erase_and_dispose<...>(...) libs/intrusive/include/boost/intrusive/hashtable.hpp:2360
2021-02-15 10:42:25 +00:00
Ion Gaztañaga
9c73691528
Update lightweight_test.hpp and hash.hpp references to the actual boost components.
2021-01-02 13:38:52 +01:00
Ion Gaztañaga
3618260489
fix GitHub Issue #35 ("key_of_value on treap_set seems to be broken in 1.69")
2019-02-12 00:23:56 +01:00
bad-ed
cbf83bbebb
hashtable: fixed build with BOOST_INTRUSIVE_VARIADIC_TEMPLATES defined
2018-10-10 17:14:50 +03:00
Ion Gaztañaga
2ab3421b17
In functions that modify data structures, take pointers by value instead of by reference, to avoid aliasing issues.
2018-09-27 10:14:16 +02:00
Ion Gaztañaga
53b1aef2da
Refactor suggested_upper_bucket_count/suggested_lower_bucket_count to be independent of the hashtable.
2017-12-09 13:01:49 +01:00
Ion Gaztañaga
1ad2b26ee4
Avoid using external reference in loop to avoid aliasing pesimization.
2017-11-07 00:46:23 +01:00
Louis Dionne
80c22df9dc
[hashtable] Fix typo in documentation
2017-10-16 09:18:13 +09:00
Ion Gaztañaga
a10de1bd60
Closes #25 in GitHub ("Document the behavior of move constructor for slist")
2017-10-14 12:06:21 +02:00
Ion Gaztañaga
018a39c433
Use directly boost::movelib::pointer_element/to_raw_pointer
2017-04-07 16:05:44 +02:00
Ion Gaztañaga
db15ff6c08
Allow non std::size_t size_type.
2017-04-06 23:32:39 +02:00
Ion Gaztañaga
e9e3f92427
Apply BOOST_INTRUSIVE_FORCEINLINE to some trivial functions.
2016-07-31 22:47:48 +02:00
Ion Gaztañaga
4546ffba1d
As suggested in Trac #12229 ("intrusive::unordered_set<T>::rehash() broken) a new "full rehash" function is added to force rehashing of existing elements when keys are changed but the new keys respect some hash and equality invariants.
2016-07-31 14:11:49 +02:00
Ion Gaztañaga
2d55c66475
Remove static instances for size_holder, as it provokes false positives in thread debugging tools and simplify size_traits usage, specially in swaps.
2016-07-02 22:34:41 +02:00
Ion Gaztañaga
4cf38987a8
Fixes Boost Trac #11992 : "Add an overload of insert_check taking a key_type"
2016-03-01 21:22:28 +01:00
Ion Gaztañaga
3587a6f470
Fix bug that could lead to uninitialized memory reads and rare errors when cloning
2015-06-09 14:24:00 +02:00
Ion Gaztañaga
51de75799b
- Implemented map and multimap-like interfaces.
...
- Refactored hashtable containers to reduce template instantiations.
2015-06-04 11:16:21 +02:00
Ion Gaztañaga
dd385e0ec5
-> Use new Boost.Move meta utilities to avoid compilation errors in old compilers.
...
-> Implement equality operators as friend functions to make code clearer.
2015-04-12 12:56:04 +02:00
Ion Gaztañaga
667ec0bdfc
Make sure boost/config.hpp is included before pragma once.
2015-02-01 23:15:14 +01:00
Ion Gaztañaga
a55b2d824d
Replaced _MSC_VER with BOOST_HAS_PRAGMA_ONCE before #pragma once.
2015-01-10 12:49:46 +01:00
Ion Gaztañaga
614ce1b155
Reduced include dependencies
2015-01-02 18:41:20 +01:00
Ion Gaztañaga
12ee566796
Workaround for bugs #10771 and #6720 .
2014-12-17 15:45:05 +01:00
Ion Gaztañaga
adda517544
Use of boost::adl_move_swap.
...
Replaced <algorithm> with <functional> where needed
Added basic equal/lexicographical compare algorithms to avoid complex <algorithm> include and ADL problems in some compilers
2014-11-26 19:32:12 +01:00
Ion Gaztañaga
913f903d16
Avoid including <iterator>, use intrusive's own version to avoid ADL clashes and minimize some dependencies.
2014-11-25 18:43:16 +01:00
Ion Gaztañaga
2839598e85
get_header_holder_type used internally to shorten symbol length.
2014-11-01 19:59:03 +01:00
Ion Gaztañaga
414ca9f338
Break options.hpp dependencies, now hooks don't depend on heavy meta-machinery.
2014-10-18 17:02:23 +02:00
Ion Gaztañaga
e926491606
Added #pragma once to headers
2014-10-13 22:30:28 +02:00
Ion Gaztañaga
a2f5d31ad3
Split detail/utilities.hpp into 11 headers to minimize physical coupling and header dependencies
2014-10-13 21:46:47 +02:00
Ion Gaztañaga
d25ae5748e
Simplified include dependencies to avoid too many preprocessed source.
2014-10-10 18:21:18 +02:00
Ion Gaztañaga
7ae11c3444
Header dependency cleanup. Removed some standard includes, splitted large "utilities" headers, and minimized algorithm dependencies.
2014-10-04 07:55:02 +02:00
Ion Gaztañaga
702ae47424
Fixed #10469 : Erasing from intrusive unordered_multiset with optimize_multikey goes into an infinite loop
2014-10-01 00:01:41 +02:00
Ion Gaztañaga
303ac69794
Replaced boost/move/move.hpp with a more lightweight boost/move/utility_core.hpp
2014-09-25 17:12:55 +02:00
Matei David
a684df24bd
check const containers
2014-08-14 16:27:21 -04:00
Matei David
3ebd69f44e
implemented container integrity checkers
2014-08-14 12:28:24 -04:00
Ion Gaztañaga
563eca32de
Added support for node and value pointers non-convertible from raw references
2014-06-12 11:49:42 +02:00
Ion Gaztañaga
29aa25d8e9
* Deleted dependencies with <boost/pointer_cast.hpp> and <boost/pointer_to_other.hpp>. pointer_traits is used to obtain pointer-related types and operations.
...
* Added examples for derivation_value_traits and member_value_traits and updated configuration.
2014-06-05 23:35:43 +02:00
Ion Gaztañaga
7fc779ff0d
Fixed #9948 : remove use of const_cast in intrusive containers.
...
Added tests for [s_]iterator_to.
2014-05-01 16:19:42 +02:00
Ion Gaztañaga
fc6d3cca5f
Reverted wrong commit SHA-1: 62367b52e1 and removed include to recently deleted "detail/clear_on_destructor_base.hpp" file.
2014-04-25 18:32:40 +02:00
Ion Gaztañaga
d7212a1a7c
Fixed #9940 ("bad bug in intrusive list with safe_link (or auto_unlink) hooks")
2014-04-24 10:47:20 +02:00
Ion Gaztañaga
6c623e8d16
Fixed #8468 . Added 64 bit prime values.
2014-03-18 17:06:38 +01:00