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> |