/*
This file is a part of libcds - Concurrent Data Structures library
- (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2016
+ (C) Copyright Maxim Khizhinsky (libcds.dev@gmail.com) 2006-2017
Source code repo: http://github.com/khizmax/libcds/
Download: http://sourceforge.net/projects/libcds/files/
-
+
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
typedef internal_bucket_type_ base_class;
public:
using base_class::base_class;
- using base_class::node_type;
+ using typename base_class::node_type;
using base_class::alloc_node;
using base_class::insert_node;
using base_class::node_to_value;
*/
iterator begin()
{
- return iterator( m_Buckets[0].begin(), m_Buckets, m_Buckets + bucket_count() );
+ return iterator( m_Buckets[0].begin(), m_Buckets, m_Buckets + bucket_count());
}
/// Returns an iterator that addresses the location succeeding the last element in a set
*/
iterator end()
{
- return iterator( m_Buckets[bucket_count() - 1].end(), m_Buckets + bucket_count() - 1, m_Buckets + bucket_count() );
+ return iterator( m_Buckets[bucket_count() - 1].end(), m_Buckets + bucket_count() - 1, m_Buckets + bucket_count());
}
/// Returns a forward const iterator addressing the first element in a set
size_t nMaxItemCount, ///< estimation of max item count in the hash set
size_t nLoadFactor ///< load factor: estimation of max number of items in the bucket
) : m_nHashBitmask( michael_set::details::init_hash_bitmask( nMaxItemCount, nLoadFactor ))
- , m_Buckets( bucket_table_allocator().allocate( bucket_count() ) )
+ , m_Buckets( bucket_table_allocator().allocate( bucket_count()))
{
for ( auto it = m_Buckets, itEnd = m_Buckets + bucket_count(); it != itEnd; ++it )
construct_bucket<bucket_stat>( it );
clear();
for ( auto it = m_Buckets, itEnd = m_Buckets + bucket_count(); it != itEnd; ++it )
it->~internal_bucket_type();
- bucket_table_allocator().deallocate( m_Buckets, bucket_count() );
+ bucket_table_allocator().deallocate( m_Buckets, bucket_count());
}
/// Inserts new node
internal_bucket_type& refBucket = bucket( val );
bucket_iterator it = refBucket.insert( val );
- if ( it != refBucket.end() ) {
+ if ( it != refBucket.end()) {
++m_ItemCounter;
- return iterator( it, &refBucket, m_Buckets + bucket_count() );
+ return iterator( it, &refBucket, m_Buckets + bucket_count());
}
return end();
typename internal_bucket_type::node_type * pNode = internal_bucket_type::alloc_node( std::forward<Args>( args )... );
internal_bucket_type& refBucket = bucket( internal_bucket_type::node_to_value( *pNode ));
bucket_iterator it = refBucket.insert_node( pNode );
- if ( it != refBucket.end() ) {
+ if ( it != refBucket.end()) {
++m_ItemCounter;
- return iterator( it, &refBucket, m_Buckets + bucket_count() );
+ return iterator( it, &refBucket, m_Buckets + bucket_count());
}
return end();
internal_bucket_type& refBucket = bucket( val );
std::pair<bucket_iterator, bool> ret = refBucket.update( val, bAllowInsert );
- if ( ret.first != refBucket.end() ) {
+ if ( ret.first != refBucket.end()) {
if ( ret.second )
++m_ItemCounter;
- return std::make_pair( iterator( ret.first, &refBucket, m_Buckets + bucket_count() ), ret.second );
+ return std::make_pair( iterator( ret.first, &refBucket, m_Buckets + bucket_count()), ret.second );
}
return std::make_pair( end(), ret.second );
}
{
internal_bucket_type& refBucket = bucket( key );
bucket_iterator it = refBucket.contains( key );
- if ( it != refBucket.end() )
- return iterator( it, &refBucket, m_Buckets + bucket_count() );
+ if ( it != refBucket.end())
+ return iterator( it, &refBucket, m_Buckets + bucket_count());
return end();
}
{
internal_bucket_type& refBucket = bucket( key );
bucket_iterator it = refBucket.contains( key, pred );
- if ( it != refBucket.end() )
- return iterator( it, &refBucket, m_Buckets + bucket_count() );
+ if ( it != refBucket.end())
+ return iterator( it, &refBucket, m_Buckets + bucket_count());
return end();
}
const_iterator get_const_begin() const
{
- return const_iterator( const_cast<internal_bucket_type const&>(m_Buckets[0]).begin(), m_Buckets, m_Buckets + bucket_count() );
+ return const_iterator( const_cast<internal_bucket_type const&>(m_Buckets[0]).begin(), m_Buckets, m_Buckets + bucket_count());
}
const_iterator get_const_end() const
{
- return const_iterator( const_cast<internal_bucket_type const&>(m_Buckets[bucket_count() - 1]).end(), m_Buckets + bucket_count() - 1, m_Buckets + bucket_count() );
+ return const_iterator( const_cast<internal_bucket_type const&>(m_Buckets[bucket_count() - 1]).end(), m_Buckets + bucket_count() - 1, m_Buckets + bucket_count());
}
//@endcond
};