| 1 |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| 2 |
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> |
| 3 |
<title>DatabasePrimitivesLibrary: dbprim.h Source File</title> |
| 4 |
<link href="doxygen.css" rel="stylesheet" type="text/css"> |
| 5 |
</head><body> |
| 6 |
<!-- Generated by Doxygen 1.4.4 --> |
| 7 |
<div class="qindex"><a class="qindex" href="index.html">Main Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Data Structures</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Data Fields</a> | <a class="qindex" href="globals.html">Globals</a></div> |
| 8 |
<h1>dbprim.h</h1><a href="dbprim_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/* -*- c -*-</span> |
| 9 |
<a name="l00002"></a>00002 <span class="comment">** Copyright (C) 2002, 2006 by Kevin L. Mitchell <klmitch@mit.edu></span> |
| 10 |
<a name="l00003"></a>00003 <span class="comment">**</span> |
| 11 |
<a name="l00004"></a>00004 <span class="comment">** This library is free software; you can redistribute it and/or</span> |
| 12 |
<a name="l00005"></a>00005 <span class="comment">** modify it under the terms of the GNU Library General Public</span> |
| 13 |
<a name="l00006"></a>00006 <span class="comment">** License as published by the Free Software Foundation; either</span> |
| 14 |
<a name="l00007"></a>00007 <span class="comment">** version 2 of the License, or (at your option) any later version.</span> |
| 15 |
<a name="l00008"></a>00008 <span class="comment">**</span> |
| 16 |
<a name="l00009"></a>00009 <span class="comment">** This library is distributed in the hope that it will be useful,</span> |
| 17 |
<a name="l00010"></a>00010 <span class="comment">** but WITHOUT ANY WARRANTY; without even the implied warranty of</span> |
| 18 |
<a name="l00011"></a>00011 <span class="comment">** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span> |
| 19 |
<a name="l00012"></a>00012 <span class="comment">** Library General Public License for more details.</span> |
| 20 |
<a name="l00013"></a>00013 <span class="comment">**</span> |
| 21 |
<a name="l00014"></a>00014 <span class="comment">** You should have received a copy of the GNU Library General Public</span> |
| 22 |
<a name="l00015"></a>00015 <span class="comment">** License along with this library; if not, write to the Free</span> |
| 23 |
<a name="l00016"></a>00016 <span class="comment">** Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,</span> |
| 24 |
<a name="l00017"></a>00017 <span class="comment">** MA 02111-1307, USA</span> |
| 25 |
<a name="l00018"></a>00018 <span class="comment">**</span> |
| 26 |
<a name="l00019"></a>00019 <span class="comment">** @(#)$Id: dbprim_8h-source.html,v 1.3 2006/09/04 15:12:15 spale Exp $</span> |
| 27 |
<a name="l00020"></a>00020 <span class="comment">*/</span> |
| 28 |
<a name="l00021"></a>00021 <span class="preprocessor">#ifndef __include_dbprim_h__</span> |
| 29 |
<a name="l00022"></a>00022 <span class="preprocessor"></span><span class="preprocessor">#define __include_dbprim_h__</span> |
| 30 |
<a name="l00023"></a>00023 <span class="preprocessor"></span> |
| 31 |
<a name="l00230"></a>00230 <span class="preprocessor">#undef DBPRIM_BEGIN_C_DECLS</span> |
| 32 |
<a name="l00231"></a>00231 <span class="preprocessor"></span><span class="preprocessor">#undef DBPRIM_END_C_DECLS</span> |
| 33 |
<a name="l00232"></a>00232 <span class="preprocessor"></span><span class="preprocessor">#ifdef __cplusplus</span> |
| 34 |
<a name="l00233"></a>00233 <span class="preprocessor"></span><span class="preprocessor"># define DBPRIM_BEGIN_C_DECLS extern "C" {</span> |
| 35 |
<a name="l00234"></a>00234 <span class="preprocessor"></span><span class="preprocessor"># define DBPRIM_END_C_DECLS }</span> |
| 36 |
<a name="l00235"></a>00235 <span class="preprocessor"></span><span class="preprocessor">#else</span> |
| 37 |
<a name="l00236"></a><a class="code" href="dbprim_8h.html#a0">00236</a> <span class="preprocessor"></span><span class="preprocessor"># define DBPRIM_BEGIN_C_DECLS </span><span class="comment">/* empty */</span> |
| 38 |
<a name="l00237"></a><a class="code" href="dbprim_8h.html#a1">00237</a> <span class="preprocessor"># define DBPRIM_END_C_DECLS </span><span class="comment">/* empty */</span> |
| 39 |
<a name="l00238"></a>00238 <span class="preprocessor">#endif</span> |
| 40 |
<a name="l00239"></a>00239 <span class="preprocessor"></span> |
| 41 |
<a name="l00240"></a>00240 <a class="code" href="dbprim_8h.html#a0">DBPRIM_BEGIN_C_DECLS</a> |
| 42 |
<a name="l00241"></a>00241 |
| 43 |
<a name="l00242"></a>00242 <span class="preprocessor">#ifndef __DBPRIM_LIBRARY__</span> |
| 44 |
<a name="l00243"></a>00243 <span class="preprocessor"></span><span class="preprocessor">#include <dbprim/dbprim_err.h></span> |
| 45 |
<a name="l00244"></a>00244 <span class="preprocessor">#include <dbprim/dbprim_version.h></span> |
| 46 |
<a name="l00245"></a>00245 <span class="preprocessor">#endif </span><span class="comment">/* __DBPRIM_LIBRARY__ */</span> |
| 47 |
<a name="l00246"></a>00246 |
| 48 |
<a name="l00254"></a><a class="code" href="group__dbprim.html#ga0">00254</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__db__key__s.html">_db_key_s</a> db_key_t; |
| 49 |
<a name="l00255"></a>00255 |
| 50 |
<a name="l00262"></a><a class="code" href="group__dbprim__link.html#ga0">00262</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__link__head__s.html">_link_head_s</a> link_head_t; |
| 51 |
<a name="l00263"></a>00263 |
| 52 |
<a name="l00269"></a><a class="code" href="group__dbprim__link.html#ga1">00269</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__link__elem__s.html">_link_elem_s</a> link_elem_t; |
| 53 |
<a name="l00270"></a>00270 |
| 54 |
<a name="l00277"></a><a class="code" href="group__dbprim__hash.html#ga1">00277</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__hash__table__s.html">_hash_table_s</a> hash_table_t; |
| 55 |
<a name="l00278"></a>00278 |
| 56 |
<a name="l00284"></a><a class="code" href="group__dbprim__hash.html#ga2">00284</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__hash__entry__s.html">_hash_entry_s</a> hash_entry_t; |
| 57 |
<a name="l00285"></a>00285 |
| 58 |
<a name="l00292"></a><a class="code" href="group__dbprim__smat.html#ga0">00292</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__smat__table__s.html">_smat_table_s</a> smat_table_t; |
| 59 |
<a name="l00293"></a>00293 |
| 60 |
<a name="l00300"></a><a class="code" href="group__dbprim__smat.html#ga1">00300</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__smat__head__s.html">_smat_head_s</a> smat_head_t; |
| 61 |
<a name="l00301"></a>00301 |
| 62 |
<a name="l00308"></a><a class="code" href="group__dbprim__smat.html#ga2">00308</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__smat__entry__s.html">_smat_entry_s</a> smat_entry_t; |
| 63 |
<a name="l00309"></a>00309 |
| 64 |
<a name="l00316"></a><a class="code" href="group__dbprim__rbtree.html#ga0">00316</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__rb__tree__s.html">_rb_tree_s</a> rb_tree_t; |
| 65 |
<a name="l00317"></a>00317 |
| 66 |
<a name="l00323"></a><a class="code" href="group__dbprim__rbtree.html#ga1">00323</a> <span class="keyword">typedef</span> <span class="keyword">struct </span><a class="code" href="struct__rb__node__s.html">_rb_node_s</a> rb_node_t; |
| 67 |
<a name="l00324"></a>00324 |
| 68 |
<a name="l00342"></a><a class="code" href="group__dbprim__link.html#ga2">00342</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> long (*<a class="code" href="group__dbprim__link.html#ga2">link_iter_t</a>)(link_head_t *list, link_elem_t *elem, |
| 69 |
<a name="l00343"></a>00343 <span class="keywordtype">void</span> *extra); |
| 70 |
<a name="l00344"></a>00344 |
| 71 |
<a name="l00357"></a><a class="code" href="group__dbprim__link.html#ga3">00357</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> long (*<a class="code" href="group__dbprim__link.html#ga3">link_comp_t</a>)(db_key_t *key, <span class="keywordtype">void</span> *obj); |
| 72 |
<a name="l00358"></a>00358 |
| 73 |
<a name="l00376"></a><a class="code" href="group__dbprim__hash.html#ga3">00376</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> long (*<a class="code" href="group__dbprim__hash.html#ga3">hash_iter_t</a>)(hash_table_t *table, hash_entry_t *ent, |
| 74 |
<a name="l00377"></a>00377 <span class="keywordtype">void</span> *extra); |
| 75 |
<a name="l00378"></a>00378 |
| 76 |
<a name="l00392"></a><a class="code" href="group__dbprim__hash.html#ga4">00392</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> long (*<a class="code" href="group__dbprim__hash.html#ga4">hash_func_t</a>)(hash_table_t *table, db_key_t *key); |
| 77 |
<a name="l00393"></a>00393 |
| 78 |
<a name="l00408"></a><a class="code" href="group__dbprim__hash.html#ga5">00408</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> long (*<a class="code" href="group__dbprim__hash.html#ga5">hash_comp_t</a>)(hash_table_t *table, db_key_t *key1, |
| 79 |
<a name="l00409"></a>00409 db_key_t *key2); |
| 80 |
<a name="l00410"></a>00410 |
| 81 |
<a name="l00424"></a><a class="code" href="group__dbprim__hash.html#ga6">00424</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> long (*<a class="code" href="group__dbprim__hash.html#ga6">hash_resize_t</a>)(hash_table_t *table, |
| 82 |
<a name="l00425"></a>00425 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> new_mod); |
| 83 |
<a name="l00426"></a>00426 |
| 84 |
<a name="l00440"></a><a class="code" href="group__dbprim__smat.html#ga3">00440</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> long (*<a class="code" href="group__dbprim__smat.html#ga3">smat_resize_t</a>)(smat_table_t *table, |
| 85 |
<a name="l00441"></a>00441 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> new_mod); |
| 86 |
<a name="l00442"></a>00442 |
| 87 |
<a name="l00460"></a><a class="code" href="group__dbprim__smat.html#ga4">00460</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> long (*<a class="code" href="group__dbprim__smat.html#ga4">smat_iter_t</a>)(smat_table_t *table, smat_entry_t *ent, |
| 88 |
<a name="l00461"></a>00461 <span class="keywordtype">void</span> *extra); |
| 89 |
<a name="l00462"></a>00462 |
| 90 |
<a name="l00476"></a><a class="code" href="group__dbprim__smat.html#ga5">00476</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> long (*<a class="code" href="group__dbprim__smat.html#ga5">smat_comp_t</a>)(db_key_t *key, smat_entry_t *ent); |
| 91 |
<a name="l00477"></a>00477 |
| 92 |
<a name="l00495"></a><a class="code" href="group__dbprim__rbtree.html#ga2">00495</a> <span class="keyword">typedef</span> <span class="keywordtype">unsigned</span> long (*<a class="code" href="group__dbprim__rbtree.html#ga2">rb_iter_t</a>)(rb_tree_t *tree, rb_node_t *node, |
| 93 |
<a name="l00496"></a>00496 <span class="keywordtype">void</span> *extra); |
| 94 |
<a name="l00497"></a>00497 |
| 95 |
<a name="l00514"></a><a class="code" href="group__dbprim__rbtree.html#ga3">00514</a> <span class="keyword">typedef</span> long (*<a class="code" href="group__dbprim__rbtree.html#ga3">rb_comp_t</a>)(rb_tree_t *tree, db_key_t *key1, db_key_t *key2); |
| 96 |
<a name="l00515"></a>00515 |
| 97 |
<a name="l00523"></a><a class="code" href="group__dbprim__link.html#ga28">00523</a> <span class="keyword">enum</span> <a class="code" href="group__dbprim__link.html#ga28">_link_loc_e</a> { |
| 98 |
<a name="l00524"></a>00524 <a class="code" href="group__dbprim__link.html#gga28a133">LINK_LOC_HEAD</a>, |
| 99 |
<a name="l00525"></a>00525 <a class="code" href="group__dbprim__link.html#gga28a134">LINK_LOC_TAIL</a>, |
| 100 |
<a name="l00526"></a>00526 <a class="code" href="group__dbprim__link.html#gga28a135">LINK_LOC_BEFORE</a>, |
| 101 |
<a name="l00528"></a><a class="code" href="group__dbprim__link.html#gga28a136">00528</a> <a class="code" href="group__dbprim__link.html#gga28a136">LINK_LOC_AFTER</a> |
| 102 |
<a name="l00530"></a>00530 }; |
| 103 |
<a name="l00531"></a>00531 |
| 104 |
<a name="l00537"></a><a class="code" href="group__dbprim__link.html#ga4">00537</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="group__dbprim__link.html#ga28">_link_loc_e</a> <a class="code" href="group__dbprim__link.html#ga4">link_loc_t</a>; |
| 105 |
<a name="l00538"></a>00538 |
| 106 |
<a name="l00546"></a><a class="code" href="group__dbprim__smat.html#ga70">00546</a> <span class="keyword">enum</span> <a class="code" href="group__dbprim__smat.html#ga70">_smat_loc_e</a> { |
| 107 |
<a name="l00547"></a>00547 <a class="code" href="group__dbprim__smat.html#gga70a137">SMAT_LOC_FIRST</a>, |
| 108 |
<a name="l00548"></a><a class="code" href="group__dbprim__smat.html#gga70a138">00548</a> <a class="code" href="group__dbprim__smat.html#gga70a138">SMAT_LOC_SECOND</a> |
| 109 |
<a name="l00549"></a>00549 }; |
| 110 |
<a name="l00550"></a>00550 |
| 111 |
<a name="l00556"></a><a class="code" href="group__dbprim__smat.html#ga6">00556</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="group__dbprim__smat.html#ga70">_smat_loc_e</a> <a class="code" href="group__dbprim__smat.html#ga6">smat_loc_t</a>; |
| 112 |
<a name="l00557"></a>00557 |
| 113 |
<a name="l00564"></a><a class="code" href="group__dbprim__rbtree.html#ga53">00564</a> <span class="keyword">enum</span> <a class="code" href="group__dbprim__rbtree.html#ga53">_rb_color_e</a> { |
| 114 |
<a name="l00565"></a>00565 <a class="code" href="group__dbprim__rbtree.html#gga53a139">RB_COLOR_NONE</a>, |
| 115 |
<a name="l00566"></a>00566 <a class="code" href="group__dbprim__rbtree.html#gga53a140">RB_COLOR_RED</a>, |
| 116 |
<a name="l00567"></a><a class="code" href="group__dbprim__rbtree.html#gga53a141">00567</a> <a class="code" href="group__dbprim__rbtree.html#gga53a141">RB_COLOR_BLACK</a> |
| 117 |
<a name="l00568"></a>00568 }; |
| 118 |
<a name="l00569"></a>00569 |
| 119 |
<a name="l00575"></a><a class="code" href="group__dbprim__rbtree.html#ga4">00575</a> <span class="keyword">typedef</span> <span class="keyword">enum</span> <a class="code" href="group__dbprim__rbtree.html#ga53">_rb_color_e</a> <a class="code" href="group__dbprim__rbtree.html#ga4">rb_color_t</a>; |
| 120 |
<a name="l00576"></a>00576 |
| 121 |
<a name="l00583"></a><a class="code" href="struct__db__key__s.html">00583</a> <span class="keyword">struct </span><a class="code" href="struct__db__key__s.html">_db_key_s</a> { |
| 122 |
<a name="l00584"></a><a class="code" href="struct__db__key__s.html#o0">00584</a> <span class="keywordtype">void</span> *<a class="code" href="struct__db__key__s.html#o0">dk_key</a>; |
| 123 |
<a name="l00585"></a><a class="code" href="struct__db__key__s.html#o1">00585</a> <span class="keywordtype">int</span> <a class="code" href="struct__db__key__s.html#o1">dk_len</a>; |
| 124 |
<a name="l00586"></a>00586 }; |
| 125 |
<a name="l00587"></a>00587 |
| 126 |
<a name="l00596"></a><a class="code" href="group__dbprim.html#ga1">00596</a> <span class="preprocessor">#define DB_KEY_INIT(key, size) { (key), (size) }</span> |
| 127 |
<a name="l00597"></a>00597 <span class="preprocessor"></span> |
| 128 |
<a name="l00608"></a><a class="code" href="group__dbprim.html#ga2">00608</a> <span class="preprocessor">#define dk_key(key) ((key)->dk_key)</span> |
| 129 |
<a name="l00609"></a>00609 <span class="preprocessor"></span> |
| 130 |
<a name="l00621"></a><a class="code" href="group__dbprim.html#ga3">00621</a> <span class="preprocessor">#define dk_len(key) ((key)->dk_len)</span> |
| 131 |
<a name="l00622"></a>00622 <span class="preprocessor"></span> |
| 132 |
<a name="l00629"></a><a class="code" href="group__dbprim.html#ga4">00629</a> <span class="preprocessor">#define DB_FLAG_REVERSE 0x80000000</span> |
| 133 |
<a name="l00630"></a>00630 <span class="preprocessor"></span> |
| 134 |
<a name="l00637"></a><a class="code" href="struct__link__head__s.html">00637</a> <span class="keyword">struct </span><a class="code" href="struct__link__head__s.html">_link_head_s</a> { |
| 135 |
<a name="l00638"></a><a class="code" href="struct__link__head__s.html#o0">00638</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="struct__link__head__s.html#o0">lh_magic</a>; |
| 136 |
<a name="l00639"></a><a class="code" href="struct__link__head__s.html#o1">00639</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="struct__link__head__s.html#o1">lh_count</a>; |
| 137 |
<a name="l00640"></a><a class="code" href="struct__link__head__s.html#o2">00640</a> link_elem_t *<a class="code" href="struct__link__head__s.html#o2">lh_first</a>; |
| 138 |
<a name="l00641"></a><a class="code" href="struct__link__head__s.html#o3">00641</a> link_elem_t *<a class="code" href="struct__link__head__s.html#o3">lh_last</a>; |
| 139 |
<a name="l00642"></a><a class="code" href="struct__link__head__s.html#o4">00642</a> <span class="keywordtype">void</span> *<a class="code" href="struct__link__head__s.html#o4">lh_extra</a>; |
| 140 |
<a name="l00643"></a>00643 }; |
| 141 |
<a name="l00644"></a>00644 |
| 142 |
<a name="l00651"></a><a class="code" href="group__dbprim__link.html#ga13">00651</a> <span class="preprocessor">#define LINK_HEAD_MAGIC 0x4c6155d7</span> |
| 143 |
<a name="l00652"></a>00652 <span class="preprocessor"></span> |
| 144 |
<a name="l00661"></a><a class="code" href="group__dbprim__link.html#ga14">00661</a> <span class="preprocessor">#define LINK_HEAD_INIT(extra) { LINK_HEAD_MAGIC, 0, 0, 0, (extra) }</span> |
| 145 |
<a name="l00662"></a>00662 <span class="preprocessor"></span> |
| 146 |
<a name="l00676"></a><a class="code" href="group__dbprim__link.html#ga15">00676</a> <span class="preprocessor">#define ll_verify(list) ((list) && \</span> |
| 147 |
<a name="l00677"></a>00677 <span class="preprocessor"> (list)->lh_magic == LINK_HEAD_MAGIC)</span> |
| 148 |
<a name="l00678"></a>00678 <span class="preprocessor"></span> |
| 149 |
<a name="l00689"></a><a class="code" href="group__dbprim__link.html#ga16">00689</a> <span class="preprocessor">#define ll_count(list) ((list)->lh_count)</span> |
| 150 |
<a name="l00690"></a>00690 <span class="preprocessor"></span> |
| 151 |
<a name="l00700"></a><a class="code" href="group__dbprim__link.html#ga17">00700</a> <span class="preprocessor">#define ll_first(list) ((list)->lh_first)</span> |
| 152 |
<a name="l00701"></a>00701 <span class="preprocessor"></span> |
| 153 |
<a name="l00711"></a><a class="code" href="group__dbprim__link.html#ga18">00711</a> <span class="preprocessor">#define ll_last(list) ((list)->lh_last)</span> |
| 154 |
<a name="l00712"></a>00712 <span class="preprocessor"></span> |
| 155 |
<a name="l00723"></a><a class="code" href="group__dbprim__link.html#ga19">00723</a> <span class="preprocessor">#define ll_extra(list) ((list)->lh_extra)</span> |
| 156 |
<a name="l00724"></a>00724 <span class="preprocessor"></span> |
| 157 |
<a name="l00739"></a>00739 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__link.html#ga5">ll_init</a>(link_head_t *list, <span class="keywordtype">void</span> *extra); |
| 158 |
<a name="l00740"></a>00740 |
| 159 |
<a name="l00762"></a>00762 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__link.html#ga6">ll_add</a>(link_head_t *list, link_elem_t *<span class="keyword">new</span>, <a class="code" href="group__dbprim__link.html#ga4">link_loc_t</a> loc, |
| 160 |
<a name="l00763"></a>00763 link_elem_t *elem); |
| 161 |
<a name="l00764"></a>00764 |
| 162 |
<a name="l00788"></a>00788 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__link.html#ga7">ll_move</a>(link_head_t *list, link_elem_t *elem, <a class="code" href="group__dbprim__link.html#ga4">link_loc_t</a> loc, |
| 163 |
<a name="l00789"></a>00789 link_elem_t *elem2); |
| 164 |
<a name="l00790"></a>00790 |
| 165 |
<a name="l00804"></a>00804 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__link.html#ga8">ll_remove</a>(link_head_t *list, link_elem_t *elem); |
| 166 |
<a name="l00805"></a>00805 |
| 167 |
<a name="l00832"></a>00832 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__link.html#ga9">ll_find</a>(link_head_t *list, link_elem_t **elem_p, |
| 168 |
<a name="l00833"></a>00833 <a class="code" href="group__dbprim__link.html#ga3">link_comp_t</a> comp_func, link_elem_t *start, |
| 169 |
<a name="l00834"></a>00834 db_key_t *key); |
| 170 |
<a name="l00835"></a>00835 |
| 171 |
<a name="l00863"></a>00863 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__link.html#ga10">ll_iter</a>(link_head_t *list, link_elem_t *start, |
| 172 |
<a name="l00864"></a>00864 <a class="code" href="group__dbprim__link.html#ga2">link_iter_t</a> iter_func, <span class="keywordtype">void</span> *extra, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> flags); |
| 173 |
<a name="l00865"></a>00865 |
| 174 |
<a name="l00887"></a>00887 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__link.html#ga11">ll_flush</a>(link_head_t *list, <a class="code" href="group__dbprim__link.html#ga2">link_iter_t</a> flush_func, <span class="keywordtype">void</span> *extra); |
| 175 |
<a name="l00888"></a>00888 |
| 176 |
<a name="l00895"></a><a class="code" href="struct__link__elem__s.html">00895</a> <span class="keyword">struct </span><a class="code" href="struct__link__elem__s.html">_link_elem_s</a> { |
| 177 |
<a name="l00896"></a><a class="code" href="struct__link__elem__s.html#o0">00896</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="struct__link__elem__s.html#o0">le_magic</a>; |
| 178 |
<a name="l00897"></a><a class="code" href="struct__link__elem__s.html#o1">00897</a> link_elem_t *<a class="code" href="struct__link__elem__s.html#o1">le_next</a>; |
| 179 |
<a name="l00898"></a><a class="code" href="struct__link__elem__s.html#o2">00898</a> link_elem_t *<a class="code" href="struct__link__elem__s.html#o2">le_prev</a>; |
| 180 |
<a name="l00899"></a><a class="code" href="struct__link__elem__s.html#o3">00899</a> <span class="keywordtype">void</span> *<a class="code" href="struct__link__elem__s.html#o3">le_object</a>; |
| 181 |
<a name="l00900"></a><a class="code" href="struct__link__elem__s.html#o4">00900</a> link_head_t *<a class="code" href="struct__link__elem__s.html#o4">le_head</a>; |
| 182 |
<a name="l00901"></a><a class="code" href="struct__link__elem__s.html#o5">00901</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="struct__link__elem__s.html#o5">le_flags</a>; |
| 183 |
<a name="l00902"></a>00902 }; |
| 184 |
<a name="l00903"></a>00903 |
| 185 |
<a name="l00911"></a><a class="code" href="group__dbprim__link.html#ga20">00911</a> <span class="preprocessor">#define LINK_ELEM_MAGIC 0x97cdf72a</span> |
| 186 |
<a name="l00912"></a>00912 <span class="preprocessor"></span> |
| 187 |
<a name="l00921"></a><a class="code" href="group__dbprim__link.html#ga21">00921</a> <span class="preprocessor">#define LINK_ELEM_INIT(obj) { LINK_ELEM_MAGIC, 0, 0, (obj), 0, 0 }</span> |
| 188 |
<a name="l00922"></a>00922 <span class="preprocessor"></span> |
| 189 |
<a name="l00936"></a><a class="code" href="group__dbprim__link.html#ga22">00936</a> <span class="preprocessor">#define le_verify(element) ((element) && \</span> |
| 190 |
<a name="l00937"></a>00937 <span class="preprocessor"> (element)->le_magic == LINK_ELEM_MAGIC)</span> |
| 191 |
<a name="l00938"></a>00938 <span class="preprocessor"></span> |
| 192 |
<a name="l00950"></a><a class="code" href="group__dbprim__link.html#ga23">00950</a> <span class="preprocessor">#define le_next(elem) ((elem)->le_next)</span> |
| 193 |
<a name="l00951"></a>00951 <span class="preprocessor"></span> |
| 194 |
<a name="l00963"></a><a class="code" href="group__dbprim__link.html#ga24">00963</a> <span class="preprocessor">#define le_prev(elem) ((elem)->le_prev)</span> |
| 195 |
<a name="l00964"></a>00964 <span class="preprocessor"></span> |
| 196 |
<a name="l00977"></a><a class="code" href="group__dbprim__link.html#ga25">00977</a> <span class="preprocessor">#define le_object(elem) ((elem)->le_object)</span> |
| 197 |
<a name="l00978"></a>00978 <span class="preprocessor"></span> |
| 198 |
<a name="l00990"></a><a class="code" href="group__dbprim__link.html#ga26">00990</a> <span class="preprocessor">#define le_head(elem) ((elem)->le_head)</span> |
| 199 |
<a name="l00991"></a>00991 <span class="preprocessor"></span> |
| 200 |
<a name="l01003"></a><a class="code" href="group__dbprim__link.html#ga27">01003</a> <span class="preprocessor">#define le_flags(elem) ((elem)->le_flags)</span> |
| 201 |
<a name="l01004"></a>01004 <span class="preprocessor"></span> |
| 202 |
<a name="l01019"></a>01019 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__link.html#ga12">le_init</a>(link_elem_t *elem, <span class="keywordtype">void</span> *object); |
| 203 |
<a name="l01020"></a>01020 |
| 204 |
<a name="l01034"></a>01034 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__hash.html#ga7">hash_fnv1</a>(hash_table_t *table, db_key_t *key); |
| 205 |
<a name="l01035"></a>01035 |
| 206 |
<a name="l01049"></a>01049 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__hash.html#ga8">hash_fnv1a</a>(hash_table_t *table, db_key_t *key); |
| 207 |
<a name="l01050"></a>01050 |
| 208 |
<a name="l01063"></a>01063 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__hash.html#ga9">hash_comp</a>(hash_table_t *table, db_key_t *key1, db_key_t *key2); |
| 209 |
<a name="l01064"></a>01064 |
| 210 |
<a name="l01071"></a><a class="code" href="struct__hash__table__s.html">01071</a> <span class="keyword">struct </span><a class="code" href="struct__hash__table__s.html">_hash_table_s</a> { |
| 211 |
<a name="l01072"></a><a class="code" href="struct__hash__table__s.html#o0">01072</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="struct__hash__table__s.html#o0">ht_magic</a>; |
| 212 |
<a name="l01073"></a><a class="code" href="struct__hash__table__s.html#o1">01073</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="struct__hash__table__s.html#o1">ht_flags</a>; |
| 213 |
<a name="l01074"></a><a class="code" href="struct__hash__table__s.html#o2">01074</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="struct__hash__table__s.html#o2">ht_modulus</a>; |
| 214 |
<a name="l01076"></a><a class="code" href="struct__hash__table__s.html#o3">01076</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="struct__hash__table__s.html#o3">ht_count</a>; |
| 215 |
<a name="l01077"></a><a class="code" href="struct__hash__table__s.html#o4">01077</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="struct__hash__table__s.html#o4">ht_rollover</a>; |
| 216 |
<a name="l01078"></a><a class="code" href="struct__hash__table__s.html#o5">01078</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="struct__hash__table__s.html#o5">ht_rollunder</a>; |
| 217 |
<a name="l01079"></a><a class="code" href="struct__hash__table__s.html#o6">01079</a> link_head_t *<a class="code" href="struct__hash__table__s.html#o6">ht_table</a>; |
| 218 |
<a name="l01080"></a><a class="code" href="struct__hash__table__s.html#o7">01080</a> <a class="code" href="group__dbprim__hash.html#ga4">hash_func_t</a> <a class="code" href="struct__hash__table__s.html#o7">ht_func</a>; |
| 219 |
<a name="l01081"></a><a class="code" href="struct__hash__table__s.html#o8">01081</a> <a class="code" href="group__dbprim__hash.html#ga5">hash_comp_t</a> <a class="code" href="struct__hash__table__s.html#o8">ht_comp</a>; |
| 220 |
<a name="l01082"></a><a class="code" href="struct__hash__table__s.html#o9">01082</a> <a class="code" href="group__dbprim__hash.html#ga6">hash_resize_t</a> <a class="code" href="struct__hash__table__s.html#o9">ht_resize</a>; |
| 221 |
<a name="l01083"></a><a class="code" href="struct__hash__table__s.html#o10">01083</a> <span class="keywordtype">void</span> *<a class="code" href="struct__hash__table__s.html#o10">ht_extra</a>; |
| 222 |
<a name="l01084"></a>01084 }; |
| 223 |
<a name="l01085"></a>01085 |
| 224 |
<a name="l01092"></a><a class="code" href="group__dbprim__hash.html#ga22">01092</a> <span class="preprocessor">#define HASH_TABLE_MAGIC 0x2da7ffd9</span> |
| 225 |
<a name="l01093"></a>01093 <span class="preprocessor"></span> |
| 226 |
<a name="l01100"></a><a class="code" href="group__dbprim__hash.html#ga23">01100</a> <span class="preprocessor">#define HASH_FLAG_AUTOGROW 0x00000001 </span><span class="comment">/* let table automatically grow */</span> |
| 227 |
<a name="l01101"></a>01101 |
| 228 |
<a name="l01108"></a><a class="code" href="group__dbprim__hash.html#ga24">01108</a> <span class="preprocessor">#define HASH_FLAG_AUTOSHRINK 0x00000002 </span><span class="comment">/* let table automatically shrink */</span> |
| 229 |
<a name="l01109"></a>01109 |
| 230 |
<a name="l01116"></a><a class="code" href="group__dbprim__hash.html#ga25">01116</a> <span class="preprocessor">#define HASH_FLAG_MASK (HASH_FLAG_AUTOGROW | HASH_FLAG_AUTOSHRINK)</span> |
| 231 |
<a name="l01117"></a>01117 <span class="preprocessor"></span> |
| 232 |
<a name="l01124"></a><a class="code" href="dbprim_8h.html#a25">01124</a> <span class="preprocessor">#define HASH_FLAG_FREEZE 0x80000000 </span><span class="comment">/* hash table frozen */</span> |
| 233 |
<a name="l01125"></a>01125 |
| 234 |
<a name="l01145"></a><a class="code" href="group__dbprim__hash.html#ga26">01145</a> <span class="preprocessor">#define HASH_TABLE_INIT(flags, func, comp, resize, extra) \</span> |
| 235 |
<a name="l01146"></a>01146 <span class="preprocessor"> { HASH_TABLE_MAGIC, (flags) & HASH_FLAG_MASK, 0, 0, 0, 0, 0, \</span> |
| 236 |
<a name="l01147"></a>01147 <span class="preprocessor"> (func), (comp), (resize), (extra) }</span> |
| 237 |
<a name="l01148"></a>01148 <span class="preprocessor"></span> |
| 238 |
<a name="l01162"></a><a class="code" href="group__dbprim__hash.html#ga27">01162</a> <span class="preprocessor">#define ht_verify(table) ((table) && \</span> |
| 239 |
<a name="l01163"></a>01163 <span class="preprocessor"> (table)->ht_magic == HASH_TABLE_MAGIC)</span> |
| 240 |
<a name="l01164"></a>01164 <span class="preprocessor"></span> |
| 241 |
<a name="l01179"></a><a class="code" href="group__dbprim__hash.html#ga28">01179</a> <span class="preprocessor">#define ht_flags(table) ((table)->ht_flags)</span> |
| 242 |
<a name="l01180"></a>01180 <span class="preprocessor"></span> |
| 243 |
<a name="l01193"></a><a class="code" href="group__dbprim__hash.html#ga29">01193</a> <span class="preprocessor">#define ht_frozen(table) ((table)->ht_flags & HASH_FLAG_FREEZE)</span> |
| 244 |
<a name="l01194"></a>01194 <span class="preprocessor"></span> |
| 245 |
<a name="l01208"></a><a class="code" href="group__dbprim__hash.html#ga30">01208</a> <span class="preprocessor">#define ht_modulus(table) ((table)->ht_modulus)</span> |
| 246 |
<a name="l01209"></a>01209 <span class="preprocessor"></span> |
| 247 |
<a name="l01221"></a><a class="code" href="group__dbprim__hash.html#ga31">01221</a> <span class="preprocessor">#define ht_count(table) ((table)->ht_count)</span> |
| 248 |
<a name="l01222"></a>01222 <span class="preprocessor"></span> |
| 249 |
<a name="l01232"></a><a class="code" href="group__dbprim__hash.html#ga32">01232</a> <span class="preprocessor">#define ht_func(table) ((table)->ht_func)</span> |
| 250 |
<a name="l01233"></a>01233 <span class="preprocessor"></span> |
| 251 |
<a name="l01243"></a><a class="code" href="group__dbprim__hash.html#ga33">01243</a> <span class="preprocessor">#define ht_comp(table) ((table)->ht_comp)</span> |
| 252 |
<a name="l01244"></a>01244 <span class="preprocessor"></span> |
| 253 |
<a name="l01254"></a><a class="code" href="group__dbprim__hash.html#ga34">01254</a> <span class="preprocessor">#define ht_rsize(table) ((table)->ht_resize)</span> |
| 254 |
<a name="l01255"></a>01255 <span class="preprocessor"></span> |
| 255 |
<a name="l01266"></a><a class="code" href="group__dbprim__hash.html#ga35">01266</a> <span class="preprocessor">#define ht_extra(table) ((table)->ht_extra)</span> |
| 256 |
<a name="l01267"></a>01267 <span class="preprocessor"></span> |
| 257 |
<a name="l01278"></a><a class="code" href="group__dbprim__hash.html#ga36">01278</a> <span class="preprocessor">#define ht_size(table) ((table)->ht_modulus * sizeof(link_head_t))</span> |
| 258 |
<a name="l01279"></a>01279 <span class="preprocessor"></span> |
| 259 |
<a name="l01310"></a>01310 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__hash.html#ga10">ht_init</a>(hash_table_t *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> flags, |
| 260 |
<a name="l01311"></a>01311 <a class="code" href="group__dbprim__hash.html#ga4">hash_func_t</a> func, <a class="code" href="group__dbprim__hash.html#ga5">hash_comp_t</a> comp, |
| 261 |
<a name="l01312"></a>01312 <a class="code" href="group__dbprim__hash.html#ga6">hash_resize_t</a> resize, <span class="keywordtype">void</span> *extra, |
| 262 |
<a name="l01313"></a>01313 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> init_mod); |
| 263 |
<a name="l01314"></a>01314 |
| 264 |
<a name="l01337"></a>01337 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__hash.html#ga11">ht_add</a>(hash_table_t *table, hash_entry_t *entry, db_key_t *key); |
| 265 |
<a name="l01338"></a>01338 |
| 266 |
<a name="l01360"></a>01360 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__hash.html#ga12">ht_move</a>(hash_table_t *table, hash_entry_t *entry, db_key_t *key); |
| 267 |
<a name="l01361"></a>01361 |
| 268 |
<a name="l01379"></a>01379 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__hash.html#ga13">ht_remove</a>(hash_table_t *table, hash_entry_t *entry); |
| 269 |
<a name="l01380"></a>01380 |
| 270 |
<a name="l01397"></a>01397 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__hash.html#ga14">ht_find</a>(hash_table_t *table, hash_entry_t **entry_p, |
| 271 |
<a name="l01398"></a>01398 db_key_t *key); |
| 272 |
<a name="l01399"></a>01399 |
| 273 |
<a name="l01420"></a>01420 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__hash.html#ga15">ht_iter</a>(hash_table_t *table, <a class="code" href="group__dbprim__hash.html#ga3">hash_iter_t</a> iter_func, <span class="keywordtype">void</span> *extra); |
| 274 |
<a name="l01421"></a>01421 |
| 275 |
<a name="l01444"></a>01444 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__hash.html#ga16">ht_flush</a>(hash_table_t *table, <a class="code" href="group__dbprim__hash.html#ga3">hash_iter_t</a> flush_func, |
| 276 |
<a name="l01445"></a>01445 <span class="keywordtype">void</span> *extra); |
| 277 |
<a name="l01446"></a>01446 |
| 278 |
<a name="l01465"></a>01465 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__hash.html#ga17">ht_resize</a>(hash_table_t *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> new_size); |
| 279 |
<a name="l01466"></a>01466 |
| 280 |
<a name="l01479"></a>01479 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__hash.html#ga18">ht_free</a>(hash_table_t *table); |
| 281 |
<a name="l01480"></a>01480 |
| 282 |
<a name="l01487"></a><a class="code" href="struct__hash__entry__s.html">01487</a> <span class="keyword">struct </span><a class="code" href="struct__hash__entry__s.html">_hash_entry_s</a> { |
| 283 |
<a name="l01488"></a><a class="code" href="struct__hash__entry__s.html#o0">01488</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="struct__hash__entry__s.html#o0">he_magic</a>; |
| 284 |
<a name="l01489"></a><a class="code" href="struct__hash__entry__s.html#o1">01489</a> link_elem_t <a class="code" href="struct__hash__entry__s.html#o1">he_elem</a>; |
| 285 |
<a name="l01490"></a><a class="code" href="struct__hash__entry__s.html#o2">01490</a> hash_table_t *<a class="code" href="struct__hash__entry__s.html#o2">he_table</a>; |
| 286 |
<a name="l01491"></a><a class="code" href="struct__hash__entry__s.html#o3">01491</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="struct__hash__entry__s.html#o3">he_hash</a>; |
| 287 |
<a name="l01492"></a><a class="code" href="struct__hash__entry__s.html#o4">01492</a> db_key_t <a class="code" href="struct__hash__entry__s.html#o4">he_key</a>; |
| 288 |
<a name="l01493"></a><a class="code" href="struct__hash__entry__s.html#o5">01493</a> <span class="keywordtype">void</span> *<a class="code" href="struct__hash__entry__s.html#o5">he_value</a>; |
| 289 |
<a name="l01494"></a>01494 }; |
| 290 |
<a name="l01495"></a>01495 |
| 291 |
<a name="l01502"></a><a class="code" href="group__dbprim__hash.html#ga37">01502</a> <span class="preprocessor">#define HASH_ENTRY_MAGIC 0x35afaf51</span> |
| 292 |
<a name="l01503"></a>01503 <span class="preprocessor"></span> |
| 293 |
<a name="l01512"></a><a class="code" href="group__dbprim__hash.html#ga38">01512</a> <span class="preprocessor">#define HASH_ENTRY_INIT(value) \</span> |
| 294 |
<a name="l01513"></a>01513 <span class="preprocessor"> { HASH_ENTRY_MAGIC, LINK_ELEM_INIT(0), 0, 0, DB_KEY_INIT(0, 0), (value) }</span> |
| 295 |
<a name="l01514"></a>01514 <span class="preprocessor"></span> |
| 296 |
<a name="l01528"></a><a class="code" href="group__dbprim__hash.html#ga39">01528</a> <span class="preprocessor">#define he_verify(entry) ((entry) && \</span> |
| 297 |
<a name="l01529"></a>01529 <span class="preprocessor"> (entry)->he_magic == HASH_ENTRY_MAGIC)</span> |
| 298 |
<a name="l01530"></a>01530 <span class="preprocessor"></span> |
| 299 |
<a name="l01543"></a><a class="code" href="group__dbprim__hash.html#ga40">01543</a> <span class="preprocessor">#define he_link(entry) (&((entry)->he_elem))</span> |
| 300 |
<a name="l01544"></a>01544 <span class="preprocessor"></span> |
| 301 |
<a name="l01556"></a><a class="code" href="group__dbprim__hash.html#ga41">01556</a> <span class="preprocessor">#define he_flags(entry) ((entry)->he_elem.le_flags)</span> |
| 302 |
<a name="l01557"></a>01557 <span class="preprocessor"></span> |
| 303 |
<a name="l01567"></a><a class="code" href="group__dbprim__hash.html#ga42">01567</a> <span class="preprocessor">#define he_table(entry) ((entry)->he_table)</span> |
| 304 |
<a name="l01568"></a>01568 <span class="preprocessor"></span> |
| 305 |
<a name="l01581"></a><a class="code" href="group__dbprim__hash.html#ga43">01581</a> <span class="preprocessor">#define he_hash(entry) ((entry)->he_hash)</span> |
| 306 |
<a name="l01582"></a>01582 <span class="preprocessor"></span> |
| 307 |
<a name="l01592"></a><a class="code" href="group__dbprim__hash.html#ga44">01592</a> <span class="preprocessor">#define he_key(entry) (&((entry)->he_key))</span> |
| 308 |
<a name="l01593"></a>01593 <span class="preprocessor"></span> |
| 309 |
<a name="l01606"></a><a class="code" href="group__dbprim__hash.html#ga45">01606</a> <span class="preprocessor">#define he_value(entry) ((entry)->he_value)</span> |
| 310 |
<a name="l01607"></a>01607 <span class="preprocessor"></span> |
| 311 |
<a name="l01621"></a>01621 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__hash.html#ga19">he_init</a>(hash_entry_t *entry, <span class="keywordtype">void</span> *value); |
| 312 |
<a name="l01622"></a>01622 |
| 313 |
<a name="l01631"></a>01631 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__smat.html#ga8">smat_cleanup</a>(<span class="keywordtype">void</span>); |
| 314 |
<a name="l01632"></a>01632 |
| 315 |
<a name="l01642"></a>01642 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__smat.html#ga9">smat_freemem</a>(<span class="keywordtype">void</span>); |
| 316 |
<a name="l01643"></a>01643 |
| 317 |
<a name="l01656"></a><a class="code" href="group__dbprim__smat.html#ga32">01656</a> <span class="preprocessor">#define _smat_ent(ent) ((smat_entry_t *)le_object(ent))</span> |
| 318 |
<a name="l01657"></a>01657 <span class="preprocessor"></span> |
| 319 |
<a name="l01664"></a><a class="code" href="struct__smat__table__s.html">01664</a> <span class="keyword">struct </span><a class="code" href="struct__smat__table__s.html">_smat_table_s</a> { |
| 320 |
<a name="l01665"></a><a class="code" href="struct__smat__table__s.html#o0">01665</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="struct__smat__table__s.html#o0">st_magic</a>; |
| 321 |
<a name="l01666"></a><a class="code" href="struct__smat__table__s.html#o1">01666</a> <a class="code" href="group__dbprim__smat.html#ga3">smat_resize_t</a> <a class="code" href="struct__smat__table__s.html#o1">st_resize</a>; |
| 322 |
<a name="l01667"></a><a class="code" href="struct__smat__table__s.html#o2">01667</a> <span class="keywordtype">void</span> *<a class="code" href="struct__smat__table__s.html#o2">st_extra</a>; |
| 323 |
<a name="l01668"></a><a class="code" href="struct__smat__table__s.html#o3">01668</a> hash_table_t <a class="code" href="struct__smat__table__s.html#o3">st_table</a>; |
| 324 |
<a name="l01669"></a>01669 }; |
| 325 |
<a name="l01670"></a>01670 |
| 326 |
<a name="l01678"></a><a class="code" href="group__dbprim__smat.html#ga33">01678</a> <span class="preprocessor">#define SMAT_TABLE_MAGIC 0x2f92a7b1</span> |
| 327 |
<a name="l01679"></a>01679 <span class="preprocessor"></span> |
| 328 |
<a name="l01693"></a><a class="code" href="group__dbprim__smat.html#ga34">01693</a> <span class="preprocessor">#define st_verify(table) ((table) && \</span> |
| 329 |
<a name="l01694"></a>01694 <span class="preprocessor"> (table)->st_magic == SMAT_TABLE_MAGIC)</span> |
| 330 |
<a name="l01695"></a>01695 <span class="preprocessor"></span> |
| 331 |
<a name="l01710"></a><a class="code" href="group__dbprim__smat.html#ga35">01710</a> <span class="preprocessor">#define st_flags(table) ((table)->st_table.ht_flags)</span> |
| 332 |
<a name="l01711"></a>01711 <span class="preprocessor"></span> |
| 333 |
<a name="l01724"></a><a class="code" href="group__dbprim__smat.html#ga36">01724</a> <span class="preprocessor">#define st_frozen(table) ((table)->st_table.ht_flags & HASH_FLAG_FREEZE)</span> |
| 334 |
<a name="l01725"></a>01725 <span class="preprocessor"></span> |
| 335 |
<a name="l01739"></a><a class="code" href="group__dbprim__smat.html#ga37">01739</a> <span class="preprocessor">#define st_modulus(table) ((table)->st_table.ht_modulus)</span> |
| 336 |
<a name="l01740"></a>01740 <span class="preprocessor"></span> |
| 337 |
<a name="l01752"></a><a class="code" href="group__dbprim__smat.html#ga38">01752</a> <span class="preprocessor">#define st_count(table) ((table)->st_table.ht_count)</span> |
| 338 |
<a name="l01753"></a>01753 <span class="preprocessor"></span> |
| 339 |
<a name="l01763"></a><a class="code" href="group__dbprim__hash.html#ga46">01763</a> <span class="preprocessor">#define st_rsize(table) ((table)->st_resize)</span> |
| 340 |
<a name="l01764"></a>01764 <span class="preprocessor"></span> |
| 341 |
<a name="l01775"></a><a class="code" href="group__dbprim__smat.html#ga39">01775</a> <span class="preprocessor">#define st_extra(table) ((table)->st_extra)</span> |
| 342 |
<a name="l01776"></a>01776 <span class="preprocessor"></span> |
| 343 |
<a name="l01791"></a><a class="code" href="group__dbprim__smat.html#ga40">01791</a> <span class="preprocessor">#define st_size(table) ((table)->st_table.ht_modulus * sizeof(link_head_t) + \</span> |
| 344 |
<a name="l01792"></a>01792 <span class="preprocessor"> (table)->st_table.ht_count * sizeof(smat_entry_t))</span> |
| 345 |
<a name="l01793"></a>01793 <span class="preprocessor"></span> |
| 346 |
<a name="l01821"></a>01821 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__smat.html#ga10">st_init</a>(smat_table_t *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> flags, |
| 347 |
<a name="l01822"></a>01822 <a class="code" href="group__dbprim__smat.html#ga3">smat_resize_t</a> resize, <span class="keywordtype">void</span> *extra, |
| 348 |
<a name="l01823"></a>01823 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> init_mod); |
| 349 |
<a name="l01824"></a>01824 |
| 350 |
<a name="l01873"></a>01873 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__smat.html#ga11">st_add</a>(smat_table_t *table, smat_entry_t **entry_p, |
| 351 |
<a name="l01874"></a>01874 smat_head_t *head1, <a class="code" href="group__dbprim__link.html#ga4">link_loc_t</a> loc1, smat_entry_t *ent1, |
| 352 |
<a name="l01875"></a>01875 smat_head_t *head2, <a class="code" href="group__dbprim__link.html#ga4">link_loc_t</a> loc2, smat_entry_t *ent2); |
| 353 |
<a name="l01876"></a>01876 |
| 354 |
<a name="l01892"></a>01892 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__smat.html#ga12">st_remove</a>(smat_table_t *table, smat_entry_t *entry); |
| 355 |
<a name="l01893"></a>01893 |
| 356 |
<a name="l01915"></a>01915 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__smat.html#ga13">st_find</a>(smat_table_t *table, smat_entry_t **entry_p, |
| 357 |
<a name="l01916"></a>01916 smat_head_t *head1, smat_head_t *head2); |
| 358 |
<a name="l01917"></a>01917 |
| 359 |
<a name="l01938"></a>01938 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__smat.html#ga14">st_iter</a>(smat_table_t *table, <a class="code" href="group__dbprim__smat.html#ga4">smat_iter_t</a> iter_func, <span class="keywordtype">void</span> *extra); |
| 360 |
<a name="l01939"></a>01939 |
| 361 |
<a name="l01962"></a>01962 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__smat.html#ga15">st_flush</a>(smat_table_t *table, <a class="code" href="group__dbprim__smat.html#ga4">smat_iter_t</a> flush_func, |
| 362 |
<a name="l01963"></a>01963 <span class="keywordtype">void</span> *extra); |
| 363 |
<a name="l01964"></a>01964 |
| 364 |
<a name="l01983"></a>01983 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__smat.html#ga16">st_resize</a>(smat_table_t *table, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> new_size); |
| 365 |
<a name="l01984"></a>01984 |
| 366 |
<a name="l01997"></a>01997 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__smat.html#ga17">st_free</a>(smat_table_t *table); |
| 367 |
<a name="l01998"></a>01998 |
| 368 |
<a name="l02005"></a><a class="code" href="struct__smat__head__s.html">02005</a> <span class="keyword">struct </span><a class="code" href="struct__smat__head__s.html">_smat_head_s</a> { |
| 369 |
<a name="l02006"></a><a class="code" href="struct__smat__head__s.html#o0">02006</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="struct__smat__head__s.html#o0">sh_magic</a>; |
| 370 |
<a name="l02007"></a><a class="code" href="struct__smat__head__s.html#o1">02007</a> <a class="code" href="group__dbprim__smat.html#ga6">smat_loc_t</a> <a class="code" href="struct__smat__head__s.html#o1">sh_elem</a>; |
| 371 |
<a name="l02008"></a><a class="code" href="struct__smat__head__s.html#o2">02008</a> smat_table_t *<a class="code" href="struct__smat__head__s.html#o2">sh_table</a>; |
| 372 |
<a name="l02009"></a><a class="code" href="struct__smat__head__s.html#o3">02009</a> link_head_t <a class="code" href="struct__smat__head__s.html#o3">sh_head</a>; |
| 373 |
<a name="l02010"></a>02010 }; |
| 374 |
<a name="l02011"></a>02011 |
| 375 |
<a name="l02019"></a><a class="code" href="group__dbprim__smat.html#ga41">02019</a> <span class="preprocessor">#define SMAT_HEAD_MAGIC 0x4e5d9b8e</span> |
| 376 |
<a name="l02020"></a>02020 <span class="preprocessor"></span> |
| 377 |
<a name="l02033"></a><a class="code" href="group__dbprim__smat.html#ga42">02033</a> <span class="preprocessor">#define SMAT_HEAD_INIT(elem, object) \</span> |
| 378 |
<a name="l02034"></a>02034 <span class="preprocessor"> { SMAT_HEAD_MAGIC, (elem), 0, LINK_HEAD_INIT(object) }</span> |
| 379 |
<a name="l02035"></a>02035 <span class="preprocessor"></span> |
| 380 |
<a name="l02049"></a><a class="code" href="group__dbprim__smat.html#ga43">02049</a> <span class="preprocessor">#define sh_verify(head) ((head) && \</span> |
| 381 |
<a name="l02050"></a>02050 <span class="preprocessor"> (head)->sh_magic == SMAT_HEAD_MAGIC)</span> |
| 382 |
<a name="l02051"></a>02051 <span class="preprocessor"></span> |
| 383 |
<a name="l02062"></a><a class="code" href="group__dbprim__smat.html#ga44">02062</a> <span class="preprocessor">#define sh_elem(head) ((head)->sh_elem)</span> |
| 384 |
<a name="l02063"></a>02063 <span class="preprocessor"></span> |
| 385 |
<a name="l02074"></a><a class="code" href="group__dbprim__smat.html#ga45">02074</a> <span class="preprocessor">#define sh_table(head) ((head)->sh_table)</span> |
| 386 |
<a name="l02075"></a>02075 <span class="preprocessor"></span> |
| 387 |
<a name="l02088"></a><a class="code" href="group__dbprim__smat.html#ga46">02088</a> <span class="preprocessor">#define sh_frozen(head) (st_frozen((head)->sh_table))</span> |
| 388 |
<a name="l02089"></a>02089 <span class="preprocessor"></span> |
| 389 |
<a name="l02101"></a><a class="code" href="group__dbprim__smat.html#ga47">02101</a> <span class="preprocessor">#define sh_count(head) ((head)->sh_head.lh_count)</span> |
| 390 |
<a name="l02102"></a>02102 <span class="preprocessor"></span> |
| 391 |
<a name="l02115"></a><a class="code" href="group__dbprim__smat.html#ga48">02115</a> <span class="preprocessor">#define _sh_first(head) ((head)->sh_head.lh_first)</span> |
| 392 |
<a name="l02116"></a>02116 <span class="preprocessor"></span> |
| 393 |
<a name="l02129"></a><a class="code" href="group__dbprim__smat.html#ga49">02129</a> <span class="preprocessor">#define sh_first(head) (_sh_first(head) ? _smat_ent(_sh_first(head)) : 0)</span> |
| 394 |
<a name="l02130"></a>02130 <span class="preprocessor"></span> |
| 395 |
<a name="l02143"></a><a class="code" href="group__dbprim__smat.html#ga50">02143</a> <span class="preprocessor">#define _sh_last(head) ((head)->sh_head.lh_last)</span> |
| 396 |
<a name="l02144"></a>02144 <span class="preprocessor"></span> |
| 397 |
<a name="l02157"></a><a class="code" href="group__dbprim__smat.html#ga51">02157</a> <span class="preprocessor">#define sh_last(head) (_sh_last(head) ? _smat_ent(_sh_last(head)) : 0)</span> |
| 398 |
<a name="l02158"></a>02158 <span class="preprocessor"></span> |
| 399 |
<a name="l02169"></a><a class="code" href="group__dbprim__smat.html#ga52">02169</a> <span class="preprocessor">#define sh_object(head) ((head)->sh_head.lh_extra)</span> |
| 400 |
<a name="l02170"></a>02170 <span class="preprocessor"></span> |
| 401 |
<a name="l02185"></a><a class="code" href="group__dbprim__smat.html#ga53">02185</a> <span class="preprocessor">#define sh_size(head) ((head)->sh_elem.lh_count * sizeof(smat_entry_t))</span> |
| 402 |
<a name="l02186"></a>02186 <span class="preprocessor"></span> |
| 403 |
<a name="l02204"></a>02204 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__smat.html#ga18">sh_init</a>(smat_head_t *head, <a class="code" href="group__dbprim__smat.html#ga6">smat_loc_t</a> elem, <span class="keywordtype">void</span> *object); |
| 404 |
<a name="l02205"></a>02205 |
| 405 |
<a name="l02231"></a>02231 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__smat.html#ga19">sh_move</a>(smat_head_t *head, smat_entry_t *elem, <a class="code" href="group__dbprim__link.html#ga4">link_loc_t</a> loc, |
| 406 |
<a name="l02232"></a>02232 smat_entry_t *elem2); |
| 407 |
<a name="l02233"></a>02233 |
| 408 |
<a name="l02261"></a>02261 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__smat.html#ga20">sh_find</a>(smat_head_t *head, smat_entry_t **elem_p, |
| 409 |
<a name="l02262"></a>02262 <a class="code" href="group__dbprim__smat.html#ga5">smat_comp_t</a> comp_func, smat_entry_t *start, |
| 410 |
<a name="l02263"></a>02263 db_key_t *key); |
| 411 |
<a name="l02264"></a>02264 |
| 412 |
<a name="l02294"></a>02294 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__smat.html#ga21">sh_iter</a>(smat_head_t *head, smat_entry_t *start, |
| 413 |
<a name="l02295"></a>02295 <a class="code" href="group__dbprim__smat.html#ga4">smat_iter_t</a> iter_func, <span class="keywordtype">void</span> *extra, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> flags); |
| 414 |
<a name="l02296"></a>02296 |
| 415 |
<a name="l02319"></a>02319 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__smat.html#ga22">sh_flush</a>(smat_head_t *head, <a class="code" href="group__dbprim__smat.html#ga4">smat_iter_t</a> flush_func, <span class="keywordtype">void</span> *extra); |
| 416 |
<a name="l02320"></a>02320 |
| 417 |
<a name="l02327"></a><a class="code" href="struct__smat__entry__s.html">02327</a> <span class="keyword">struct </span><a class="code" href="struct__smat__entry__s.html">_smat_entry_s</a> { |
| 418 |
<a name="l02328"></a><a class="code" href="struct__smat__entry__s.html#o0">02328</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="struct__smat__entry__s.html#o0">se_magic</a>; |
| 419 |
<a name="l02329"></a><a class="code" href="struct__smat__entry__s.html#o1">02329</a> smat_table_t *<a class="code" href="struct__smat__entry__s.html#o1">se_table</a>; |
| 420 |
<a name="l02330"></a><a class="code" href="struct__smat__entry__s.html#o2">02330</a> hash_entry_t <a class="code" href="struct__smat__entry__s.html#o2">se_hash</a>; |
| 421 |
<a name="l02331"></a><a class="code" href="struct__smat__entry__s.html#o3">02331</a> link_elem_t <a class="code" href="struct__smat__entry__s.html#o3">se_link</a>[2]; |
| 422 |
<a name="l02332"></a><a class="code" href="struct__smat__entry__s.html#o4">02332</a> <span class="keywordtype">void</span> *<a class="code" href="struct__smat__entry__s.html#o4">se_object</a>[2]; |
| 423 |
<a name="l02333"></a>02333 }; |
| 424 |
<a name="l02334"></a>02334 |
| 425 |
<a name="l02342"></a><a class="code" href="group__dbprim__smat.html#ga54">02342</a> <span class="preprocessor">#define SMAT_ENTRY_MAGIC 0x466b34b5</span> |
| 426 |
<a name="l02343"></a>02343 <span class="preprocessor"></span> |
| 427 |
<a name="l02357"></a><a class="code" href="group__dbprim__smat.html#ga55">02357</a> <span class="preprocessor">#define se_verify(entry) ((entry) && \</span> |
| 428 |
<a name="l02358"></a>02358 <span class="preprocessor"> (entry)->se_magic == SMAT_ENTRY_MAGIC)</span> |
| 429 |
<a name="l02359"></a>02359 <span class="preprocessor"></span> |
| 430 |
<a name="l02370"></a><a class="code" href="group__dbprim__smat.html#ga56">02370</a> <span class="preprocessor">#define se_table(entry) ((entry)->se_table)</span> |
| 431 |
<a name="l02371"></a>02371 <span class="preprocessor"></span> |
| 432 |
<a name="l02383"></a><a class="code" href="group__dbprim__smat.html#ga57">02383</a> <span class="preprocessor">#define _se_link(entry) (&((entry)->se_hash.he_elem))</span> |
| 433 |
<a name="l02384"></a>02384 <span class="preprocessor"></span> |
| 434 |
<a name="l02396"></a><a class="code" href="group__dbprim__smat.html#ga58">02396</a> <span class="preprocessor">#define se_flags(entry) ((entry)->se_hash.he_elem.le_flags)</span> |
| 435 |
<a name="l02397"></a>02397 <span class="preprocessor"></span> |
| 436 |
<a name="l02410"></a><a class="code" href="group__dbprim__smat.html#ga59">02410</a> <span class="preprocessor">#define se_hash(entry) ((entry)->se_hash.he_hash)</span> |
| 437 |
<a name="l02411"></a>02411 <span class="preprocessor"></span> |
| 438 |
<a name="l02427"></a><a class="code" href="group__dbprim__smat.html#ga60">02427</a> <span class="preprocessor">#define _se_next(entry, n) ((entry)->se_link[(n)].le_next)</span> |
| 439 |
<a name="l02428"></a>02428 <span class="preprocessor"></span> |
| 440 |
<a name="l02445"></a><a class="code" href="group__dbprim__smat.html#ga61">02445</a> <span class="preprocessor">#define se_next(entry, n) (_se_next(entry, n) ? \</span> |
| 441 |
<a name="l02446"></a>02446 <span class="preprocessor"> _smat_ent(_se_next(entry, n)) : 0)</span> |
| 442 |
<a name="l02447"></a>02447 <span class="preprocessor"></span> |
| 443 |
<a name="l02463"></a><a class="code" href="group__dbprim__smat.html#ga62">02463</a> <span class="preprocessor">#define _se_prev(entry, n) ((entry)->se_link[(n)].le_prev)</span> |
| 444 |
<a name="l02464"></a>02464 <span class="preprocessor"></span> |
| 445 |
<a name="l02481"></a><a class="code" href="group__dbprim__smat.html#ga63">02481</a> <span class="preprocessor">#define se_prev(entry, n) (_se_prev(entry, n) ? \</span> |
| 446 |
<a name="l02482"></a>02482 <span class="preprocessor"> _smat_ent(_se_prev(entry, n)) : 0)</span> |
| 447 |
<a name="l02483"></a>02483 <span class="preprocessor"></span> |
| 448 |
<a name="l02499"></a><a class="code" href="group__dbprim__smat.html#ga64">02499</a> <span class="preprocessor">#define se_lflags(entry, n) ((entry)->se_link[(n)].le_flags)</span> |
| 449 |
<a name="l02500"></a>02500 <span class="preprocessor"></span> |
| 450 |
<a name="l02515"></a><a class="code" href="group__dbprim__smat.html#ga65">02515</a> <span class="preprocessor">#define se_object(entry, n) ((entry)->se_object[(n)])</span> |
| 451 |
<a name="l02516"></a>02516 <span class="preprocessor"></span> |
| 452 |
<a name="l02531"></a>02531 <span class="keywordtype">long</span> <a class="code" href="group__dbprim__rbtree.html#ga5">rbtree_comp</a>(rb_tree_t *tree, db_key_t *key1, db_key_t *key2); |
| 453 |
<a name="l02532"></a>02532 |
| 454 |
<a name="l02539"></a><a class="code" href="struct__rb__tree__s.html">02539</a> <span class="keyword">struct </span><a class="code" href="struct__rb__tree__s.html">_rb_tree_s</a> { |
| 455 |
<a name="l02540"></a><a class="code" href="struct__rb__tree__s.html#o0">02540</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="struct__rb__tree__s.html#o0">rt_magic</a>; |
| 456 |
<a name="l02541"></a><a class="code" href="struct__rb__tree__s.html#o1">02541</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="struct__rb__tree__s.html#o1">rt_flags</a>; |
| 457 |
<a name="l02542"></a><a class="code" href="struct__rb__tree__s.html#o2">02542</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="struct__rb__tree__s.html#o2">rt_count</a>; |
| 458 |
<a name="l02543"></a><a class="code" href="struct__rb__tree__s.html#o3">02543</a> rb_node_t *<a class="code" href="struct__rb__tree__s.html#o3">rt_root</a>; |
| 459 |
<a name="l02544"></a><a class="code" href="struct__rb__tree__s.html#o4">02544</a> <a class="code" href="group__dbprim__rbtree.html#ga3">rb_comp_t</a> <a class="code" href="struct__rb__tree__s.html#o4">rt_comp</a>; |
| 460 |
<a name="l02545"></a><a class="code" href="struct__rb__tree__s.html#o5">02545</a> <span class="keywordtype">void</span> *<a class="code" href="struct__rb__tree__s.html#o5">rt_extra</a>; |
| 461 |
<a name="l02546"></a>02546 }; |
| 462 |
<a name="l02547"></a>02547 |
| 463 |
<a name="l02554"></a><a class="code" href="group__dbprim__rbtree.html#ga17">02554</a> <span class="preprocessor">#define RB_TREE_MAGIC 0xd52695be</span> |
| 464 |
<a name="l02555"></a>02555 <span class="preprocessor"></span> |
| 465 |
<a name="l02562"></a><a class="code" href="dbprim_8h.html#a82">02562</a> <span class="preprocessor">#define RBT_FLAG_FREEZE 0x80000000 </span><span class="comment">/* tree frozen */</span> |
| 466 |
<a name="l02563"></a>02563 |
| 467 |
<a name="l02574"></a><a class="code" href="group__dbprim__rbtree.html#ga18">02574</a> <span class="preprocessor">#define RB_TREE_INIT(comp, extra) { RB_TREE_MAGIC, 0, 0, 0, (comp), (extra) }</span> |
| 468 |
<a name="l02575"></a>02575 <span class="preprocessor"></span> |
| 469 |
<a name="l02589"></a><a class="code" href="group__dbprim__rbtree.html#ga19">02589</a> <span class="preprocessor">#define rt_verify(tree) ((tree) && \</span> |
| 470 |
<a name="l02590"></a>02590 <span class="preprocessor"> (tree)->rt_magic == RB_TREE_MAGIC)</span> |
| 471 |
<a name="l02591"></a>02591 <span class="preprocessor"></span> |
| 472 |
<a name="l02604"></a><a class="code" href="group__dbprim__rbtree.html#ga20">02604</a> <span class="preprocessor">#define rt_frozen(tree) ((tree)->rt_flags & RBT_FLAG_FREEZE)</span> |
| 473 |
<a name="l02605"></a>02605 <span class="preprocessor"></span> |
| 474 |
<a name="l02617"></a><a class="code" href="group__dbprim__rbtree.html#ga21">02617</a> <span class="preprocessor">#define rt_count(tree) ((tree)->rt_count)</span> |
| 475 |
<a name="l02618"></a>02618 <span class="preprocessor"></span> |
| 476 |
<a name="l02628"></a><a class="code" href="group__dbprim__rbtree.html#ga22">02628</a> <span class="preprocessor">#define rt_root(tree) ((tree)->rt_root)</span> |
| 477 |
<a name="l02629"></a>02629 <span class="preprocessor"></span> |
| 478 |
<a name="l02639"></a><a class="code" href="group__dbprim__rbtree.html#ga23">02639</a> <span class="preprocessor">#define rt_comp(tree) ((tree)->rt_comp)</span> |
| 479 |
<a name="l02640"></a>02640 <span class="preprocessor"></span> |
| 480 |
<a name="l02651"></a><a class="code" href="group__dbprim__rbtree.html#ga24">02651</a> <span class="preprocessor">#define rt_extra(tree) ((tree)->rt_extra)</span> |
| 481 |
<a name="l02652"></a>02652 <span class="preprocessor"></span> |
| 482 |
<a name="l02659"></a><a class="code" href="group__dbprim__rbtree.html#ga25">02659</a> <span class="preprocessor">#define RBT_ORDER_PRE 1</span> |
| 483 |
<a name="l02660"></a>02660 <span class="preprocessor"></span> |
| 484 |
<a name="l02667"></a><a class="code" href="group__dbprim__rbtree.html#ga26">02667</a> <span class="preprocessor">#define RBT_ORDER_IN 2</span> |
| 485 |
<a name="l02668"></a>02668 <span class="preprocessor"></span> |
| 486 |
<a name="l02675"></a><a class="code" href="group__dbprim__rbtree.html#ga27">02675</a> <span class="preprocessor">#define RBT_ORDER_POST 3</span> |
| 487 |
<a name="l02676"></a>02676 <span class="preprocessor"></span> |
| 488 |
<a name="l02682"></a><a class="code" href="group__dbprim__rbtree.html#ga28">02682</a> <span class="preprocessor">#define RBT_ORDER_MASK 0x00000003</span> |
| 489 |
<a name="l02683"></a>02683 <span class="preprocessor"></span> |
| 490 |
<a name="l02705"></a><a class="code" href="group__dbprim__rbtree.html#ga29">02705</a> <span class="preprocessor">#define rt_prev(tree, node_io, flags) \</span> |
| 491 |
<a name="l02706"></a>02706 <span class="preprocessor"> (rt_next((tree), (node_io), (flags) ^ DB_FLAG_REVERSE))</span> |
| 492 |
<a name="l02707"></a>02707 <span class="preprocessor"></span> |
| 493 |
<a name="l02722"></a>02722 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__rbtree.html#ga6">rt_init</a>(rb_tree_t *tree, <a class="code" href="group__dbprim__rbtree.html#ga3">rb_comp_t</a> comp, <span class="keywordtype">void</span> *extra); |
| 494 |
<a name="l02723"></a>02723 |
| 495 |
<a name="l02741"></a>02741 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__rbtree.html#ga7">rt_add</a>(rb_tree_t *tree, rb_node_t *node, db_key_t *key); |
| 496 |
<a name="l02742"></a>02742 |
| 497 |
<a name="l02764"></a>02764 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__rbtree.html#ga8">rt_move</a>(rb_tree_t *tree, rb_node_t *node, db_key_t *key); |
| 498 |
<a name="l02765"></a>02765 |
| 499 |
<a name="l02781"></a>02781 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__rbtree.html#ga9">rt_remove</a>(rb_tree_t *tree, rb_node_t *node); |
| 500 |
<a name="l02782"></a>02782 |
| 501 |
<a name="l02799"></a>02799 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__rbtree.html#ga10">rt_find</a>(rb_tree_t *tree, rb_node_t **node_p, db_key_t *key); |
| 502 |
<a name="l02800"></a>02800 |
| 503 |
<a name="l02825"></a>02825 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__rbtree.html#ga11">rt_next</a>(rb_tree_t *tree, rb_node_t **node_io, |
| 504 |
<a name="l02826"></a>02826 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> flags); |
| 505 |
<a name="l02827"></a>02827 |
| 506 |
<a name="l02859"></a>02859 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__rbtree.html#ga12">rt_iter</a>(rb_tree_t *tree, rb_node_t *start, |
| 507 |
<a name="l02860"></a>02860 <a class="code" href="group__dbprim__rbtree.html#ga2">rb_iter_t</a> iter_func, <span class="keywordtype">void</span> *extra, <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> flags); |
| 508 |
<a name="l02861"></a>02861 |
| 509 |
<a name="l02883"></a>02883 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__rbtree.html#ga13">rt_flush</a>(rb_tree_t *tree, <a class="code" href="group__dbprim__rbtree.html#ga2">rb_iter_t</a> flush_func, <span class="keywordtype">void</span> *extra); |
| 510 |
<a name="l02884"></a>02884 |
| 511 |
<a name="l02891"></a><a class="code" href="struct__rb__node__s.html">02891</a> <span class="keyword">struct </span><a class="code" href="struct__rb__node__s.html">_rb_node_s</a> { |
| 512 |
<a name="l02892"></a><a class="code" href="struct__rb__node__s.html#o0">02892</a> <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="struct__rb__node__s.html#o0">rn_magic</a>; |
| 513 |
<a name="l02893"></a><a class="code" href="struct__rb__node__s.html#o1">02893</a> <a class="code" href="group__dbprim__rbtree.html#ga4">rb_color_t</a> <a class="code" href="struct__rb__node__s.html#o1">rn_color</a>; |
| 514 |
<a name="l02894"></a><a class="code" href="struct__rb__node__s.html#o2">02894</a> rb_tree_t *<a class="code" href="struct__rb__node__s.html#o2">rn_tree</a>; |
| 515 |
<a name="l02895"></a><a class="code" href="struct__rb__node__s.html#o3">02895</a> rb_node_t *<a class="code" href="struct__rb__node__s.html#o3">rn_parent</a>; |
| 516 |
<a name="l02896"></a><a class="code" href="struct__rb__node__s.html#o4">02896</a> rb_node_t *<a class="code" href="struct__rb__node__s.html#o4">rn_left</a>; |
| 517 |
<a name="l02897"></a><a class="code" href="struct__rb__node__s.html#o5">02897</a> rb_node_t *<a class="code" href="struct__rb__node__s.html#o5">rn_right</a>; |
| 518 |
<a name="l02898"></a><a class="code" href="struct__rb__node__s.html#o6">02898</a> db_key_t <a class="code" href="struct__rb__node__s.html#o6">rn_key</a>; |
| 519 |
<a name="l02899"></a><a class="code" href="struct__rb__node__s.html#o7">02899</a> <span class="keywordtype">void</span> *<a class="code" href="struct__rb__node__s.html#o7">rn_value</a>; |
| 520 |
<a name="l02900"></a>02900 }; |
| 521 |
<a name="l02901"></a>02901 |
| 522 |
<a name="l02908"></a><a class="code" href="group__dbprim__rbtree.html#ga30">02908</a> <span class="preprocessor">#define RB_NODE_MAGIC 0x3dea4d01</span> |
| 523 |
<a name="l02909"></a>02909 <span class="preprocessor"></span> |
| 524 |
<a name="l02918"></a><a class="code" href="group__dbprim__rbtree.html#ga31">02918</a> <span class="preprocessor">#define RB_NODE_INIT(value) \</span> |
| 525 |
<a name="l02919"></a>02919 <span class="preprocessor"> { RB_NODE_MAGIC, RB_COLOR_NONE, 0, 0, 0, 0, DB_KEY_INIT(0, 0), (value)}</span> |
| 526 |
<a name="l02920"></a>02920 <span class="preprocessor"></span> |
| 527 |
<a name="l02934"></a><a class="code" href="group__dbprim__rbtree.html#ga32">02934</a> <span class="preprocessor">#define rn_verify(node) ((node) && \</span> |
| 528 |
<a name="l02935"></a>02935 <span class="preprocessor"> (node)->rn_magic == RB_NODE_MAGIC)</span> |
| 529 |
<a name="l02936"></a>02936 <span class="preprocessor"></span> |
| 530 |
<a name="l02947"></a><a class="code" href="group__dbprim__rbtree.html#ga33">02947</a> <span class="preprocessor">#define rn_color(node) ((node)->rn_color)</span> |
| 531 |
<a name="l02948"></a>02948 <span class="preprocessor"></span> |
| 532 |
<a name="l02959"></a><a class="code" href="group__dbprim__rbtree.html#ga34">02959</a> <span class="preprocessor">#define rn_tree(node) ((node)->rn_tree)</span> |
| 533 |
<a name="l02960"></a>02960 <span class="preprocessor"></span> |
| 534 |
<a name="l02971"></a><a class="code" href="group__dbprim__rbtree.html#ga35">02971</a> <span class="preprocessor">#define rn_parent(node) ((node)->rn_parent)</span> |
| 535 |
<a name="l02972"></a>02972 <span class="preprocessor"></span> |
| 536 |
<a name="l02983"></a><a class="code" href="group__dbprim__rbtree.html#ga36">02983</a> <span class="preprocessor">#define rn_left(node) ((node)->rn_left)</span> |
| 537 |
<a name="l02984"></a>02984 <span class="preprocessor"></span> |
| 538 |
<a name="l02995"></a><a class="code" href="group__dbprim__rbtree.html#ga37">02995</a> <span class="preprocessor">#define rn_right(node) ((node)->rn_right)</span> |
| 539 |
<a name="l02996"></a>02996 <span class="preprocessor"></span> |
| 540 |
<a name="l03007"></a><a class="code" href="group__dbprim__rbtree.html#ga38">03007</a> <span class="preprocessor">#define rn_key(node) (&((node)->rn_key))</span> |
| 541 |
<a name="l03008"></a>03008 <span class="preprocessor"></span> |
| 542 |
<a name="l03021"></a><a class="code" href="group__dbprim__rbtree.html#ga39">03021</a> <span class="preprocessor">#define rn_value(node) ((node)->rn_value)</span> |
| 543 |
<a name="l03022"></a>03022 <span class="preprocessor"></span> |
| 544 |
<a name="l03036"></a><a class="code" href="group__dbprim__rbtree.html#ga40">03036</a> <span class="preprocessor">#define rn_isblack(node) (!(node) || (node)->rn_color == RB_COLOR_BLACK)</span> |
| 545 |
<a name="l03037"></a>03037 <span class="preprocessor"></span> |
| 546 |
<a name="l03051"></a><a class="code" href="group__dbprim__rbtree.html#ga41">03051</a> <span class="preprocessor">#define rn_isred(node) ((node) && (node)->rn_color == RB_COLOR_RED)</span> |
| 547 |
<a name="l03052"></a>03052 <span class="preprocessor"></span> |
| 548 |
<a name="l03067"></a><a class="code" href="group__dbprim__rbtree.html#ga42">03067</a> <span class="preprocessor">#define rn_isleft(node) ((node)->rn_parent && \</span> |
| 549 |
<a name="l03068"></a>03068 <span class="preprocessor"> (node)->rn_parent->rn_left == (node))</span> |
| 550 |
<a name="l03069"></a>03069 <span class="preprocessor"></span> |
| 551 |
<a name="l03084"></a><a class="code" href="group__dbprim__rbtree.html#ga43">03084</a> <span class="preprocessor">#define rn_isright(node) ((node)->rn_parent && \</span> |
| 552 |
<a name="l03085"></a>03085 <span class="preprocessor"> (node)->rn_parent->rn_right == (node))</span> |
| 553 |
<a name="l03086"></a>03086 <span class="preprocessor"></span> |
| 554 |
<a name="l03100"></a>03100 <span class="keywordtype">unsigned</span> <span class="keywordtype">long</span> <a class="code" href="group__dbprim__rbtree.html#ga14">rn_init</a>(rb_node_t *node, <span class="keywordtype">void</span> *value); |
| 555 |
<a name="l03101"></a>03101 |
| 556 |
<a name="l03102"></a>03102 <a class="code" href="dbprim_8h.html#a1">DBPRIM_END_C_DECLS</a> |
| 557 |
<a name="l03103"></a>03103 |
| 558 |
<a name="l03104"></a>03104 <span class="preprocessor">#endif </span><span class="comment">/* __include_dbprim_h__ */</span> |
| 559 |
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Sat Jul 15 14:10:33 2006 for DatabasePrimitivesLibrary by |
| 560 |
<a href="http://www.doxygen.org/index.html"> |
| 561 |
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.4.4 </small></address> |
| 562 |
</body> |
| 563 |
</html> |