ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/vendor/pxys2-2.1.0/pxyservd/dbprim/doc/html/dbprim_8h-source.html
Revision: 3253
Committed: Wed Apr 2 20:46:18 2014 UTC (12 years, 3 months ago) by michael
Content type: text/html
File size: 72750 byte(s)
Log Message:
- Imported pxys2-2.1.0

File Contents

# User Rev Content
1 michael 3253 <!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&nbsp;Page</a> | <a class="qindex" href="modules.html">Modules</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;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 &lt;klmitch@mit.edu&gt;</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 &lt;dbprim/dbprim_err.h&gt;</span>
45     <a name="l00244"></a>00244 <span class="preprocessor">#include &lt;dbprim/dbprim_version.h&gt;</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)-&gt;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)-&gt;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) &amp;&amp; \</span>
147     <a name="l00677"></a>00677 <span class="preprocessor"> (list)-&gt;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)-&gt;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)-&gt;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)-&gt;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)-&gt;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) &amp;&amp; \</span>
190     <a name="l00937"></a>00937 <span class="preprocessor"> (element)-&gt;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)-&gt;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)-&gt;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)-&gt;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)-&gt;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)-&gt;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) &amp; 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) &amp;&amp; \</span>
239     <a name="l01163"></a>01163 <span class="preprocessor"> (table)-&gt;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)-&gt;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)-&gt;ht_flags &amp; 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)-&gt;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)-&gt;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)-&gt;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)-&gt;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)-&gt;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)-&gt;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)-&gt;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) &amp;&amp; \</span>
297     <a name="l01529"></a>01529 <span class="preprocessor"> (entry)-&gt;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) (&amp;((entry)-&gt;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)-&gt;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)-&gt;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)-&gt;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) (&amp;((entry)-&gt;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)-&gt;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) &amp;&amp; \</span>
329     <a name="l01694"></a>01694 <span class="preprocessor"> (table)-&gt;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)-&gt;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)-&gt;st_table.ht_flags &amp; 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)-&gt;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)-&gt;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)-&gt;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)-&gt;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)-&gt;st_table.ht_modulus * sizeof(link_head_t) + \</span>
344     <a name="l01792"></a>01792 <span class="preprocessor"> (table)-&gt;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) &amp;&amp; \</span>
381     <a name="l02050"></a>02050 <span class="preprocessor"> (head)-&gt;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)-&gt;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)-&gt;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)-&gt;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)-&gt;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)-&gt;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)-&gt;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)-&gt;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)-&gt;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) &amp;&amp; \</span>
428     <a name="l02358"></a>02358 <span class="preprocessor"> (entry)-&gt;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)-&gt;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) (&amp;((entry)-&gt;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)-&gt;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)-&gt;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)-&gt;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)-&gt;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)-&gt;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)-&gt;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) &amp;&amp; \</span>
470     <a name="l02590"></a>02590 <span class="preprocessor"> (tree)-&gt;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)-&gt;rt_flags &amp; 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)-&gt;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)-&gt;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)-&gt;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)-&gt;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) &amp;&amp; \</span>
528     <a name="l02935"></a>02935 <span class="preprocessor"> (node)-&gt;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)-&gt;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)-&gt;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)-&gt;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)-&gt;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)-&gt;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) (&amp;((node)-&gt;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)-&gt;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)-&gt;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) &amp;&amp; (node)-&gt;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)-&gt;rn_parent &amp;&amp; \</span>
549     <a name="l03068"></a>03068 <span class="preprocessor"> (node)-&gt;rn_parent-&gt;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)-&gt;rn_parent &amp;&amp; \</span>
552     <a name="l03085"></a>03085 <span class="preprocessor"> (node)-&gt;rn_parent-&gt;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&nbsp;
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>