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