8#ifndef INCLUDED_BSLALG_RBTREENODE
9#define INCLUDED_BSLALG_RBTREENODE
345#include <bslscm_version.h>
508#if defined(BSLS_PLATFORM_HAS_PRAGMA_GCC_DIAGNOSTIC) && \
509 !defined(BSLS_PLATFORM_CMP_CLANG)
510#pragma GCC diagnostic push
511#pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
516#if defined(BSLS_PLATFORM_HAS_PRAGMA_GCC_DIAGNOSTIC) && \
517 !defined(BSLS_PLATFORM_CMP_CLANG)
518#pragma GCC diagnostic pop
532 d_parentWithColor_p = toNode(toInt(d_parentWithColor_p) | 0x01);
538 d_parentWithColor_p = toNode(toInt(d_parentWithColor_p) & ~0x01);
546 d_parentWithColor_p =
547 toNode(toInt(address) | (toInt(d_parentWithColor_p) & 0x01));
565 d_parentWithColor_p = toNode((toInt(d_parentWithColor_p) & ~0x01) | value);
574 d_parentWithColor_p = toNode(toInt(d_parentWithColor_p) ^ 0x01);
585 d_parentWithColor_p = toNode(toInt(
parent) |
color);
593 return toNode(toInt(d_parentWithColor_p) & ~0x01);
612 return toNode(toInt(d_parentWithColor_p) & ~0x01);
618 return toInt(d_parentWithColor_p) & 0x01;
642 return static_cast<Color>(toInt(d_parentWithColor_p) & 0x01);
Definition bslalg_rbtreenode.h:377
RbTreeNode & operator=(const RbTreeNode &rhs)=default
RbTreeNode * rightChild()
Definition bslalg_rbtreenode.h:603
void toggleColor()
Definition bslalg_rbtreenode.h:569
RbTreeNode * leftChild()
Definition bslalg_rbtreenode.h:597
void reset(RbTreeNode *parent, RbTreeNode *leftChild, RbTreeNode *rightChild, Color color)
Definition bslalg_rbtreenode.h:578
bool isRed() const
Return true if this node is red.
Definition bslalg_rbtreenode.h:622
void setRightChild(RbTreeNode *address)
Definition bslalg_rbtreenode.h:557
void makeRed()
Definition bslalg_rbtreenode.h:536
void makeBlack()
Definition bslalg_rbtreenode.h:530
void setParent(RbTreeNode *address)
Definition bslalg_rbtreenode.h:542
Color color() const
Return the color of this node.
Definition bslalg_rbtreenode.h:640
bool isBlack() const
Return true if this node is black.
Definition bslalg_rbtreenode.h:616
void setLeftChild(RbTreeNode *address)
Definition bslalg_rbtreenode.h:551
void setColor(Color value)
Set the color of this node to the specified value.
Definition bslalg_rbtreenode.h:563
RbTreeNode * parent()
Definition bslalg_rbtreenode.h:591
Color
Definition bslalg_rbtreenode.h:381
@ BSLALG_BLACK
Definition bslalg_rbtreenode.h:383
@ BSLALG_RED
Definition bslalg_rbtreenode.h:382
RbTreeNode(const RbTreeNode &original)=default
#define BSLMF_ASSERT(expr)
Definition bslmf_assert.h:231
#define BSLS_ASSERT_SAFE(X)
Definition bsls_assert.h:1917
#define BSLS_IDENT(str)
BSLS_IDENT() - insert string into .comment binary segment (if supported)
Definition bsls_ident.h:238
Definition bdlc_flathashmap.h:2218
std::size_t UintPtr
Definition bsls_types.h:128