60 CurrentNode = ChildNode;
65 *NodeOrParent = CurrentNode;
76 CurrentNode = ChildNode;
81 *NodeOrParent = CurrentNode;
91 *NodeOrParent = CurrentNode;
113 *SwapNode1 = *SwapNode2;
115 *SwapNode2 = ParentNode;
217 NewNode->LeftChild = NewNode->RightChild =
NULL;
221 Table->NumberGenericTableElements++;
231 Table->DepthOfTree = 1;
266 NewNode = NodeOrParent;
278 Table->DepthOfTree++;
321 DPRINT(
"Parent: %p\n", ParentNode);
325 DPRINT(
"Node 1: %p %p\n", Node1, *Node1);
329 DPRINT(
"Node 2: %p %p\n", Node2, *Node2);
FORCEINLINE VOID RtlpDeleteAvlTreeNode(IN PRTL_AVL_TABLE Table, IN PRTL_BALANCED_LINKS Node)
FORCEINLINE BOOLEAN RtlpRebalanceAvlTreeNode(IN PRTL_BALANCED_LINKS Node)
static const UCHAR Balance[]
FORCEINLINE CHAR RtlBalance(IN PRTL_BALANCED_LINKS Node)
enum _TABLE_SEARCH_RESULT TABLE_SEARCH_RESULT
struct _RTL_BALANCED_LINKS * RightChild
FORCEINLINE VOID RtlpInsertAvlTreeNode(IN PRTL_AVL_TABLE Table, IN PRTL_BALANCED_LINKS NewNode, IN OUT PVOID NodeOrParent, IN OUT TABLE_SEARCH_RESULT SearchResult)
FORCEINLINE VOID RtlSetBalance(IN PRTL_BALANCED_LINKS Node, IN CHAR Balance)
C_ASSERT(RtlBalancedAvlTree==0)
_At_(*)(_In_ PWSK_CLIENT Client, _In_opt_ PUNICODE_STRING NodeName, _In_opt_ PUNICODE_STRING ServiceName, _In_opt_ ULONG NameSpace, _In_opt_ GUID *Provider, _In_opt_ PADDRINFOEXW Hints, _Outptr_ PADDRINFOEXW *Result, _In_opt_ PEPROCESS OwningProcess, _In_opt_ PETHREAD OwningThread, _Inout_ PIRP Irp Result)(Mem)) NTSTATUS(WSKAPI *PFN_WSK_GET_ADDRESS_INFO
FORCEINLINE VOID RtlpPromoteAvlTreeNode(IN PRTL_BALANCED_LINKS Node)
struct _TABLE_ENTRY_HEADER * PTABLE_ENTRY_HEADER
static __inline VOID DeleteNode(NODE *node)
struct _RTL_BALANCED_LINKS * LeftChild
FORCEINLINE VOID RtlSetParent(IN PRTL_BALANCED_LINKS Node, IN PRTL_BALANCED_LINKS Parent)
#define RtlIsRightChild(Links)
#define RtlIsLeftChildAvl
FORCEINLINE TABLE_SEARCH_RESULT RtlpFindAvlTableNodeOrParent(IN PRTL_AVL_TABLE Table, IN PVOID Buffer, OUT PRTL_BALANCED_LINKS *NodeOrParent)
FORCEINLINE VOID RtlpCopyAvlNodeData(IN PRTL_BALANCED_LINKS Node1, IN PRTL_BALANCED_LINKS Node2)
enum _RTL_GENERIC_COMPARE_RESULTS RTL_GENERIC_COMPARE_RESULTS
enum _RTL_AVL_BALANCE_FACTOR RTL_AVL_BALANCE_FACTOR
FORCEINLINE RTL_GENERIC_COMPARE_RESULTS RtlpAvlCompareRoutine(IN PRTL_AVL_TABLE Table, IN PVOID Buffer, IN PVOID UserData)
#define RtlInsertAsRightChildAvl
#define RtlInsertAsLeftChildAvl
struct _TABLE_ENTRY_HEADER TABLE_ENTRY_HEADER