Embedded Template Library 1.0
intrusive_links.h File Reference
#include "platform.h"
#include "nullptr.h"
#include "type_traits.h"
#include "exception.h"
#include "error_handler.h"
#include "utility.h"
#include "algorithm.h"
#include <assert.h>

Go to the source code of this file.

Classes

class  etl::link_exception
 Link exception. More...
 
class  etl::not_unlinked_exception
 not unlinked exception. More...
 
struct  etl::forward_link< ID_ >
 A forward link. More...
 
struct  etl::is_forward_link< TLink >
 
struct  etl::bidirectional_link< ID_ >
 A bidirectional link. More...
 
struct  etl::is_bidirectional_link< TLink >
 
struct  etl::tree_link< ID_ >
 A binary tree link. More...
 
struct  etl::is_tree_link< TLink >
 

Namespaces

namespace  etl
 bitset_ext
 

Functions

template<typename TLink >
etl::enable_if< etl::is_forward_link< TLink >::value, void >::type etl::link (TLink &lhs, TLink &rhs)
 
template<typename TLink >
etl::enable_if< etl::is_forward_link< TLink >::value, void >::type etl::link (TLink *lhs, TLink *rhs)
 
template<typename TLink >
etl::enable_if< etl::is_forward_link< TLink >::value, void >::type etl::link (TLink &lhs, TLink *rhs)
 
template<typename TLink >
etl::enable_if< etl::is_forward_link< TLink >::value, void >::type etl::link (TLink *lhs, TLink &rhs)
 
template<typename TLink >
etl::enable_if< etl::is_forward_link< TLink >::value, void >::type etl::link_splice (TLink &lhs, TLink &rhs)
 
template<typename TLink >
etl::enable_if< etl::is_forward_link< TLink >::value, void >::type etl::link_splice (TLink *lhs, TLink *rhs)
 
template<typename TLink >
etl::enable_if< etl::is_forward_link< TLink >::value, void >::type etl::link_splice (TLink &lhs, TLink *rhs)
 
template<typename TLink >
etl::enable_if< etl::is_forward_link< TLink >::value, void >::type etl::link_splice (TLink *lhs, TLink &rhs)
 
template<typename TLink >
etl::enable_if< etl::is_forward_link< TLink >::value, void >::type etl::link_splice (TLink &lhs, TLink &first, TLink &last)
 
template<typename TLink >
etl::enable_if< etl::is_forward_link< TLink >::value, void >::type etl::link_splice (TLink *lhs, TLink &first, TLink &last)
 
template<typename TLink >
etl::enable_if< etl::is_forward_link< TLink >::value, TLink * >::type etl::unlink_after (TLink &node)
 
template<typename TLink >
etl::enable_if< etl::is_forward_link< TLink >::value, TLink * >::type etl::unlink_after (TLink &before, TLink &last)
 
template<typename TLink >
etl::enable_if< etl::is_forward_link< TLink >::value, bool >::type etl::is_linked (TLink &node)
 
template<typename TLink >
etl::enable_if< etl::is_forward_link< TLink >::value, bool >::type etl::is_linked (TLink *node)
 
template<typename TLink >
etl::enable_if< etl::is_forward_link< TLink >::value, void >::type etl::link_clear (TLink &start)
 
template<typename TLink >
etl::enable_if< etl::is_forward_link< TLink >::value, void >::type etl::link_clear (TLink *start)
 
template<typename TLink >
etl::enable_if< etl::is_forward_link< TLink >::value, void >::type etl::link_clear_range (TLink &start)
 
template<typename TLink >
etl::enable_if< etl::is_forward_link< TLink >::value, void >::type etl::link_clear_range (TLink *start)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::bidirectional_link< TLink::ID > >::value, void >::type etl::link (TLink &lhs, TLink &rhs)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::bidirectional_link< TLink::ID > >::value, void >::type etl::link (TLink *lhs, TLink *rhs)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::bidirectional_link< TLink::ID > >::value, void >::type etl::link (TLink &lhs, TLink *rhs)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::bidirectional_link< TLink::ID > >::value, void >::type etl::link (TLink *lhs, TLink &rhs)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::bidirectional_link< TLink::ID > >::value, void >::type etl::link_splice (TLink &lhs, TLink &rhs)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::bidirectional_link< TLink::ID > >::value, void >::type etl::link_splice (TLink *lhs, TLink *rhs)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::bidirectional_link< TLink::ID > >::value, void >::type etl::link_splice (TLink &lhs, TLink *rhs)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::bidirectional_link< TLink::ID > >::value, void >::type etl::link_splice (TLink *lhs, TLink &rhs)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::bidirectional_link< TLink::ID > >::value, void >::type etl::link_splice (TLink &lhs, TLink &first, TLink &last)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::bidirectional_link< TLink::ID > >::value, void >::type etl::link_splice (TLink *lhs, TLink &first, TLink &last)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::bidirectional_link< TLink::ID > >::value, void >::type etl::unlink (TLink &node)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::bidirectional_link< TLink::ID > >::value, TLink & >::type etl::unlink (TLink &first, TLink &last)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::bidirectional_link< TLink::ID > >::value, bool >::type etl::is_linked (TLink &node)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::bidirectional_link< TLink::ID > >::value, bool >::type etl::is_linked (TLink *node)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::bidirectional_link< TLink::ID > >::value, void >::type etl::link_clear_range (TLink &start)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::bidirectional_link< TLink::ID > >::value, void >::type etl::link_clear_range (TLink *start)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, void >::type etl::link_left (TLink &parent, TLink &leaf)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, void >::type etl::link_left (TLink *parent, TLink *leaf)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, void >::type etl::link_left (TLink &parent, TLink *leaf)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, void >::type etl::link_left (TLink *parent, TLink &leaf)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, void >::type etl::link_right (TLink &parent, TLink &leaf)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, void >::type etl::link_right (TLink *parent, TLink *leaf)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, void >::type etl::link_right (TLink &parent, TLink *leaf)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, void >::type etl::link_right (TLink *parent, TLink &leaf)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, void >::type etl::link_rotate_left (TLink &parent, TLink &leaf)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, void >::type etl::link_rotate_left (TLink *parent, TLink *leaf)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, void >::type etl::link_rotate_left (TLink &parent, TLink *leaf)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, void >::type etl::link_rotate_left (TLink *parent, TLink &leaf)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, void >::type etl::link_rotate_right (TLink &parent, TLink &leaf)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, void >::type etl::link_rotate_right (TLink *parent, TLink *leaf)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, void >::type etl::link_rotate_right (TLink &parent, TLink *leaf)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, void >::type etl::link_rotate_right (TLink *parent, TLink &leaf)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, void >::type etl::link_rotate (TLink &parent, TLink &leaf)
 Automatically detects whether a left or right rotate is expected.
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, void >::type etl::link_rotate (TLink *parent, TLink *leaf)
 Automatically detects whether a left or right rotate is expected.
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, void >::type etl::link_rotate (TLink &parent, TLink *leaf)
 Automatically detects whether a left or right rotate is expected.
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, void >::type etl::link_rotate (TLink *parent, TLink &leaf)
 Automatically detects whether a left or right rotate is expected.
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, void >::type etl::link_clear (TLink &node)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, void >::type etl::link_clear (TLink *node)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, bool >::type etl::is_linked (TLink &node)
 
template<typename TLink >
etl::enable_if< etl::is_same< TLink, etl::tree_link< TLink::ID > >::value, bool >::type etl::is_linked (TLink *node)