27#if defined(MICRO_OS_PLUS_INCLUDE_CONFIG_H)
28#include <micro-os-plus/config.h>
32#include <micro-os-plus/diag/trace.h>
37#pragma GCC diagnostic push
39#pragma GCC diagnostic ignored "-Waggregate-return"
41#pragma clang diagnostic ignored "-Wc++98-compat"
63 assert (
next_ ==
nullptr);
103#if defined(MICRO_OS_PLUS_TRACE_UTILS_LISTS)
104 trace::printf (
"%s() link %p after %p\n", __func__, node,
this);
106 assert (
next_ !=
nullptr);
107 assert (
next_->previous_ !=
nullptr);
113 next_->previous_ = node;
129#if defined(MICRO_OS_PLUS_TRACE_UTILS_LISTS)
130 trace::printf (
"%s() link %p before %p\n", __func__, node,
this);
132 assert (
next_ !=
nullptr);
133 assert (
next_->previous_ !=
nullptr);
153#if defined(MICRO_OS_PLUS_TRACE_UTILS_LISTS)
154 trace::printf (
"%s() %p \n", __func__,
this);
180 assert (
next_ ==
this);
197#if defined(__GNUC__) && !defined(__clang__)
200 __attribute__ ((noinline, noipa))
213#pragma GCC diagnostic pop
double_list_links_base * previous_
Pointer to the previous node.
void initialize_once(void)
Initialise the node links only if not already initialised.
constexpr double_list_links_base()
Construct an uninitialised list node.
void link_next(double_list_links_base *node)
Link the new node as next.
bool linked(void) const
Check if the node is linked to a doubly linked list.
void link_previous(double_list_links_base *node)
Link the new node as previous.
bool uninitialized(void) const
Check if the node is uninitialised.
double_list_links_base * next_
Pointer to the next node.
constexpr void initialize(void)
Initialise the node links.
void unlink(void)
Remove this node from the list.
void nullify(void)
Reset the two pointers to nullptr.
Main C++ header file with the declarations for the µOS++ lists classes.
The µOS++ utilities definitions.