14#if defined(MICRO_OS_PLUS_INCLUDE_CONFIG_H)
15#include <micro-os-plus/config.h>
19#include <micro-os-plus/diag/trace.h>
24#pragma GCC diagnostic push
26#pragma GCC diagnostic ignored "-Waggregate-return"
28#pragma clang diagnostic ignored "-Wc++98-compat"
50 assert (
next_ ==
nullptr);
90#if defined(MICRO_OS_PLUS_TRACE_UTILS_LISTS)
91 trace::printf (
"%s() link %p after %p\n", __func__, node,
this);
93 assert (
next_ !=
nullptr);
94 assert (
next_->previous_ !=
nullptr);
100 next_->previous_ = node;
114#if defined(MICRO_OS_PLUS_TRACE_UTILS_LISTS)
115 trace::printf (
"%s() link %p before %p\n", __func__, node,
this);
117 assert (
next_ !=
nullptr);
118 assert (
next_->previous_ !=
nullptr);
139#if defined(MICRO_OS_PLUS_TRACE_UTILS_LISTS)
140 trace::printf (
"%s() %p \n", __func__,
this);
164 assert (
next_ ==
this);
177#if defined(__GNUC__) && !defined(__clang__)
180 __attribute__ ((noinline, noipa))
193#pragma GCC diagnostic pop
double_list_links_base * previous_
Pointer to the previous node.
void initialize_once(void)
Initialize the list only at first run.
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 double 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.
µOS++ utility definitions.