1 /*********************** -*- Mode: C -*- ***********************
2  * File            : private.h
3  *---------------------------------------------------------------
4  * Description
5  * ===========
6  * This defines the private interface used internally by this component
7  *---------------------------------------------------------------
8  * Author          : Graeme McKerrell
9  * Created On      : Wed Jan 28 08:45:01 2004
10  * Status          : TESTED
11  *---------------------------------------------------------------
12  * HISTORY
13  * 7-Dec-2004		Graeme McKerrell
14  *    Renamed to the "lub_" namespace
15  * 5-May-2004		Graeme McKerrell
16  *    updates following review
17  * 9-Feb-2004		Graeme McKerrell
18  *    modified compare MACRO
19  * 28-Jan-2004		Graeme McKerrell
20  *    Initial version
21  *---------------------------------------------------------------
22  * Copyright (C) 2004 3Com Corporation. All Rights Reserved.
23  **************************************************************** */
24 #include "lub/bintree.h"
25 
26 /*************************************************************
27  * PRIVATE OPERATIONS
28  ************************************************************* */
29 /*------------------------------------------------------------ */
30 /* This is the operation which performs a top-down splay. It is
31  * the core workhorse for this tree implementation.
32  *
33  * tree - the instance to invoke this operation upon
34  * t    - the root node to splay to.
35  * key  - the value with which to splay
36  */
37 extern lub_bintree_node_t *lub_bintree_splay(const lub_bintree_t * tree,
38 					     lub_bintree_node_t * t,
39 					     const void *key);
40 /*------------------------------------------------------------ */
41 /* This operation converts a "node" into a "clientnode"
42  * subtracting the offset gives the base pointer to the node
43  *
44  * this - the tree to invoke this operation upon
45  * node - the node to convert
46  */
47 #define lub_bintree_getclientnode(this,node)\
48 (void *)(((char*)node) - this->node_offset)
49 /*------------------------------------------------------------ */
50 /* This operation converts a "clientnode" into a "node"
51  * adding the offset gives the base pointer to the node
52  *
53  * this       - the tree to invoke this operation upon
54  * clientnode - the clientnode to convert
55  */
56 #define lub_bintree_getnode(this,clientnode)\
57 (lub_bintree_node_t *)(((char*)clientnode) + this->node_offset)	/*lint -e826 */
58 /*------------------------------------------------------------ */
59 /* This operation compares a key with a "node"
60  * it returns
61  * <0 if key <  node
62  *  0 if key == node
63  * >0 if key >  node
64  *
65  * this - the tree to invoke this operation upon
66  * node - the "node" to compare
67  * key  - the key to compare
68  */
69 #define lub_bintree_compare(this,node,key)\
70 (this)->compareFn(lub_bintree_getclientnode(this,node),key)
71 /*------------------------------------------------------------ */
72