windows-nt/Source/XPSP1/NT/ds/security/services/scerpc/splay.h
2020-09-26 16:20:57 +08:00

100 lines
1.7 KiB
C

/*++
Copyright (c) 2000 Microsoft Corporation
Module Name:
splay.h
Abstract:
Header file for splay.cpp (see a description of the data structures there)
Author:
Vishnu Patankar (vishnup) 15-Aug-2000 created
--*/
#include <nt.h>
#include <ntrtl.h>
#include <nturtl.h>
#include <windows.h>
#include <string.h>
#include <wchar.h>
#include <stddef.h>
#include <stdlib.h>
#include <stdio.h>
#ifndef _splay_h
#define _splay_h
#ifndef Thread
#define Thread __declspec( thread )
#endif
//
// This typedef can be changed for making the splay library more generic
// and exportable perhaps (will require function pointers for generic compares)
//
typedef enum _SCEP_NODE_VALUE_TYPE {
SplayNodeSidType = 1,
SplayNodeStringType
} SCEP_NODE_VALUE_TYPE;
typedef struct _SCEP_SPLAY_NODE_ {
PVOID Value;
DWORD dwByteLength;
struct _SCEP_SPLAY_NODE_ *Left;
struct _SCEP_SPLAY_NODE_ *Right;
} SCEP_SPLAY_NODE, *PSCEP_SPLAY_NODE;
typedef struct _SCEP_SPLAY_TREE_ {
_SCEP_SPLAY_NODE_ *Root;
_SCEP_SPLAY_NODE_ *Sentinel;
SCEP_NODE_VALUE_TYPE Type;
} SCEP_SPLAY_TREE, *PSCEP_SPLAY_TREE;
//
// functions to do operations on the splay tree
//
VOID
ScepSplayFreeTree(
IN PSCEP_SPLAY_TREE *ppTreeRoot,
IN BOOL bDestroyTree
);
PSCEP_SPLAY_TREE
ScepSplayInitialize(
SCEP_NODE_VALUE_TYPE Type
);
DWORD
ScepSplayInsert(
IN PVOID Value,
IN OUT PSCEP_SPLAY_TREE pTreeRoot,
OUT BOOL *pbExists
);
DWORD
ScepSplayDelete(
IN PVOID Value,
IN OUT PSCEP_SPLAY_TREE pTreeRoot
);
BOOL
ScepSplayValueExist(
IN PVOID Value,
IN OUT PSCEP_SPLAY_TREE pTreeRoot
);
BOOL
ScepSplayTreeEmpty(
IN PSCEP_SPLAY_TREE pTreeRoot
);
#endif