/usr/include/ncbi/tree.h is in libncbi6-dev 6.1.20110713-3ubuntu2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 | /* tree.h
* ===========================================================================
*
* PUBLIC DOMAIN NOTICE
* National Center for Biotechnology Information
*
* This software/database is a "United States Government Work" under the
* terms of the United States Copyright Act. It was written as part of
* the author's official duties as a United States Government employee and
* thus cannot be copyrighted. This software/database is freely available
* to the public for use. The National Library of Medicine and the U.S.
* Government have not placed any restriction on its use or reproduction.
*
* Although all reasonable efforts have been taken to ensure the accuracy
* and reliability of the software and data, the NLM and the U.S.
* Government do not and cannot warrant the performance or results that
* may be obtained by using this software or data. The NLM and the U.S.
* Government disclaim all warranties, express or implied, including
* warranties of performance, merchantability or fitness for any particular
* purpose.
*
* Please cite the author in any work or product based on this material.
*
* ===========================================================================
*
* File Name: tree.h
*
* Author: Vladimir Soussov
*
* File Description: Data types for tree manager
*
*
* $Log: tree.h,v $
* Revision 1.5 1999/05/18 21:13:47 soussov
* TREE_SHUTDOWN event added
*
* Revision 1.4 1998/04/02 23:03:31 vakatov
* PC-specific fixes
*
* Revision 1.3 1998/04/02 22:30:25 soussov
* Some prototype added to make Denis happy
*
* Revision 1.2 1998/03/31 23:12:56 kans
* minor changes needed for code warrior
*
* Revision 1.1 1998/03/31 21:22:26 sirotkin
* With Vladimir - moved from distrib/internal/taxonomy/tree
*
* Revision 6.0 1997/08/25 18:29:49 madden
* Revision changed to 6.0
*
* Revision 1.1 1997/05/30 16:16:18 soussov
* Set of files for ncbitree library
*
* Revision 1.1 1997/05/29 20:44:27 soussov
* Initial version of tree library
*
*
*/
#ifndef TREE_H_DONE
#define TREE_H_DONE
#include <ncbi.h>
typedef enum {
TREE_CURSOR_MOVED = 0,
TREE_NODE_UPDATE,
TREE_NODE_UPD_DONE,
TREE_NODEDATA_UPDATE,
TREE_NODEDATA_UPD_DONE,
TREE_NODE_DELETE,
TREE_NODE_DEL_DONE,
TREE_NODE_MOVE,
TREE_NODE_MV_DONE,
TREE_NODE_MERGE,
TREE_NODE_MERGE_DONE,
TREE_CHILDREN_MOVE,
TREE_CHILDREN_MV_DONE,
TREE_NODE_ADDED,
TREE_SUBTREE_DELETE,
TREE_SUBTREE_DEL_DONE,
TREE_SHUTDOWN
} TreeEvent;
typedef struct t_nodeId0 {
Uint1 bag_store;
Uint1 bag;
Uint1 node;
Uint1 vers;
} _nodeId0;
typedef union t_nodeIdU {
_nodeId0 id4;
Uint4 idi;
} _NodeId, PNTR _NodeIdPtr;
typedef void* _NodeData;
#define NODE_BAG_SIZE 256
#define NOF_BAGS 256
#define TREE_FREE_ROOM 0x1
#define TREE_MERGED_NODE 0x2
typedef struct t_Node {
_NodeId parent; /* parent node id */
_NodeId child; /* child node id */
_NodeId sibling; /* sibling node id */
_NodeData data; /* user data */
VoidPtr sys_data; /* system data (can not be saved) */
Uint2 size;
Uint1 vers;
Uint1 flags;
} _Node, PNTR _NodePtr;
typedef struct T_NodeBag {
Int4 nof_nodes; /* number of live nodes in bag */
struct T_NodeBag** my_bag_store;
_Node node[NODE_BAG_SIZE];
} _NodeBag, PNTR _NodeBagPtr;
typedef _NodeBagPtr PNTR _BagStore;
typedef struct t_TreeCursor TreeCursor, PNTR TreeCursorPtr;
typedef void (*TreeCursorCBFunc)(TreeCursorPtr, TreeEvent, _NodeId);
struct t_TreeCursor {
struct t_Tree PNTR tree;
struct t_TreeCursor* next_cursor;
_NodeId node_id;
_NodeId prev_id;
_NodePtr node;
TreeCursorCBFunc callBack;
VoidPtr user_data;
_NodeBagPtr cbag;
};
typedef struct t_Tree Tree, PNTR TreePtr;
typedef void (*TreeSpyFunc)(TreePtr, Int2, TreeEvent, _NodeId, _NodeId, VoidPtr, Int2);
typedef void (*TreeSaveFunc)(TreeCursorPtr);
typedef Boolean (*TreeUpdateFunc)(TreeCursorPtr, Uint4, VoidPtr, Uint2);
typedef VoidPtr (*TreeGetFunc)(TreeCursorPtr, Uint4, Uint2Ptr);
#define TREE_NOF_SPIES 32
struct t_Tree {
TreeCursorPtr cursor;
_NodeId id4NewNode;
_NodeId rootNodeId;
_BagStore bag_store[NOF_BAGS];
TreeGetFunc get_func;
TreeUpdateFunc update_func;
TreeSaveFunc save_func;
TreeSpyFunc spy[TREE_NOF_SPIES];
VoidPtr spy_data[TREE_NOF_SPIES];
Int4 nof_spies;
};
#endif
|