namespace detangled

Overview

namespace detangled {

// enums

enum side;
enum traversal_order;

// classes

template <class Container>
class accessor;

class format;

template <class C, traversal_order order, side wing>
class iterator;

template <typename T>
class raw_tree;

template <typename A, side wing>
class traverser<A, traversal_order::post, wing>;

template <typename A, side wing>
class traverser<A, traversal_order::in, wing>;

template <typename A, traversal_order order, side wing>
class traverser;

template <typename A, side wing>
class traverser<A, traversal_order::pre, wing>;

template <class ContainerType>
class virtual_accessor;

// global variables

constexpr std::underlying_type_t<side> _left = as_int(side::left);
constexpr std::underlying_type_t<side> _right = as_int(side::right);

// global functions

constexpr traversal_order
operator~(const traversal_order order);

constexpr side
operator!(const side wing);

template <typename E>
constexpr auto
as_int(E e);

template <typename T>
void
swap(raw_tree<T>& left, raw_tree<T>& right);

} // namespace detangled

Detailed Documentation

Global Functions

constexpr traversal_order
operator~(const traversal_order order)

Returns a traversal_order that complements order. Complementarity is fully decided by side as well, but this function does the traversal_order part of things.

Complementary (order, wing) == (~order, !wing)

  • ~in == in

  • ~pre == post

  • ~post == pre

See also:

operator!(const side wing)