aboutsummaryrefslogtreecommitdiff
path: root/doc/html/lstr_8h_source.html
blob: 10377f3542d1c55dd89cafb99392facccf315fba (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
<!-- This comment will put IE 6, 7 and 8 in quirks mode -->
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>IsisReader: contrib/openisis/lstr.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javaScript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body onload='searchBox.OnSelectItem(0);'>
<!-- Generated by Doxygen 1.6.1 -->
<script type="text/javascript"><!--
var searchBox = new SearchBox("searchBox", "search",false,'Search');
--></script>
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li><a href="annotated.html"><span>Classes</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
      <li>
        <div id="MSearchBox" class="MSearchBoxInactive">
        <img id="MSearchSelect" src="search/search.png"
             onmouseover="return searchBox.OnSearchSelectShow()"
             onmouseout="return searchBox.OnSearchSelectHide()"
             alt=""/>
        <input type="text" id="MSearchField" value="Search" accesskey="S"
             onfocus="searchBox.OnSearchFieldFocus(true)" 
             onblur="searchBox.OnSearchFieldFocus(false)" 
             onkeyup="searchBox.OnSearchFieldChange(event)"/>
        <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a>
        </div>
      </li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
    </ul>
  </div>
<h1>contrib/openisis/lstr.h</h1><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span>
<a name="l00002"></a>00002 <span class="comment">        openisis - an open implementation of the CDS/ISIS database</span>
<a name="l00003"></a>00003 <span class="comment">        Version 0.8.x (patchlevel see file Version)</span>
<a name="l00004"></a>00004 <span class="comment">        Copyright (C) 2001-2003 by Erik Grziwotz, erik@openisis.org</span>
<a name="l00005"></a>00005 <span class="comment"></span>
<a name="l00006"></a>00006 <span class="comment">        This library is free software; you can redistribute it and/or</span>
<a name="l00007"></a>00007 <span class="comment">        modify it under the terms of the GNU Lesser General Public</span>
<a name="l00008"></a>00008 <span class="comment">        License as published by the Free Software Foundation; either</span>
<a name="l00009"></a>00009 <span class="comment">        version 2.1 of the License, or (at your option) any later version.</span>
<a name="l00010"></a>00010 <span class="comment"></span>
<a name="l00011"></a>00011 <span class="comment">        This library is distributed in the hope that it will be useful,</span>
<a name="l00012"></a>00012 <span class="comment">        but WITHOUT ANY WARRANTY; without even the implied warranty of</span>
<a name="l00013"></a>00013 <span class="comment">        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
<a name="l00014"></a>00014 <span class="comment">        Lesser General Public License for more details.</span>
<a name="l00015"></a>00015 <span class="comment"></span>
<a name="l00016"></a>00016 <span class="comment">        You should have received a copy of the GNU Lesser General Public</span>
<a name="l00017"></a>00017 <span class="comment">        License along with this library; if not, write to the Free Software</span>
<a name="l00018"></a>00018 <span class="comment">        Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA</span>
<a name="l00019"></a>00019 <span class="comment"></span>
<a name="l00020"></a>00020 <span class="comment">        see README for more information</span>
<a name="l00021"></a>00021 <span class="comment">EOH */</span>
<a name="l00022"></a>00022 <span class="preprocessor">#ifndef LSTR_H</span>
<a name="l00023"></a>00023 <span class="preprocessor"></span>
<a name="l00024"></a>00024 <span class="comment">/*</span>
<a name="l00025"></a>00025 <span class="comment">        $Id: lstr.h,v 1.15 2003/04/08 00:20:53 kripke Exp $</span>
<a name="l00026"></a>00026 <span class="comment">        definition of ISIS internal structures for openisis lib implementation.</span>
<a name="l00027"></a>00027 <span class="comment"></span>
<a name="l00028"></a>00028 <span class="comment">        This header defines the common internal data structures and their members</span>
<a name="l00029"></a>00029 <span class="comment">        and external structure and member definition types.</span>
<a name="l00030"></a>00030 <span class="comment">        A internal data structure is the common in-memory representation of</span>
<a name="l00031"></a>00031 <span class="comment">        ISIS data; it may be backed by different external (in-file) structures.</span>
<a name="l00032"></a>00032 <span class="comment"></span>
<a name="l00033"></a>00033 <span class="comment">        An in-memory data structure</span>
<a name="l00034"></a>00034 <span class="comment">        is a contigous int* chunk of memory, consisting of the sizes (one int),</span>
<a name="l00035"></a>00035 <span class="comment">        an array of members (int) and some buffer (array of char).</span>
<a name="l00036"></a>00036 <span class="comment"></span>
<a name="l00037"></a>00037 <span class="comment">        A data structures sizes consists of the lengths</span>
<a name="l00038"></a>00038 <span class="comment">        fix and rep of the fixed and repeated part, resp.,</span>
<a name="l00039"></a>00039 <span class="comment">        and the number of occurences of the repeated part.</span>
<a name="l00040"></a>00040 <span class="comment">        It is used in both an abstract description of a data type</span>
<a name="l00041"></a>00041 <span class="comment">        and each instance of a data structure.</span>
<a name="l00042"></a>00042 <span class="comment">        If the number of occurences of the repeated part is not fixed,</span>
<a name="l00043"></a>00043 <span class="comment">        it is 0 in the abstract case.</span>
<a name="l00044"></a>00044 <span class="comment">        The lengths are suitable as offsets into the lmbr array.</span>
<a name="l00045"></a>00045 <span class="comment">        This structure is designed to fit within 32 bits.</span>
<a name="l00046"></a>00046 <span class="comment"></span>
<a name="l00047"></a>00047 <span class="comment">        The sizing is the only common meta-data description of a logical </span>
<a name="l00048"></a>00048 <span class="comment">        data type. For readability of code, however, the member indexes</span>
<a name="l00049"></a>00049 <span class="comment">        are enum-erated. When actually used, the type has to match the code&apos;s</span>
<a name="l00050"></a>00050 <span class="comment">        assumptions anyway.</span>
<a name="l00051"></a>00051 <span class="comment">        The numbers fix and rep are fixed for a given data structure.</span>
<a name="l00052"></a>00052 <span class="comment"></span>
<a name="l00053"></a>00053 <span class="comment">        Although the logical data type has more properties,</span>
<a name="l00054"></a>00054 <span class="comment">        especially the type of each member (numeric, C-string or raw mem),</span>
<a name="l00055"></a>00055 <span class="comment">        a representation of this data is needed only when converting</span>
<a name="l00056"></a>00056 <span class="comment">        external data and thus is stored (somewhat redundantly)</span>
<a name="l00057"></a>00057 <span class="comment">        with the external properties.</span>
<a name="l00058"></a>00058 <span class="comment"></span>
<a name="l00059"></a>00059 <span class="comment">        There are only two types of members:</span>
<a name="l00060"></a>00060 <span class="comment">        numeric and memory (mostly some character data).</span>
<a name="l00061"></a>00061 <span class="comment">        both are represented by a int, which, for memory,</span>
<a name="l00062"></a>00062 <span class="comment">        denotes an offset (counted in BYTES, not ints) from the records start</span>
<a name="l00063"></a>00063 <span class="comment">        (NOT offset into the data buffer, as with the isis mst record).</span>
<a name="l00064"></a>00064 <span class="comment"></span>
<a name="l00065"></a>00065 <span class="comment">        The member array consists of a fixed number &lt;emp&gt;fix&lt;/emp&gt; of initial</span>
<a name="l00066"></a>00066 <span class="comment">        members and a number &lt;emp&gt;occ&lt;/emp&gt; of occurences </span>
<a name="l00067"></a>00067 <span class="comment">        of member arrays of fixed length &lt;emp&gt;rep&lt;/emp&gt;.</span>
<a name="l00068"></a>00068 <span class="comment">        While &lt;emp&gt;occ&lt;/emp&gt; is usually fixed,</span>
<a name="l00069"></a>00069 <span class="comment">        it varies for masterfile records.</span>
<a name="l00070"></a>00070 <span class="comment"></span>
<a name="l00071"></a>00071 <span class="comment">        Note that this layout somewhat resembles the isis record itself,</span>
<a name="l00072"></a>00072 <span class="comment">        which supports a single level of nesting and repetition.</span>
<a name="l00073"></a>00073 <span class="comment">*/</span>
<a name="l00074"></a>00074 
<a name="l00075"></a>00075 <span class="comment">/* id of a structure */</span>
<a name="l00076"></a>00076 
<a name="l00077"></a>00077 <span class="comment">/* construction</span>
<a name="l00078"></a>00078 <span class="comment">*/</span>
<a name="l00079"></a>00079 <span class="preprocessor">#define LSTRID( set, no, vari ) \</span>
<a name="l00080"></a>00080 <span class="preprocessor">        (((int)(vari))&lt;&lt;16 | (set)&lt;&lt;8 | (no) )</span>
<a name="l00081"></a>00081 <span class="preprocessor"></span>
<a name="l00082"></a>00082 <span class="comment">/* access</span>
<a name="l00083"></a>00083 <span class="comment">*/</span>
<a name="l00084"></a>00084 <span class="preprocessor">#define LSTRNO( l )  (char)(l) </span><span class="comment">/* no of record type in set */</span>
<a name="l00085"></a>00085 <span class="preprocessor">#define LSTRSET( l ) (char)((l)&gt;&gt;8) </span><span class="comment">/* record set number */</span>
<a name="l00086"></a>00086 <span class="preprocessor">#define LSTRVAR( l ) (short)((l)&gt;&gt;16) </span><span class="comment">/* variant */</span>
<a name="l00087"></a>00087 
<a name="l00088"></a>00088 
<a name="l00089"></a>00089 <span class="comment">/* size of a structure */</span>
<a name="l00090"></a>00090 
<a name="l00091"></a>00091 <span class="comment">/* construction</span>
<a name="l00092"></a>00092 <span class="comment">*/</span>
<a name="l00093"></a>00093 <span class="preprocessor">#define LSTRSIZE( fix, rep, occ ) \</span>
<a name="l00094"></a>00094 <span class="preprocessor">        (((int)(occ))&lt;&lt;16 | (rep)&lt;&lt;8 | (fix))</span>
<a name="l00095"></a>00095 <span class="preprocessor"></span>
<a name="l00096"></a>00096 <span class="comment">/* access</span>
<a name="l00097"></a>00097 <span class="comment">*/</span>
<a name="l00098"></a>00098 <span class="preprocessor">#define LSTRFIX( l ) (char)(l) </span><span class="comment">/* length of fixed part */</span>
<a name="l00099"></a>00099 <span class="preprocessor">#define LSTRREP( l ) (char)((l)&gt;&gt;8) </span><span class="comment">/* length of repeated part */</span>
<a name="l00100"></a>00100 <span class="preprocessor">#define LSTROCC( l ) (short)((l)&gt;&gt;16) </span><span class="comment">/* the members */</span>
<a name="l00101"></a>00101 <span class="comment">/* actual number of members */</span>
<a name="l00102"></a>00102 <span class="preprocessor">#define LSTRMEMS( l ) (LSTRFIX(l) + LSTRREP(l)*LSTROCC(l))</span>
<a name="l00103"></a>00103 <span class="preprocessor"></span><span class="comment">/* in-memory size of members (w/o buffer). */</span>
<a name="l00104"></a>00104 <span class="preprocessor">#define LSTRLEN( t )  ((int)sizeof(int)*(1 + LSTRMEMS(t)))</span>
<a name="l00105"></a>00105 <span class="preprocessor"></span>
<a name="l00106"></a>00106 
<a name="l00132"></a>00132 <span class="preprocessor">#define LONG2LEN( l )    ((short)(l))</span>
<a name="l00133"></a>00133 <span class="preprocessor"></span><span class="preprocessor">#define LONG2OFF( l )    ((short)((l) &gt;&gt; 16))</span>
<a name="l00134"></a>00134 <span class="preprocessor"></span>
<a name="l00135"></a>00135 <span class="comment">/* constants</span>
<a name="l00136"></a>00136 <span class="comment">*/</span>
<a name="l00137"></a>00137 <span class="preprocessor">#define LMBR_FNUM 0x8000 </span><span class="comment">/* flag numeric data */</span>
<a name="l00138"></a>00138 <span class="preprocessor">#define LMBR_FHIE 0x4000 </span><span class="comment">/* flag high endian data */</span>
<a name="l00139"></a>00139 
<a name="l00140"></a>00140 <span class="comment">/* construction</span>
<a name="l00141"></a>00141 <span class="comment">*/</span>
<a name="l00142"></a>00142 <span class="preprocessor">#define LMBRNUM( ld ) (LMBR_FNUM | ld)</span>
<a name="l00143"></a>00143 <span class="preprocessor"></span><span class="comment">/* standard nueric types: the world according to Java :) */</span>
<a name="l00144"></a>00144 <span class="preprocessor">#define LMBRBYTE  LMBRNUM(0)</span>
<a name="l00145"></a>00145 <span class="preprocessor"></span><span class="preprocessor">#define LMBRSHORT LMBRNUM(1)</span>
<a name="l00146"></a>00146 <span class="preprocessor"></span><span class="preprocessor">#define LMBRINT   LMBRNUM(2)</span>
<a name="l00147"></a>00147 <span class="preprocessor"></span><span class="preprocessor">#define LMBRLONG  LMBRNUM(3)</span>
<a name="l00148"></a>00148 <span class="preprocessor"></span><span class="comment">/* bit mask construction for numerical data */</span>
<a name="l00149"></a>00149 <span class="preprocessor">#define LMBRBITS( off, len, ld ) (LMBR_FNUM | (off)&lt;&lt;8 | (len)&lt;&lt;2 | (ld))</span>
<a name="l00150"></a>00150 <span class="preprocessor"></span><span class="preprocessor">#define LMBRBITS4( off, len )    (LMBR_FNUM | (off)&lt;&lt;8 | (len)&lt;&lt;2 | 2)</span>
<a name="l00151"></a>00151 <span class="preprocessor"></span><span class="comment">/* if you have to specify the offset explicitly */</span>
<a name="l00152"></a>00152 <span class="preprocessor">#define LSTRLOFF( len, off ) ((len) | (off)&lt;&lt;16)</span>
<a name="l00153"></a>00153 <span class="preprocessor"></span>
<a name="l00154"></a>00154 <span class="comment">/* access</span>
<a name="l00155"></a>00155 <span class="comment">*/</span>
<a name="l00156"></a>00156 <span class="preprocessor">#define LMBRISNUM( f )  (LMBR_FNUM &amp; (f))</span>
<a name="l00157"></a>00157 <span class="preprocessor"></span><span class="preprocessor">#define LMBRLD( f )     (0x3 &amp; (f))</span>
<a name="l00158"></a>00158 <span class="preprocessor"></span><span class="comment">/* bit access for numerical data */</span>
<a name="l00159"></a>00159 <span class="preprocessor">#define LMBRISBITS( f ) (0x3ffc &amp; (f))</span>
<a name="l00160"></a>00160 <span class="preprocessor"></span><span class="preprocessor">#define LMBRBITLEN( f ) (0x003f &amp; ((f) &gt;&gt; 2))</span>
<a name="l00161"></a>00161 <span class="preprocessor"></span><span class="preprocessor">#define LMBRBITOFF( f ) (0x003f &amp; ((f) &gt;&gt; 8))</span>
<a name="l00162"></a>00162 <span class="preprocessor"></span>
<a name="l00170"></a>00170 <span class="keyword">enum</span> {
<a name="l00171"></a>00171         LSTR_SIZE, <span class="comment">/* sizes */</span>
<a name="l00172"></a>00172         LSTR_XRLO, <span class="comment">/* repeated part byte length and offset &lt;&lt;16; auto */</span>
<a name="l00173"></a>00173         LSTR_XLEN, <span class="comment">/* ext. total length of data; auto */</span>
<a name="l00174"></a>00174         LSTR_ILEN, <span class="comment">/* int. total length of data; auto */</span>
<a name="l00175"></a>00175         LSTR_XMBR  <span class="comment">/* members */</span>
<a name="l00176"></a>00176 };
<a name="l00177"></a>00177 <span class="preprocessor">#define LSTR_AUTOLENGTHS 0,0,0</span>
<a name="l00178"></a>00178 <span class="preprocessor"></span><span class="preprocessor">#define LSTR_LONGS( totmbrs ) (4+(totmbrs))</span>
<a name="l00179"></a>00179 <span class="preprocessor"></span>
<a name="l00180"></a>00180 <span class="comment">/* technical variants of a record */</span>
<a name="l00181"></a>00181 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
<a name="l00182"></a>00182         LVAR_PAC, <span class="comment">/* packed little endian base variant */</span>
<a name="l00183"></a>00183         LVAR_ALI, <span class="comment">/* aligned variant */</span>
<a name="l00184"></a>00184         LVAR_BIG,  <span class="comment">/* big endian aligned */</span>
<a name="l00185"></a>00185         LVAR_VARI
<a name="l00186"></a>00186 } lstr_variant;
<a name="l00187"></a>00187 
<a name="l00188"></a>00188 <span class="comment">/* known record sets */</span>
<a name="l00189"></a>00189 <span class="keyword">enum</span> {
<a name="l00190"></a>00190         LSET_MST, <span class="comment">/* isis 1 master file */</span>
<a name="l00191"></a>00191         LSET_INV, <span class="comment">/* isis 1 inverted file */</span>
<a name="l00192"></a>00192         LSET_SETS
<a name="l00193"></a>00193 };
<a name="l00194"></a>00194 
<a name="l00195"></a>00195 
<a name="l00196"></a><a class="code" href="structLstrSet.html">00196</a> <span class="keyword">typedef</span> <span class="keyword">struct </span>{
<a name="l00197"></a>00197         <span class="keyword">const</span> <span class="keywordtype">char</span> ***name; <span class="comment">/* an array of names per record type */</span>
<a name="l00198"></a>00198         <span class="keywordtype">int</span>  **desc[LVAR_VARI]; <span class="comment">/* an array of descs per variant */</span>
<a name="l00199"></a>00199 } <a class="code" href="structLstrSet.html">LstrSet</a>;
<a name="l00200"></a>00200 
<a name="l00201"></a>00201 
<a name="l00202"></a>00202 <span class="comment">/* data types of ISIS 1 master file */</span>
<a name="l00203"></a>00203 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
<a name="l00204"></a>00204         LSTR_MFC, <span class="comment">/* MST head */</span>
<a name="l00205"></a>00205         LSTR_MFR, <span class="comment">/* MST record */</span>
<a name="l00206"></a>00206         LSTR_XRF, <span class="comment">/* XRF record */</span>
<a name="l00207"></a>00207         LSTR_MST  <span class="comment">/* count */</span>
<a name="l00208"></a>00208 } lstr_mst;
<a name="l00209"></a>00209 
<a name="l00210"></a>00210 
<a name="l00211"></a>00211 <span class="keyword">enum</span> { <span class="comment">/* MFC members */</span>
<a name="l00212"></a>00212         LMFC_CTLM = 1,
<a name="l00213"></a>00213         LMFC_NMFN, <span class="comment">/* next available MFN */</span>
<a name="l00214"></a>00214         LMFC_NMFB, <span class="comment">/* next free block in MF counting from 1 */</span>
<a name="l00215"></a>00215         LMFC_NMFP, <span class="comment">/* next free pos in MF */</span>
<a name="l00216"></a>00216         LMFC_TYPE, <span class="comment">/* &quot;0 for user&apos;s bases; 1 for messages&quot; */</span>
<a name="l00217"></a>00217         LMFC_RCNT, <span class="comment">/* record count ? not used by CISIS */</span>
<a name="l00218"></a>00218         LMFC_MFX1,
<a name="l00219"></a>00219         LMFC_MFX2, <span class="comment">/* LAN lock */</span>
<a name="l00220"></a>00220         LMFC_MFX3, <span class="comment">/* LAN lock */</span>
<a name="l00221"></a>00221         LMFC__FL
<a name="l00222"></a>00222 };
<a name="l00223"></a>00223 
<a name="l00224"></a>00224 <span class="keyword">enum</span> { <span class="comment">/* XRF members */</span>
<a name="l00225"></a>00225         LXRF_XPOS = 1,
<a name="l00226"></a>00226         LXRF_XREC
<a name="l00227"></a>00227 };
<a name="l00228"></a>00228 
<a name="l00229"></a>00229 <span class="comment">/* data types of ISIS 1 inverted file */</span>
<a name="l00230"></a>00230 <span class="keyword">typedef</span> <span class="keyword">enum</span> {
<a name="l00231"></a>00231         LSTR_CNT, <span class="comment">/* CNT record */</span>
<a name="l00232"></a>00232         LSTR_N01, <span class="comment">/* N01 record */</span>
<a name="l00233"></a>00233         LSTR_L01, <span class="comment">/* L01 record */</span>
<a name="l00234"></a>00234         LSTR_N02, <span class="comment">/* N02 record */</span>
<a name="l00235"></a>00235         LSTR_L02, <span class="comment">/* L02 record */</span>
<a name="l00236"></a>00236         LSTR_IFP, <span class="comment">/* IFP record */</span>
<a name="l00237"></a>00237         LSTR_INV  <span class="comment">/* count */</span>
<a name="l00238"></a>00238 } lstr_inv;
<a name="l00239"></a>00239 
<a name="l00240"></a>00240 
<a name="l00241"></a>00241 <span class="keyword">enum</span> { <span class="comment">/* CNT members */</span>
<a name="l00242"></a>00242         LCNT_TYPE = 1, <span class="comment">/* 1 or 2: N0x */</span>
<a name="l00243"></a>00243         LCNT_ORDN, <span class="comment">/* fix 5 */</span>
<a name="l00244"></a>00244         LCNT_ORDF, <span class="comment">/* fix 5 */</span>
<a name="l00245"></a>00245         LCNT_N,    <span class="comment">/* fix 15 */</span>
<a name="l00246"></a>00246         LCNT_K,    <span class="comment">/* fix 5 */</span>
<a name="l00247"></a>00247         LCNT_LEV,  <span class="comment">/* depth of index */</span>
<a name="l00248"></a>00248         LCNT_POSR, <span class="comment">/* position of root */</span>
<a name="l00249"></a>00249         LCNT_NMAX,
<a name="l00250"></a>00250         LCNT_FMAX,
<a name="l00251"></a>00251         LCNT_ABNO,
<a name="l00252"></a>00252         LCNT__FL
<a name="l00253"></a>00253 };
<a name="l00254"></a>00254 
<a name="l00255"></a>00255 <span class="keyword">enum</span> { <span class="comment">/* N0x members */</span>
<a name="l00256"></a>00256         LN0X_POS = 1, <span class="comment">/* record number */</span>
<a name="l00257"></a>00257         LN0X_OCK, <span class="comment">/* number of keys */</span>
<a name="l00258"></a>00258         LN0X_TYPE, <span class="comment">/* type 1 or 2 */</span>
<a name="l00259"></a>00259         LN0X__FL, <span class="comment">/* offset of repeated part */</span>
<a name="l00260"></a>00260         LN0X_KEY = 0, <span class="comment">/* key chars */</span>
<a name="l00261"></a>00261         LN0X_REF, <span class="comment">/* ref to next node (&gt;0) or leaf (&lt;0) */</span>
<a name="l00262"></a>00262         LN0X__RL <span class="comment">/* length of repeated part */</span>
<a name="l00263"></a>00263 };
<a name="l00264"></a>00264 
<a name="l00265"></a>00265 <span class="keyword">enum</span> { <span class="comment">/* L0x members */</span>
<a name="l00266"></a>00266         LL0X_POS = 1, <span class="comment">/* record number */</span>
<a name="l00267"></a>00267         LL0X_OCK,  <span class="comment">/* number of keys */</span>
<a name="l00268"></a>00268         LL0X_TYPE, <span class="comment">/* type 1 or 2 */</span>
<a name="l00269"></a>00269         LL0X_PS,   <span class="comment">/* type 1 or 2 */</span>
<a name="l00270"></a>00270         LL0X__FL,  <span class="comment">/* offset of repeated part */</span>
<a name="l00271"></a>00271         LL0X_KEY = 0, <span class="comment">/* key chars */</span>
<a name="l00272"></a>00272         LL0X_INFB, <span class="comment">/* ifp block */</span>
<a name="l00273"></a>00273         LL0X_INFP, <span class="comment">/* ifp pos */</span>
<a name="l00274"></a>00274         LL0X__RL   <span class="comment">/* length of repeated part */</span>
<a name="l00275"></a>00275 };
<a name="l00276"></a>00276 
<a name="l00277"></a>00277 <span class="keyword">enum</span> { <span class="comment">/* IFP members */</span>
<a name="l00278"></a>00278         LIFP_NXTB = 1, <span class="comment">/* block of next segment */</span>
<a name="l00279"></a>00279         LIFP_NXTP,  <span class="comment">/* pos of next segment */</span>
<a name="l00280"></a>00280         LIFP_TOTP, <span class="comment">/* total postings */</span>
<a name="l00281"></a>00281         LIFP_SEGP,   <span class="comment">/* postings in this segment */</span>
<a name="l00282"></a>00282         LIFP_SEGC,   <span class="comment">/* postings in this segment */</span>
<a name="l00283"></a>00283         LIFP__FL,  <span class="comment">/* offset of repeated part */</span>
<a name="l00284"></a>00284         LIFP_MFN = 0, <span class="comment">/* mfn */</span>
<a name="l00285"></a>00285         LIFP_ADD, <span class="comment">/* additional qualifyers */</span>
<a name="l00286"></a>00286         LIFP__RL   <span class="comment">/* length of repeated part */</span>
<a name="l00287"></a>00287 };
<a name="l00288"></a>00288 
<a name="l00289"></a>00289 
<a name="l00290"></a>00290 <span class="keyword">extern</span> <span class="keyword">const</span> <a class="code" href="structLstrSet.html">LstrSet</a> lstrlib[LSET_SETS];
<a name="l00291"></a>00291 
<a name="l00294"></a>00294 <span class="keyword">extern</span> <span class="keywordtype">int</span> lstr_auto ( <span class="keywordtype">int</span> *str );
<a name="l00295"></a>00295 
<a name="l00296"></a>00296 <span class="preprocessor">#define LSTR_H</span>
<a name="l00297"></a>00297 <span class="preprocessor"></span><span class="preprocessor">#endif </span><span class="comment">/* LSTR_H  */</span>
</pre></div></div>
<!--- window showing the filter options -->
<div id="MSearchSelectWindow"
     onmouseover="return searchBox.OnSearchSelectShow()"
     onmouseout="return searchBox.OnSearchSelectHide()"
     onkeydown="return searchBox.OnSearchSelectKey(event)">
<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark">&nbsp;</span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark">&nbsp;</span>Classes</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark">&nbsp;</span>Namespaces</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark">&nbsp;</span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark">&nbsp;</span>Variables</a></div>

<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="" frameborder="0" 
        name="MSearchResults" id="MSearchResults">
</iframe>
</div>

<hr size="1"/><address style="text-align: right;"><small>Generated on Tue Mar 30 14:47:13 2010 for IsisReader by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.6.1 </small></address>
</body>
</html>