2019-05-02 Jonathan Wakely <jwakely@redhat.com>
+ * include/ext/pb_ds/detail/bin_search_tree_/*_imps.hpp: Do not define
+ anything unless PB_DS_CLASS_C_DEC is defined.
+ * include/ext/pb_ds/detail/binary_heap_/*_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/binomial_heap_/*_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/binomial_heap_base_/*_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/cc_hash_table_map_/*_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/gp_hash_table_map_/*_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/hash_fn/*_imp.hpp: Likewise.
+ * include/ext/pb_ds/detail/left_child_next_sibling_heap_/*_imps.hpp:
+ Likewise.
+ * include/ext/pb_ds/detail/list_update_map_/*_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/ov_tree_map_/*_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/pairing_heap_/*_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/pat_trie_/*_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/rb_tree_map_/*_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/rc_binomial_heap_/*_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/resize_policy*_imp.hpp: Likewise.
+ * include/ext/pb_ds/detail/splay_tree_/*_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/thin_heap_/*_imps.hpp: Likewise.
+ * include/ext/pb_ds/detail/trie_policy*_imp.hpp: Likewise.
+ * include/ext/pb_ds/detail/unordered_iterator/const_iterator.hpp:
+ Likewise.
+ * include/ext/pb_ds/detail/unordered_iterator/iterator.hpp: Likewise.
+ * include/ext/pb_ds/detail/unordered_iterator/point_const_iterator.hpp:
+ Likewise.
+ * include/ext/pb_ds/detail/unordered_iterator/point_iterator.hpp:
+ Likewise.
+
* doc/doxygen/user.cfg.in: Regenerate with Doxygen 1.8.14 and set
GROUP_NESTED_COMPOUNDS=YES and SORT_BY_SCOPE_NAME=NO. Add various
_GLIBCXX_xxx macros and __attribute__(X) to PREDEFINED macros that
* Contains an implementation class for bin_search_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
typename PB_DS_CLASS_C_DEC::node_allocator
PB_DS_CLASS_C_DEC::s_node_allocator;
m_p_head->m_p_right = p_max;
}
}
-
+#endif
* Contains an implementation class for bin_search_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef _GLIBCXX_DEBUG
PB_DS_CLASS_T_DEC
{ PB_DS_DEBUG_VERIFY(recursive_count(m_p_head->m_p_parent) == m_size); }
#endif
+#endif
* Contains an implementation class for bin_search_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline void
PB_DS_CLASS_C_DEC::
p_nd->~node();
s_node_allocator.deallocate(p_nd, 1);
}
+#endif
* Contains an implementation class for bin_search_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::point_const_iterator
PB_DS_CLASS_C_DEC::
}
return point_const_iterator(ret);
}
+#endif
* Contains an implementation class for bin_search_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
_GLIBCXX_NODISCARD
inline bool
return (s_node_allocator.max_size());
}
+#endif
* Contains an implementation class for bin_search_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool>
PB_DS_CLASS_C_DEC::
++m_size;
return p_new_nd;
}
+#endif
* Contains an implementation class for bin_search_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::iterator
PB_DS_CLASS_C_DEC::
return (node_iterator(0));
}
+#endif
* Contains an implementation class for bin_search_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
Cmp_Fn&
PB_DS_CLASS_C_DEC::
get_cmp_fn() const
{ return (*this); }
+#endif
* Contains an implementation class for bin_search_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline void
PB_DS_CLASS_C_DEC::
p_nd->~Node();
s_node_allocator.deallocate(p_nd, 1);
}
+#endif
* Contains imps for rotating nodes.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline void
PB_DS_CLASS_C_DEC::
update_to_top(node_pointer /*p_nd*/, null_node_update_pointer /*p_update*/)
{ }
+#endif
* Contains an implementation class for bin_search_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
bool
PB_DS_CLASS_C_DEC::
return 1 + recursive_count(p->m_p_left) + recursive_count(p->m_p_right);
}
+#endif
* Contains an implementation class for binary_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
typename PB_DS_CLASS_C_DEC::entry_allocator
PB_DS_CLASS_C_DEC::s_entry_allocator;
erase_at(m_a_entries, i, s_no_throw_copies_ind);
s_entry_allocator.deallocate(m_a_entries, m_actual_size);
}
+#endif
* Contains an implementation class for a binary_heap.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef _GLIBCXX_DEBUG
PB_DS_CLASS_T_DEC
}
#endif
+#endif
* Contains an implementation class for a binary_heap.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
void
PB_DS_CLASS_C_DEC::
return left;
}
+#endif
* Contains an implementation class for a binary_heap.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::const_reference
PB_DS_CLASS_C_DEC::
PB_DS_CLASS_C_DEC::
parent(size_type i)
{ return (i - 1) / 2; }
+#endif
* Contains an implementation class for a binary_heap.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
_GLIBCXX_NODISCARD
inline bool
max_size() const
{ return s_entry_allocator.max_size(); }
+#endif
* Contains an implementation class for a binary_heap.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::point_iterator
PB_DS_CLASS_C_DEC::
value_type tmp(r_new_val);
(*p_e)->swap(tmp);
}
+#endif
* Contains an implementation class for a binary_heap.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::iterator
PB_DS_CLASS_C_DEC::
end() const
{ return const_iterator(m_a_entries + m_size); }
+#endif
* Contains an implementation class for a binary_heap.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
Cmp_Fn&
PB_DS_CLASS_C_DEC::
return (*this);
}
+#endif
* Contains an implementation class for a binary_heap.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
template<typename Pred>
void
PB_DS_ASSERT_VALID((*this))
PB_DS_ASSERT_VALID(other)
}
+#endif
* Contains an implementation class for a binary_heap.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef PB_DS_BINARY_HEAP_TRACE_
PB_DS_CLASS_T_DEC
}
#endif // #ifdef PB_DS_BINARY_HEAP_TRACE_
+#endif
* Contains an implementation for binomial_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
PB_DS_CLASS_C_DEC::
binomial_heap()
PB_DS_CLASS_T_DEC
PB_DS_CLASS_C_DEC::
~binomial_heap() { }
+#endif
* Contains an implementation for binomial_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef _GLIBCXX_DEBUG
PB_DS_CLASS_T_DEC
{ base_type::assert_valid(true, __file, __line); }
#endif
+#endif
* Contains an implementation class for a base of binomial heaps.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
template<typename It>
void
PB_DS_CLASS_C_DEC::
~binomial_heap_base()
{ }
+#endif
* Contains an implementation class for a base of binomial heaps.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef _GLIBCXX_DEBUG
PB_DS_CLASS_T_DEC
}
#endif
+#endif
* Contains an implementation class for a base of binomial heaps.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
void
PB_DS_CLASS_C_DEC::
PB_DS_ASSERT_VALID_COND((*this),true)
return ersd;
}
+#endif
* Contains an implementation class for a base of binomial heaps.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::const_reference
PB_DS_CLASS_C_DEC::
}
}
+#endif
* Contains an implementation class for a base of binomial heaps.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::point_iterator
PB_DS_CLASS_C_DEC::
m_p_max = 0;
PB_DS_ASSERT_VALID_COND((*this),true)
}
+#endif
* Contains an implementation class for a base of binomial heaps.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
template<typename Pred>
void
return p_ret;
}
+#endif
* functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
template<typename Other_HT_Map_Type>
bool
PB_DS_CLASS_C_DEC::
operator!=(const Other_HT_Map_Type& other) const
{ return !operator==(other); }
+#endif
* and related functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
typename PB_DS_CLASS_C_DEC::entry_allocator
PB_DS_CLASS_C_DEC::s_entry_allocator;
Resize_Policy::notify_cleared();
ranged_hash_fn_base::notify_resized(m_num_e);
}
+#endif
* and related functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline void
PB_DS_CLASS_C_DEC::
m_entries[pos] = p;
_GLIBCXX_DEBUG_ONLY(debug_base::insert_new(r_key);)
}
+#endif
* and related functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline void
PB_DS_CLASS_C_DEC::
m_entries[pos] = p;
_GLIBCXX_DEBUG_ONLY(debug_base::insert_new(r_key);)
}
+#endif
* Contains implementations of cc_ht_map_'s debug-mode functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef _GLIBCXX_DEBUG
PB_DS_CLASS_T_DEC
#include <ext/pb_ds/detail/cc_hash_table_map_/debug_no_store_hash_fn_imps.hpp>
#endif
+#endif
* Contains implementations of cc_ht_map_'s debug-mode functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef _GLIBCXX_DEBUG
PB_DS_CLASS_T_DEC
{ debug_base::check_key_exists(PB_DS_V2F(p->m_value), __file, __line); }
#endif
+#endif
* Contains implementations of cc_ht_map_'s debug-mode functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef _GLIBCXX_DEBUG
PB_DS_CLASS_T_DEC
}
#endif
+#endif
* Contains implementations of cc_ht_map_'s entry-list related functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
void
PB_DS_CLASS_C_DEC::
s_entry_allocator.deallocate(p_e, 1);
}
+#endif
* Contains implementations of cc_ht_map_'s erase related functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline void
PB_DS_CLASS_C_DEC::
#include <ext/pb_ds/detail/cc_hash_table_map_/erase_no_store_hash_fn_imps.hpp>
#include <ext/pb_ds/detail/cc_hash_table_map_/erase_store_hash_fn_imps.hpp>
+#endif
* when the hash value is not stored.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline bool
PB_DS_CLASS_C_DEC::
p_e = p_next_e;
}
}
+#endif
* when the hash value is stored.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline bool
PB_DS_CLASS_C_DEC::
p_e = p_next_e;
}
}
+#endif
* Contains implementations of cc_ht_map_'s find related functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::point_iterator
PB_DS_CLASS_C_DEC::
find_end() const
{ return 0; }
+#endif
* functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::size_type
PB_DS_CLASS_C_DEC::
PB_DS_CLASS_C_DEC::
operator!=(const Other_HT_Map_Type& other) const
{ return !operator==(other); }
+#endif
* when the hash value is not stored.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool>
PB_DS_CLASS_C_DEC::
return std::make_pair(insert_new_imp(r_val, pos), true);
}
+#endif
* when the hash value is stored.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool>
PB_DS_CLASS_C_DEC::
return std::make_pair(insert_new_imp(r_val, pos_hash_pair), true);
}
+#endif
* begin().
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
typename PB_DS_CLASS_C_DEC::iterator
PB_DS_CLASS_C_DEC::s_end_it;
end() const
{ return s_const_end_it; }
+#endif
* functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
Hash_Fn&
PB_DS_CLASS_C_DEC::
PB_DS_CLASS_C_DEC::
get_resize_policy() const
{ return *this; }
+#endif
* Contains implementations of cc_ht_map_'s resize related functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline bool
PB_DS_CLASS_C_DEC::
#include <ext/pb_ds/detail/cc_hash_table_map_/resize_no_store_hash_fn_imps.hpp>
#include <ext/pb_ds/detail/cc_hash_table_map_/resize_store_hash_fn_imps.hpp>
+#endif
* hash value is not stored.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::entry_pointer
PB_DS_CLASS_C_DEC::
a_p_entries_resized[hash_pos] = p_e;
return p_next_e;
}
+#endif
* hash value is stored.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::entry_pointer
PB_DS_CLASS_C_DEC::
a_p_entries_resized[pos_hash_pair.first] = p_e;
return p_next_e;
}
+#endif
* functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::size_type
PB_DS_CLASS_C_DEC::
max_size() const
{ return s_entry_allocator.max_size(); }
+#endif
* Contains implementations of cc_ht_map_'s trace-mode functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef PB_DS_HT_MAP_TRACE_
PB_DS_CLASS_T_DEC
}
#endif
+#endif
* and related functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
typename PB_DS_CLASS_C_DEC::entry_allocator
PB_DS_CLASS_C_DEC::s_entry_allocator;
m_entries[i].m_stat = empty_entry_status;
}
+#endif
* and related functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline void
PB_DS_CLASS_C_DEC::
p_e->m_stat = valid_entry_status;
_GLIBCXX_DEBUG_ONLY(debug_base::insert_new(p_e->m_value.first);)
}
+#endif
* and related functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline void
PB_DS_CLASS_C_DEC::
p_e->m_stat = valid_entry_status;
_GLIBCXX_DEBUG_ONLY(debug_base::insert_new(p_e->m_value.first);)
}
+#endif
* Contains implementations of gp_ht_map_'s debug-mode functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef _GLIBCXX_DEBUG
PB_DS_CLASS_T_DEC
#include <ext/pb_ds/detail/gp_hash_table_map_/debug_store_hash_fn_imps.hpp>
#endif
+#endif
* Contains implementations of gp_ht_map_'s debug-mode functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef _GLIBCXX_DEBUG
PB_DS_CLASS_T_DEC
}
#endif
+#endif
* Contains implementations of gp_ht_map_'s debug-mode functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef _GLIBCXX_DEBUG
PB_DS_CLASS_T_DEC
}
#endif
+#endif
* Contains implementations of gp_ht_map_'s erase related functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline void
PB_DS_CLASS_C_DEC::
#include <ext/pb_ds/detail/gp_hash_table_map_/erase_no_store_hash_fn_imps.hpp>
#include <ext/pb_ds/detail/gp_hash_table_map_/erase_store_hash_fn_imps.hpp>
+#endif
* when the hash value is not stored.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline bool
PB_DS_CLASS_C_DEC::
return false;
}
+#endif
* when the hash value is stored.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline bool
PB_DS_CLASS_C_DEC::
return false;
}
+#endif
* Contains implementations of gp_ht_map_'s find related functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::point_iterator
PB_DS_CLASS_C_DEC::
find_end() const
{ return 0; }
+#endif
* when the hash value is not stored.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::pointer
PB_DS_CLASS_C_DEC::
* functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::size_type
PB_DS_CLASS_C_DEC::
PB_DS_CLASS_C_DEC::
empty() const
{ return (size() == 0); }
+#endif
* when the hash value is not stored.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::size_type
PB_DS_CLASS_C_DEC::
return std::make_pair(insert_new_imp(r_val, pos), true);
}
+#endif
* when the hash value is stored.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::comp_hash
PB_DS_CLASS_C_DEC::
return std::make_pair(insert_new_imp(r_val, pos_hash_pair), true);
}
+#endif
* begin().
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
typename PB_DS_CLASS_C_DEC::iterator
PB_DS_CLASS_C_DEC::s_end_it;
end() const
{ return s_const_end_it; }
+#endif
* functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
Hash_Fn&
PB_DS_CLASS_C_DEC::
PB_DS_CLASS_C_DEC::
get_resize_policy() const
{ return *this; }
+#endif
* Contains implementations of gp_ht_map_'s resize related functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline bool
PB_DS_CLASS_C_DEC::
#include <ext/pb_ds/detail/gp_hash_table_map_/resize_no_store_hash_fn_imps.hpp>
#include <ext/pb_ds/detail/gp_hash_table_map_/resize_store_hash_fn_imps.hpp>
+#endif
* hash value is not stored.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline void
PB_DS_CLASS_C_DEC::
__throw_insert_error();
}
+#endif
* hash value is stored.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline void
PB_DS_CLASS_C_DEC::
__throw_insert_error();
}
+#endif
* Contains implementations of gp_ht_map_'s trace-mode functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef PB_DS_HT_MAP_TRACE_
PB_DS_CLASS_T_DEC
}
#endif // #ifdef PB_DS_HT_MAP_TRACE_
+#endif
* Contains a range-hashing policy implementation
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
void
PB_DS_CLASS_C_DEC::
operator()(size_type hash) const
{ return mask_based_base::range_hash(hash); }
+#endif
* Contains a range-hashing policy implementation
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
void
PB_DS_CLASS_C_DEC::
operator()(size_type hash) const
{ return mod_based_base::range_hash(hash); }
+#endif
* Contains a probe policy implementation
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline void
PB_DS_CLASS_C_DEC::
{
return (i);
}
+#endif
* Contains a probe policy implementation
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline void
PB_DS_CLASS_C_DEC::
{
return (i* i);
}
+#endif
* Contains an implementation class for left_child_next_sibling_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
typename PB_DS_CLASS_C_DEC::node_allocator
PB_DS_CLASS_C_DEC::s_node_allocator;
return p_ret;
}
+#endif
* Contains an implementation class for left_child_next_sibling_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef _GLIBCXX_DEBUG
PB_DS_CLASS_T_DEC
}
#endif
+#endif
* Contains an implementation class for left_child_next_sibling_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
void
PB_DS_CLASS_C_DEC::
}
}
+#endif
* Contains an implementation class for left_child_next_sibling_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
_GLIBCXX_NODISCARD
inline bool
return (s_node_allocator.max_size());
}
+#endif
* Contains an implementation class for left_child_next_sibling_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::node_pointer
PB_DS_CLASS_C_DEC::
_GLIBCXX_DEBUG_ASSERT(parent(p_parent) == p_nd);
}
+#endif
* Contains an implementation class for left_child_next_sibling_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::iterator
PB_DS_CLASS_C_DEC::
return (const_iterator(0));
}
+#endif
* Contains an implementation class for left_child_next_sibling_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
Cmp_Fn&
PB_DS_CLASS_C_DEC::
get_cmp_fn() const
{ return *this; }
+#endif
* Contains an implementation class for left_child_next_sibling_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef PB_DS_LC_NS_HEAP_TRACE_
PB_DS_CLASS_T_DEC
{ }
#endif // #ifdef PB_DS_LC_NS_HEAP_TRACE_
+#endif
* @file list_update_map_/constructor_destructor_fn_imps.hpp
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
typename PB_DS_CLASS_C_DEC::entry_allocator
PB_DS_CLASS_C_DEC::s_entry_allocator;
PB_DS_CLASS_C_DEC::
~PB_DS_LU_NAME()
{ deallocate_all(); }
+#endif
* Contains implementations of cc_ht_map_'s debug-mode functions.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef _GLIBCXX_DEBUG
PB_DS_CLASS_T_DEC
}
#endif
+#endif
* Contains implementations of lu_map_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline bool
PB_DS_CLASS_C_DEC::
s_entry_allocator.deallocate(p_l, 1);
}
+#endif
* Contains implementations of lu_map_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::entry_pointer
PB_DS_CLASS_C_DEC::
apply_update(entry_pointer, type_to_type<null_type>)
{ return s_update_policy(s_null_type); }
+#endif
* Contains implementations of lu_map_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::size_type
PB_DS_CLASS_C_DEC::
PB_DS_CLASS_C_DEC::
empty() const
{ return (m_p_l == 0); }
+#endif
* Contains implementations of lu_map_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline std::pair<
typename PB_DS_CLASS_C_DEC::point_iterator,
init_entry_metadata(entry_pointer, type_to_type<null_type>)
{ }
+#endif
* Contains implementations of lu_map_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::iterator
PB_DS_CLASS_C_DEC::
return const_iterator(0, 0, const_cast<PB_DS_CLASS_C_DEC*>(this));
}
+#endif
* Contains implementations of lu_map_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef PB_DS_LU_MAP_TRACE_
PB_DS_CLASS_T_DEC
#endif
+#endif
* Contains an implementation class for ov_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
typename PB_DS_CLASS_C_DEC::value_allocator
PB_DS_CLASS_C_DEC::s_value_alloc;
node_update::operator()(nd_it, end_it);
}
}
+#endif
* Contains an implementation class for ov_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef _GLIBCXX_DEBUG
PB_DS_CLASS_T_DEC
}
#endif
+#endif
* Contains an implementation class for ov_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
void
PB_DS_CLASS_C_DEC::
erase(it);
return true;
}
+#endif
* Contains an implementation class for ov_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::size_type
PB_DS_CLASS_C_DEC::
PB_DS_CLASS_C_DEC::
empty() const
{ return size() == 0; }
+#endif
* Contains an implementation class for ov_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
void
PB_DS_CLASS_C_DEC::
std::swap(m_a_metadata, a_new_metadata_vec);
}
+#endif
* Contains an implementation class for ov_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::node_const_iterator
PB_DS_CLASS_C_DEC::
end(),(m_a_metadata == 0) ? 0 : m_a_metadata + m_size);
}
+#endif
* Contains an implementation class for ov_tree.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
Cmp_Fn&
PB_DS_CLASS_C_DEC::
PB_DS_CLASS_C_DEC::
get_cmp_fn() const
{ return *this; }
+#endif
* Contains an implementation class for ov_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
void
PB_DS_CLASS_C_DEC::
PB_DS_ASSERT_VALID((*this))
PB_DS_ASSERT_VALID(other)
}
+#endif
* Contains an implementation class for a pairing heap.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
template<typename It>
void
PB_DS_CLASS_C_DEC::
~pairing_heap()
{ }
+#endif
* Contains an implementation class for a pairing heap.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef _GLIBCXX_DEBUG
PB_DS_CLASS_T_DEC
}
#endif
+#endif
* Contains an implementation class for a pairing heap.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
void
PB_DS_CLASS_C_DEC::
return ersd;
}
+#endif
* Contains an implementation class for a pairing heap.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::const_reference
PB_DS_CLASS_C_DEC::
_GLIBCXX_DEBUG_ASSERT(!base_type::empty());
return base_type::m_p_root->m_value;
}
+#endif
* Contains an implementation class for a pairing heap.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::point_iterator
PB_DS_CLASS_C_DEC::
push_imp(it.m_p_nd);
PB_DS_ASSERT_VALID((*this))
}
+#endif
* Contains an implementation class for a pairing heap.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
template<typename Pred>
void
PB_DS_ASSERT_VALID((*this))
PB_DS_ASSERT_VALID(other)
}
+#endif
* Contains an implementation class for pat_trie.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
typename PB_DS_CLASS_C_DEC::head_allocator
PB_DS_CLASS_C_DEC::s_head_allocator;
apply_update(p_ret, (node_update*)this);
return p_ret;
}
+#endif
* Contains an implementation class for pat_trie_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef _GLIBCXX_DEBUG
PB_DS_CLASS_T_DEC
}
#endif
+#endif
* Contains an implementation class for pat_trie.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline bool
PB_DS_CLASS_C_DEC::
m_p_head->m_p_max = it.m_p_nd;
}
}
+#endif
* Contains an implementation class for pat_trie.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::point_iterator
PB_DS_CLASS_C_DEC::
return static_cast<inode_pointer>(p_nd)->rightmost_descendant();
}
+#endif
* Contains an implementation class for pat_trie.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
_GLIBCXX_NODISCARD
inline bool
max_size() const
{ return s_inode_allocator.max_size(); }
+#endif
* Contains an implementation class for pat_trie.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
void
PB_DS_CLASS_C_DEC::
synth_access_traits::cmp_keys(PB_DS_V2F(static_cast<leaf_const_pointer>(m_p_head->m_p_max)->value()), PB_DS_V2F(p_new_lf->value())))
m_p_head->m_p_max = p_new_lf;
}
+#endif
* Contains an implementation class for pat_trie.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::iterator
PB_DS_CLASS_C_DEC::
node_end()
{ return node_iterator(0, this); }
+#endif
* Contains an implementation class for pat_trie.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
typename PB_DS_CLASS_C_DEC::access_traits&
PB_DS_CLASS_C_DEC::
PB_DS_CLASS_C_DEC::
get_node_update() const
{ return *this; }
+#endif
* Contains an implementation class for pat_trie.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline void
PB_DS_CLASS_C_DEC::
s_node_allocator.deallocate(p_nd, 1);
}
+#endif
* Contains imps for rotating nodes.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline void
PB_DS_CLASS_C_DEC::
update_to_top(node_pointer /*p_nd*/, __gnu_pbds::null_node_update* /*p_update*/)
{ }
+#endif
* Contains an implementation class for pat_trie.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
void
PB_DS_CLASS_C_DEC::
apply_update(m_p_head->m_p_parent, (node_update*)this);
PB_DS_ASSERT_NODE_VALID(m_p_head->m_p_parent)
}
+#endif
* Contains an implementation class for pat_trie_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef PB_DS_PAT_TRIE_TRACE_
PB_DS_CLASS_T_DEC
#endif
+#endif
* Contains an implementation class for pat_trie_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline void
PB_DS_CLASS_C_DEC::
Node_Update_::operator()(node_iterator(p_nd, this),
node_const_iterator(0, this));
}
+#endif
* Contains an implementation for rb_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
template<typename It>
void
PB_DS_CLASS_C_DEC::
initialize()
{ base_type::m_p_head->m_red = true; }
+#endif
* Contains an implementation for rb_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef _GLIBCXX_DEBUG
PB_DS_CLASS_T_DEC
#endif
+#endif
* Contains an implementation for rb_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline bool
PB_DS_CLASS_C_DEC::
if (p_x != 0)
p_x->m_red = false;
}
+#endif
* Contains an implementation for rb_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline bool
PB_DS_CLASS_C_DEC::
is_effectively_black(const node_pointer p_nd)
{ return (p_nd == 0 || !p_nd->m_red); }
+#endif
* Contains an implementation for rb_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool>
PB_DS_CLASS_C_DEC::
base_type::update_to_top(p_nd, (node_update* )this);
base_type::m_p_head->m_p_parent->m_red = false;
}
+#endif
* Contains an implementation for rb_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline void
PB_DS_CLASS_C_DEC::
PB_DS_STRUCT_ONLY_ASSERT_VALID(other)
}
+#endif
* Contains an implementation for rc_binomial_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
PB_DS_CLASS_C_DEC::
rc_binomial_heap()
PB_DS_ASSERT_VALID((*this))
PB_DS_ASSERT_VALID(other)
}
+#endif
* Contains an implementation for rc_binomial_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef _GLIBCXX_DEBUG
PB_DS_CLASS_T_DEC
}
#endif
+#endif
* Contains an implementation for rc_binomial_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline void
PB_DS_CLASS_C_DEC::
base_type::find_max();
}
+#endif
* Contains an implementation for rc_binomial_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::point_iterator
PB_DS_CLASS_C_DEC::
if (p_res->m_p_next_sibling != 0&& p_res->m_metadata == p_res->m_p_next_sibling->m_metadata)
m_rc.push(p_res);
}
+#endif
* Contains an implementation for rc_binomial_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
template<typename Pred>
void
PB_DS_ASSERT_VALID(other)
}
+#endif
* Contains an implementation for rc_binomial_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef PB_DS_RC_BINOMIAL_HEAP_TRACE_
PB_DS_CLASS_T_DEC
}
#endif // #ifdef PB_DS_RC_BINOMIAL_HEAP_TRACE_
+#endif
* Contains a resize trigger implementation.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
PB_DS_CLASS_C_DEC::
cc_hash_max_collision_check_resize_trigger(float load) :
calc_resize_needed();
}
+#endif
* Contains a resize size policy implementation.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
PB_DS_CLASS_C_DEC::
hash_exponential_size_policy(size_type start_size, size_type grow_factor) :
return ret;
}
+#endif
* Contains a resize trigger implementation.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#define PB_DS_ASSERT_VALID(X) \
_GLIBCXX_DEBUG_ONLY(X.assert_valid(__FILE__, __LINE__);)
# undef PB_DS_DEBUG_VERIFY
#endif
#undef PB_DS_ASSERT_VALID
+#endif
* Contains a resize size policy implementation.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#pragma GCC system_header
namespace detail
return m_start_size;
return *p_lower;
}
+#endif
* Contains a resize policy implementation.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
PB_DS_CLASS_C_DEC::
hash_standard_resize_policy()
get_size_policy() const
{ return *this; }
+#endif
* Contains an implementation class for splay_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
template<typename It>
void
PB_DS_CLASS_C_DEC::
initialize()
{ base_type::m_p_head->m_special = true; }
+#endif
* Contains an implementation class for splay_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef _GLIBCXX_DEBUG
PB_DS_CLASS_T_DEC
#endif
+#endif
* Contains an implementation class for splay_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline bool
PB_DS_CLASS_C_DEC::
p_nd = p_nd->m_p_left;
return p_nd;
}
+#endif
* Contains an implementation class for splay_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::point_iterator
PB_DS_CLASS_C_DEC::
p_nd = p_nd->m_p_right;
return base_type::m_p_head;
}
+#endif
* Contains an implementation class for splay_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline std::pair<typename PB_DS_CLASS_C_DEC::point_iterator, bool>
PB_DS_CLASS_C_DEC::
return std::make_pair(this->insert_leaf_new(r_value, p_nd, false), true);
}
+#endif
* Contains an implementation class for splay_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
void
PB_DS_CLASS_C_DEC::
this->apply_update(p_nd, (node_update*)this);
PB_DS_ASSERT_BASE_NODE_CONSISTENT(p_nd)
}
+#endif
* Contains an implementation class for splay_tree_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline void
PB_DS_CLASS_C_DEC::
PB_DS_ASSERT_VALID(other)
}
+#endif
* Contains an implementation for thin_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
template<typename It>
void
initialize()
{ std::fill(m_a_aux, m_a_aux + max_rank, static_cast<node_pointer>(0)); }
+#endif
* Contains an implementation for thin_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef _GLIBCXX_DEBUG
PB_DS_CLASS_T_DEC
}
#endif
+#endif
* Contains an implementation for thin_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
void
PB_DS_CLASS_C_DEC::
return (p_upper - g_a_rank_bounds);
}
+#endif
* Contains an implementation for thin_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::const_reference
PB_DS_CLASS_C_DEC::
_GLIBCXX_DEBUG_ASSERT(m_p_max != 0);
return m_p_max->m_value;
}
+#endif
* Contains an implementation for thin_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::point_iterator
PB_DS_CLASS_C_DEC::
m_p_max = p_nd;
}
+#endif
* Contains an implementation for thin_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
template<typename Pred>
void
PB_DS_ASSERT_VALID((*this))
PB_DS_ASSERT_VALID(other)
}
+#endif
* Contains an implementation class for left_child_next_sibling_heap_.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
#ifdef PB_DS_THIN_HEAP_TRACE_
PB_DS_CLASS_T_DEC
}
#endif // #ifdef PB_DS_THIN_HEAP_TRACE_
+#endif
* Contains forward declarations for order_statistics_key
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::iterator
PB_DS_CLASS_C_DEC::
PB_DS_CLASS_C_DEC::
~tree_order_statistics_node_update()
{ }
+#endif
* Contains forward declarations for order_statistics_key
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
inline typename PB_DS_CLASS_C_DEC::iterator
PB_DS_CLASS_C_DEC::
const size_type res = (num_children == 0) ? 1 : children_rank;
const_cast<size_type&>(nd_it.get_metadata()) = res;
}
+#endif
* Contains an implementation of prefix_search_node_update.
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
std::pair<
typename PB_DS_CLASS_C_DEC::const_iterator,
PB_DS_CLASS_C_DEC::
operator()(node_iterator /*nd_it*/, node_const_iterator /*end_nd_it*/) const
{ }
+#endif
* a string for a vector-based PATRICIA tree
*/
+#ifdef PB_DS_CLASS_C_DEC
+
PB_DS_CLASS_T_DEC
detail::integral_constant<int, Reverse> PB_DS_CLASS_C_DEC::s_rev_ind;
{
return (r_key.rend());
}
+#endif
* @file unordered_iterator/const_iterator.hpp
* Contains an iterator class used for const ranging over the elements of the
* table.
+ *
+ * This file is intended to be included inside a class definition, with
+ * PB_DS_CLASS_C_DEC defined to the name of the enclosing class.
*/
+#ifdef PB_DS_CLASS_C_DEC
/// Const range-type iterator.
class const_iterator_
: public point_const_iterator_
friend class PB_DS_CLASS_C_DEC;
};
+#endif
/**
* @file iterator.hpp
* Contains an iterator_ class used for ranging over the elements of the
- * table.
+ * table.
+ *
+ * This file is intended to be included inside a class definition, with
+ * PB_DS_CLASS_C_DEC defined to the name of the enclosing class.
*/
+#ifdef PB_DS_CLASS_C_DEC
/// Range-type iterator.
class iterator_
: public const_iterator_
friend class PB_DS_CLASS_C_DEC;
};
+#endif
/**
* @file unordered_iterator/point_const_iterator.hpp
* Contains an iterator class returned by the tables' const find and insert
- * methods.
+ * methods.
+ *
+ * * This file is intended to be included inside a class definition, with
+ * PB_DS_CLASS_C_DEC defined to the name of the enclosing class.
*/
+#ifdef PB_DS_CLASS_C_DEC
class point_iterator_;
/// Const point-type iterator.
friend class PB_DS_CLASS_C_DEC;
};
-
+#endif
/**
* @file point_iterator.hpp
* Contains an iterator class returned by the tables' find and insert
- * methods.
+ * methods.
+ *
+ * This file is intended to be included inside a class definition, with
+ * PB_DS_CLASS_C_DEC defined to the name of the enclosing class.
*/
+#ifdef PB_DS_CLASS_C_DEC
/// Find type iterator.
class point_iterator_
{
protected:
pointer m_p_value;
};
+#endif