356 Commits

Author SHA1 Message Date
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
466ff07d15 Add operator! 2022-06-13 00:41:49 +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
d376c8b453 Added BOOST_INTRUSIVE_FORCEINLINE to constructor 2022-05-04 23:34:47 +02:00
Ion Gaztañaga
8be3b54d35 Add some BOOST_INTRUSIVE_FORCEINLINE to trivial functions, and take advantage of new algorithms like end_node and detach_and_dispose 2022-05-04 23:34:19 +02:00
Ion Gaztañaga
ba298c775e Add BOOST_INTRUSIVE_FORCEINLINE to some trivial functions 2022-05-04 23:16:16 +02:00
Ion Gaztañaga
482c0cfe83 Add pointer specialization for value_less 2022-05-04 22:55:51 +02:00
Ion Gaztañaga
1d6576e6d5 Add simple constructor for stateless slist_iterator 2022-05-04 22:55:24 +02:00
Ion Gaztañaga
dbde900bf9 Add end_node, is_empty, is_sentinel, set_sentinel, transfer_after and detach_and_dispose functions 2022-05-04 22:54:38 +02:00
Ion Gaztañaga
d70f8667e1 Add unlink_after_and_dispose and detach_and_dispose functions 2022-05-04 22:52:15 +02:00
Ion Gaztañaga
f8d3650131 Add is_empty function 2022-05-04 22:51:06 +02:00
Ion Gaztañaga
06d74a1709 Inject new Boost.Move iterator functions. 2022-01-12 00:58:41 +01: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
64743a7158 Increase minimum version for forceinline usage in MSVC as bad code generation was detected in some cases 2022-01-04 00:23:58 +01:00
Ion Gaztañaga
af99d7be6a Activate BOOST_MOVE_FORCEINLINE with GCC > 5, since some code generation problems were detected in tests executed under MingW. 2022-01-02 00:27:28 +01:00
Ion Gaztañaga
0be2758375 Convert boost::iterator traversal tags into std tags to avoid unneeded overloads that confuse some older compilers like MSVC 12 2021-12-30 23:08:53 +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
691154b887 Changes to support -Wcast-align=strict 2021-12-28 15:09:07 +01:00
Ion Gaztañaga
65353e038b Fix -Wshadow warnings 2021-12-27 14:37:12 +01:00
Ion Gaztañaga
87081669c3 Avoid -Wshadow warning 2021-12-27 00:45:36 +01:00
Tim Blechmann
d5b9a4eac0 list: fix remove / remove_and_dispose
`value_equal` is a simple wrapper to `operator==`, but does not bind the
argument to a predicate
2021-12-22 22:57:32 +08:00
Ion Gaztañaga
ac7dfda17a Merge pull request #66 from jarekpelczar/develop
list_iterator: Fix declaration of node shadowing member
2021-11-17 15:54:08 +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
bc8d455437 Rename iterator_next with unsigned distance to iterator_unext 2021-10-18 17:31:00 +02:00
Ion Gaztañaga
bd15948a5d Fix wrong #include <cstddef> place. 2021-10-18 17:17:41 +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
Jarosław Pelczar
7f35d14d83 list_iterator: Fix declaration of node shadowing member
When code is compiled with -Wshadow (outside GCC's "system" include
paths), the compiler will complain:

warning: declaration of ‘node’ shadows a member of ‘boost::intrusive::list_iterator<ValueTraits, IsConst>’

Signed-off-by: Jarosław Pelczar <jarek@jpelczar.com>
2021-08-16 10:36:33 +02:00
Ion Gaztañaga
79d2a6df4b Put swap tests inside generic associative container tests so that they are executed for every tree type. 2021-06-20 02:01:20 +02:00
Ion Gaztañaga
edb8f9e6fd Merge branch 'bugfix/node-swap' of https://github.com/dmsteck/intrusive into dmsteck-bugfix/node-swap 2021-06-19 20:49:07 +02:00
Ion Gaztañaga
cbc81b9417 Fixes #63 ("nop splice removes element") 2021-06-19 19:39:40 +02:00
Daniel Steck
300ffd2363 unintended whitespace change 2021-05-13 23:30:19 +01:00
Daniel Steck
8a652bd355 C++03 and (C) 2021-05-13 23:28:33 +01:00
Daniel Steck
d4e76658a1 initial commit 2021-05-13 23:21:05 +01:00
Ion Gaztañaga
a633906847 Fixes #59 ("Add noexcept support to the library"). 2021-04-19 11:17:48 +02:00
Ion Gaztañaga
1cec79608f Fixes #60 ("Licensing question for math.hpp"). Removes questioned, SO-based code since it was just an alternative version for non-MSVC/non-GCC compatible compilers. 2021-04-18 14:10:53 +02:00
Ion Gaztañaga
8bb619caf7 Fix indentation 2021-04-18 14:04:53 +02:00
Ion Gaztañaga
8a4c55a56d Merge pull request #57 from ecatmur/patch-1
UB: comparing unrelated pointers
2021-04-18 14:00:00 +02:00
Ion Gaztañaga
c03b16b269 fast_log2: silence unused variable warning. 2021-03-14 08:15:33 +01: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
5c5f596d12 twin: Add constructor from two objects 2021-01-15 20:43:59 +01:00
Ion Gaztañaga
f65f864f0e Include <stdlib.h> for _rotl in MSVC 2021-01-15 18:03:44 +01:00
Ion Gaztañaga
547c964381 - Reduced compile-time dependencies:
- linear_slist_algorithms use a simple node_ptr instead of std::pair on return.
  - list/slist use operator </operator == instead of std::equal_to/std::less.
2021-01-05 10:09:38 +01:00
Ion Gaztañaga
c3ac8668ae Introduce a simplified hash_combine to avoid pulling STL dependencies from container_hash/hash.hpp for extremely simple cases. 2021-01-05 00:05:17 +01: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
4d144d75da Fixes #54: ("set.rbegin() looks like O(log(N))") 2020-11-13 22:55:55 +01:00
Ion Gaztañaga
cb3752dbb1 Use custom placement to avoid warning/errors when using -fno-exceptions. 2020-10-22 01:11:05 +02:00
Ion Gaztañaga
77af03117e Merge pull request #48 from stellarscience/patch-1
MSVC "assignment within conditional" warning fix
2020-10-19 13:32:22 +02:00
Ion Gaztañaga
8879091c66 Merge pull request #49 from SiggyBar/develop
Fix empty control statement warnings.
2020-10-19 13:26:17 +02:00