mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 18:15:11 +00:00
70 lines
2 KiB
C
70 lines
2 KiB
C
/*
|
|
* PROJECT: ReactOS Runtime Library
|
|
* LICENSE: BSD - See COPYING.ARM in the top level directory
|
|
* FILE: lib/rtl/rtlavl.h
|
|
* PURPOSE: RTL AVL Glue
|
|
* PROGRAMMERS: ReactOS Portable Systems Group
|
|
*/
|
|
|
|
/* INCLUDES ******************************************************************/
|
|
|
|
/*
|
|
* This is the glue code for the AVL package in the RTL meant for external callers.
|
|
* It's not very exciting, it just uses the RTL-defined fields without any magic,
|
|
* unlike the Mm version which has special handling for balances and parents, and
|
|
* does not implement custom comparison callbacks.
|
|
*/
|
|
#define MI_ASSERT(x)
|
|
#define RtlLeftChildAvl(x) (PRTL_BALANCED_LINKS)(RtlLeftChild(x))
|
|
#define RtlRightChildAvl(x) (PRTL_BALANCED_LINKS)(RtlRightChild(x))
|
|
#define RtlParentAvl(x) (PRTL_BALANCED_LINKS)(RtlParent(x))
|
|
#define RtlRealPredecessorAvl(x) (PRTL_BALANCED_LINKS)(RtlRealPredecessor((PRTL_SPLAY_LINKS)(x)))
|
|
#define RtlRealSuccessorAvl(x) (PRTL_BALANCED_LINKS)(RtlRealSuccessor((PRTL_SPLAY_LINKS)(x)))
|
|
#define RtlInsertAsRightChildAvl RtlInsertAsRightChild
|
|
#define RtlInsertAsLeftChildAvl RtlInsertAsLeftChild
|
|
#define RtlIsLeftChildAvl RtlIsLeftChild
|
|
|
|
FORCEINLINE
|
|
VOID
|
|
RtlpCopyAvlNodeData(IN PRTL_BALANCED_LINKS Node1,
|
|
IN PRTL_BALANCED_LINKS Node2)
|
|
{
|
|
*Node1 = *Node2;
|
|
}
|
|
|
|
FORCEINLINE
|
|
RTL_GENERIC_COMPARE_RESULTS
|
|
RtlpAvlCompareRoutine(IN PRTL_AVL_TABLE Table,
|
|
IN PVOID Buffer,
|
|
IN PVOID UserData)
|
|
{
|
|
/* Do the compare */
|
|
return Table->CompareRoutine(Table,
|
|
Buffer,
|
|
UserData);
|
|
}
|
|
|
|
FORCEINLINE
|
|
VOID
|
|
RtlSetParent(IN PRTL_BALANCED_LINKS Node,
|
|
IN PRTL_BALANCED_LINKS Parent)
|
|
{
|
|
Node->Parent = Parent;
|
|
}
|
|
|
|
FORCEINLINE
|
|
VOID
|
|
RtlSetBalance(IN PRTL_BALANCED_LINKS Node,
|
|
IN CHAR Balance)
|
|
{
|
|
Node->Balance = Balance;
|
|
}
|
|
|
|
FORCEINLINE
|
|
CHAR
|
|
RtlBalance(IN PRTL_BALANCED_LINKS Node)
|
|
{
|
|
return Node->Balance;
|
|
}
|
|
|
|
/* EOF */
|