__GNU_PBDS::DETAIL::OV_TREE_NODE_IT_(3cxx)

πŸ’– NAME

ok so bestie, you're on the 3cxx page β€” that's the libstdc++ man page zone β€” and the header up top got so aggressively truncated it's literally __gnu_pbds::de..._Type, _Alloc >(3cxx) 😭 (the ... is doing main character energy and hiding the middle of the class name, ngl). The actual full title is:

__gnu_pbds::detail::ov_tree_node_it_< Value_Type, Metadata_Type, _Alloc >

and what it is, in one line, is a node reference. that's it. that's the whole name section. periodt πŸ’…


✨ SYNOPSIS

you get to it by including this, no cap:

#include <node_iterators.hpp>

it inherits from __gnu_pbds::detail::ov_tree_node_const_it_< Value_Type, Metadata_Type, _Alloc > β€” so it's the non-const glow-up of the const version, iykyk πŸ¦‹


πŸ¦‹ Public Types

these are the typedefs, and the way that < and > nesting goes crazy here is honestly iconic. all of them, exactly as written:

  • const_reference β€” rebind_traits< _Alloc, typenameremove_const< Value_Type >::type >::pointer
  • difference_type β€” trivial_iterator_difference_type
  • iterator_category β€” trivial_iterator_tag
  • metadata_const_reference β€” rebind_traits< _Alloc, metadata_type >::const_reference
  • metadata_type β€” Metadata_Type
  • reference β€” rebind_traits< _Alloc, typenameremove_const< Value_Type >::type >::pointer
  • value_type β€” rebind_traits< _Alloc, Value_Type >::pointer
and yes, const_reference and reference both end in ::pointer β€” that's literally what the page says, we're not "fixing" it, we're just reporting it 🫢

πŸ’… Public Member Functions

  • ov_tree_node_it_ (const_pointer p_nd=0, const_pointer p_begin_nd=0, const_pointer p_end_nd=0, const_metadata_pointer p_metadata=0) β€” the constructor, with four defaulted-to-0 params. very "here are your knobs, all of them optional" of it.
  • ov_tree_node_it_ get_l_child () const β€” returns the node reference associated with the left node πŸ“
  • metadata_const_reference get_metadata () const β€” returns the metadata. that's all the page says. no elaboration. we respect the mystery πŸ’€
  • ov_tree_node_it_ get_r_child () const β€” returns the node reference associated with the right node 🌸
  • bool operator!= (const this_type &other) const β€” inequality check against const this_type &other.
  • reference operator* () const β€” "Access." that's the entire description. short, sweet, ate πŸ’…
  • bool operator== (const this_type &other) const β€” equality check against const this_type &other.

πŸŽ€ Public Attributes

the exposed members, bestie, they're just out there:

  • pointer m_p_begin_value
  • pointer m_p_end_value
  • const_metadata_pointer m_p_metadata
  • pointer m_p_value

πŸ”₯ Static Protected Member Functions

one (1) protected static helper, and it's a template:

template<typename Ptr > static Ptr mid_pointer (Ptr p_begin, Ptr p_end)

it's giving "find the middle pointer" but we're not adding lore that isn't on the page πŸ”₯


πŸ‘‘ Detailed Description

the full declaration, laid out exactly like this, template line and all:

template<typename Value_Type, typename Metadata_Type, typename _Alloc>
    class __gnu_pbds::detail::ov_tree_node_it_< Value_Type, Metadata_Type,
    _Alloc >

and the description? "Node reference." two words. no notes. absolute legend behavior πŸ‘‘


⭐ Member Function Documentation

get_l_child

template<typename Value_Type , typename Metadata_Type , typename _Alloc >
ov_tree_node_it_ __gnu_pbds::detail::ov_tree_node_it_< Value_Type,
Metadata_Type, _Alloc >::get_l_child () const [inline]

returns the node reference associated with the left node πŸ’œ

get_r_child

template<typename Value_Type , typename Metadata_Type , typename _Alloc >
ov_tree_node_it_ __gnu_pbds::detail::ov_tree_node_it_< Value_Type,
Metadata_Type, _Alloc >::get_r_child () const [inline]

returns the node reference associated with the right node 🌈

operator*

template<typename Value_Type , typename Metadata_Type , typename _Alloc >
reference __gnu_pbds::detail::ov_tree_node_it_< Value_Type,
Metadata_Type, _Alloc >::operator* () const [inline]

"Access." that's it. that's the whole doc comment. we stan a minimalist 😭

note: only get_l_child, get_r_child and operator* get their own documentation entries here. get_metadata, operator==, operator!= and the constructor don't β€” so don't come for me, I'm not inventing descriptions 🫢

🌈 Author

generated automatically by Doxygen for libstdc++ from the source code. no human hand-wrote this bad boy, it's all machine-made ✨


and that's the whole page, bestie! sign-off time: this was libstdc++'s 3cxx manual β€” the footer reads libstd__gnu_pbds::de..._Type, _Alloc >(3cxx) (truncation trauma again 😭) β€” generated by Doxygen straight from the source code. go forth and reference some nodes πŸŽ€πŸ’–πŸ¦‹

πŸ“¦ where this page comes from