Several of the pb_ds headers are intended to be included multiple times,
within the definition of various class templates. The including files
define macros like PB_DS_CLASS_C_DEC and PB_DS_GEN_POS before including
these headers.
In some cases the types defined in the headers are actually nested types
within other classes, and so should not have been documented as though
they are declared in the global namespace, as in:
https://gcc.gnu.org/onlinedocs/gcc-8.3.0/libstdc++/api/a12028.html
In other cases the headers provide inline member function definitions,
but when processed by Doxygen the class name "PB_DS_CLASS_C_DEC" is not
recognised.
This patch makes Doxygen ignore definitions that only make sense when
included in the right context with the right macros defined.
* 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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@270803
138bc75d-0d04-0410-961f-
82ee72b054a4
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