File: versekey.h-source.html

package info (click to toggle)
sword 1.5.3-3woody2
  • links: PTS
  • area: main
  • in suites: woody
  • size: 20,484 kB
  • ctags: 11,105
  • sloc: cpp: 49,665; ansic: 13,335; sh: 8,730; pascal: 3,433; tcl: 1,602; makefile: 988; perl: 565; sed: 93
file content (221 lines) | stat: -rw-r--r-- 16,838 bytes parent folder | download
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
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta name="robots" content="noindex">
<title>versekey.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 1.1.5 on Thu May 24 19:50:26 2001 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
<hr><h1>versekey.h</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************
</font>00002 <font class="comment"> *  versekey.h - code for class 'versekey'- a standard Biblical verse key
</font>00003 <font class="comment"> *
</font>00004 <font class="comment"> * $Id: versekey.h-source.html,v 1.10 2001/05/25 10:44:22 jansorg Exp $
</font>00005 <font class="comment"> *
</font>00006 <font class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)
</font>00007 <font class="comment"> *      CrossWire Bible Society
</font>00008 <font class="comment"> *      P. O. Box 2528
</font>00009 <font class="comment"> *      Tempe, AZ  85280-2528
</font>00010 <font class="comment"> *
</font>00011 <font class="comment"> * This program is free software; you can redistribute it and/or modify it
</font>00012 <font class="comment"> * under the terms of the GNU General Public License as published by the
</font>00013 <font class="comment"> * Free Software Foundation version 2.
</font>00014 <font class="comment"> *
</font>00015 <font class="comment"> * This program is distributed in the hope that it will be useful, but
</font>00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of
</font>00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
</font>00018 <font class="comment"> * General Public License for more details.
</font>00019 <font class="comment"> *
</font>00020 <font class="comment"> */</font>
00021 
00022 
00023 <font class="preprocessor">#ifndef VERSEKEY_H
</font>00024 <font class="preprocessor"></font><font class="preprocessor">#define VERSEKEY_H
</font>00025 <font class="preprocessor"></font>
00026 <font class="preprocessor">#include &lt;swkey.h&gt;</font>
00027 <font class="preprocessor">#include &lt;swmacs.h&gt;</font>
00028 <font class="preprocessor">#include &lt;listkey.h&gt;</font>
00029 
00030 <font class="preprocessor">#include &lt;defs.h&gt;</font>
00031 
00032 <font class="preprocessor">#define POS_MAXVERSE ((char)3)
</font>00033 <font class="preprocessor"></font><font class="preprocessor">#define POS_MAXCHAPTER ((char)4)
</font>00034 <font class="preprocessor"></font><font class="preprocessor">#define POS_MAXBOOK ((char)5)
</font>00035 <font class="preprocessor"></font>
00036 <font class="preprocessor">#define MAXVERSE SW_POSITION(POS_MAXVERSE)
</font>00037 <font class="preprocessor"></font><font class="preprocessor">#define MAXCHAPTER SW_POSITION(POS_MAXCHAPTER)
</font>00038 <font class="preprocessor"></font><font class="preprocessor">#define MAXBOOK SW_POSITION(POS_MAXBOOK)
</font>00039 <font class="preprocessor"></font>
00040 <font class="keyword">struct </font>sbook
00041 {
00044   <font class="keyword">const</font> <font class="keywordtype">char</font> *name;
00047   <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> chapmax;
00050   <font class="keywordtype">int</font> *versemax;
00051 };
00052 
00053 <font class="keyword">struct </font>abbrev
00054 {
00055   <font class="keyword">const</font> <font class="keywordtype">char</font> *ab;
00056   <font class="keywordtype">int</font> book;
00057 };
00058 
00059 
00060 <font class="keyword">class </font><a class="code" href="class_swlocale.html">SWLocale</a>;
00061 
<a name="l00066"></a><a class="code" href="class_versekey.html">00066</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_versekey.html">VerseKey</a>:<font class="keyword">public</font> <a class="code" href="class_swkey.html">SWKey</a>
00067 {
00068   <font class="keyword">class </font>LocaleCache
00069   {
00070   <font class="keyword">public</font>:
00071     <font class="keywordtype">char</font> *name;
00072     <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> abbrevsCnt;
00073     <a class="code" href="class_swlocale.html">SWLocale</a> *locale;
00074       LocaleCache ()<font class="keyword">
</font>00075 <font class="keyword">    </font>{
00076       name = 0;
00077       abbrevsCnt = 0;
00078       locale = 0;
00079     }
00080      <font class="keyword">virtual</font> ~LocaleCache ()<font class="keyword">
</font>00081 <font class="keyword">    </font>{
00082       <font class="keywordflow">if</font> (name)
00083         <font class="keyword">delete</font>[]name;
00084     }
00085   };
00086 
00087   <font class="keyword">static</font> SWClass classdef;
00088 
00089   <font class="keyword">static</font> <font class="keywordtype">long</font> *offsets[2][2];
00090   <font class="keyword">static</font> <font class="keywordtype">int</font> offsize[2][2];
<a name="l00093"></a><a class="code" href="class_versekey.html#r3">00093</a>   <font class="keyword">static</font> <font class="keywordtype">int</font> instance;
00094   <font class="keyword">static</font> <font class="keyword">struct </font>sbook otbooks[];
00095   <font class="keyword">static</font> <font class="keyword">struct </font>sbook ntbooks[];
00096   <font class="keyword">static</font> <font class="keywordtype">long</font> otbks[];
00097   <font class="keyword">static</font> <font class="keywordtype">long</font> otcps[];
00098   <font class="keyword">static</font> <font class="keywordtype">long</font> ntbks[];
00099   <font class="keyword">static</font> <font class="keywordtype">long</font> ntcps[];
00100   <font class="keyword">static</font> <font class="keywordtype">int</font> vm[];
00101   <font class="keyword">static</font> LocaleCache localeCache;
00102   <a class="code" href="class_listkey.html">ListKey</a> internalListKey;
00103 
00104   <font class="keyword">const</font> <font class="keyword">struct </font>abbrev *abbrevs;
00105   <font class="keywordtype">int</font> abbrevsCnt;
<a name="l00108"></a><a class="code" href="class_versekey.html#o3">00108</a>   <font class="keywordtype">char</font> testament;
00109   <font class="keyword">mutable</font> <font class="keywordtype">char</font> book;
00110   <font class="keyword">mutable</font> <font class="keywordtype">int</font> chapter;
00111   <font class="keyword">mutable</font> <font class="keywordtype">int</font> verse;
<a name="l00114"></a><a class="code" href="class_versekey.html#o7">00114</a>   <font class="keywordtype">char</font> autonorm;
<a name="l00117"></a><a class="code" href="class_versekey.html#o8">00117</a>   <font class="keywordtype">char</font> headings;
00118 
00119   <font class="keywordtype">int</font> getBookAbbrev (<font class="keywordtype">char</font> *abbr);
00120   <font class="keywordtype">void</font> initBounds () <font class="keyword">const</font>;
00123   <font class="keywordtype">void</font> initstatics ();
00126   <font class="keywordtype">void</font> init ();
00131   <font class="keywordtype">void</font> freshtext () <font class="keyword">const</font>;
00135   <font class="keyword">virtual</font> <font class="keywordtype">char</font> parse ();
00144   <font class="keywordtype">int</font> findindex (<font class="keywordtype">long</font> *array, <font class="keywordtype">int</font> size, <font class="keywordtype">long</font> value);
00145   <font class="keyword">mutable</font> <a class="code" href="class_versekey.html">VerseKey</a> *lowerBound, *upperBound;
00146 
00147 <font class="keyword">public</font>:
00148   <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> builtin_BMAX[2];
00149   <font class="keyword">static</font> <font class="keyword">struct </font>sbook *builtin_books[2];
00150   <font class="keyword">static</font> <font class="keyword">const</font> <font class="keyword">struct </font>abbrev builtin_abbrevs[];
00151   <font class="keyword">const</font> <font class="keywordtype">char</font> *BMAX;
00152   <font class="keyword">struct </font>sbook **books;
00153 
00160   VerseKey (<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey = 0);
00161   
00168   VerseKey (<font class="keyword">const</font> <a class="code" href="class_swkey.html">SWKey</a> * ikey);
00169   
00176   VerseKey (<font class="keyword">const</font> <font class="keywordtype">char</font> *min, <font class="keyword">const</font> <font class="keywordtype">char</font> *max);
00177   
00183   VerseKey (<a class="code" href="class_versekey.html">VerseKey</a> <font class="keyword">const</font> &amp;k);
00184   
00188   <font class="keyword">virtual</font> ~ VerseKey ();
00189 
00196   <a class="code" href="class_versekey.html">VerseKey</a> &amp; LowerBound (<font class="keyword">const</font> <font class="keywordtype">char</font> *lb);
00197   
00203   <a class="code" href="class_versekey.html">VerseKey</a> &amp; UpperBound (<font class="keyword">const</font> <font class="keywordtype">char</font> *ub);
00204   
00208   <a class="code" href="class_versekey.html">VerseKey</a> &amp; LowerBound ()<font class="keyword">const</font>;
00209   
00213   <a class="code" href="class_versekey.html">VerseKey</a> &amp; UpperBound ()<font class="keyword">const</font>;
00214   
00217   <font class="keywordtype">void</font> ClearBounds ();
00218   
00222   <font class="keyword">virtual</font> <a class="code" href="class_swkey.html">SWKey</a> *<a class="code" href="class_swkey.html#a3">clone</a> () <font class="keyword">const</font>;
00223   
00227   <font class="keyword">virtual</font> operator const char *() <font class="keyword">const</font>;
<a name="l00228"></a><a class="code" href="class_versekey.html#a12">00228</a>   <font class="keyword">virtual</font> <a class="code" href="class_swkey.html">SWKey</a> &amp;<a class="code" href="class_swkey.html#a7"> operator = </a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey)<font class="keyword"> </font>{ <a class="code" href="class_swkey.html">SWKey</a> &amp; retval =
00229       <a class="code" href="class_swkey.html#a7">SWKey::operator = </a>(ikey);
00230     parse ();
00231     <font class="keywordflow">return</font> retval;
00232   }
00233   
00236   <font class="keyword">virtual</font> <a class="code" href="class_swkey.html">SWKey</a> &amp;<a class="code" href="class_swkey.html#a7"> operator = </a>(<font class="keyword">const</font> <a class="code" href="class_swkey.html">SWKey</a> &amp; ikey);
00237   
00240   <font class="keyword">virtual</font> <a class="code" href="class_swkey.html">SWKey</a> &amp;<a class="code" href="class_swkey.html#a7"> operator = </a>(<font class="keyword">const</font> <a class="code" href="class_versekey.html">VerseKey</a> &amp; ikey);
00241   
00247   <font class="keyword">virtual</font> <a class="code" href="class_swkey.html">SWKey</a> &amp;<a class="code" href="class_swkey.html#a7"> operator = </a>(SW_POSITION);
00248   
00254   <font class="keyword">virtual</font> <a class="code" href="class_swkey.html">SWKey</a> &amp;<a class="code" href="class_swkey.html#a18"> operator -= </a>(<font class="keywordtype">int</font> decrement);
00255   
00261   <font class="keyword">virtual</font> <a class="code" href="class_swkey.html">SWKey</a> &amp;<a class="code" href="class_swkey.html#a19"> operator += </a>(<font class="keywordtype">int</font> increment);
00262 <font class="comment">/*
</font>00263 <font class="comment">        virtual VerseKey &amp;operator ++(int) { return *this += 1; }
</font>00264 <font class="comment">        virtual VerseKey &amp;operator --(int) { return *this -= 1; }
</font>00265 <font class="comment">*/</font>
00266   <font class="keyword">virtual</font> <font class="keywordtype">char</font> Traversable ()<font class="keyword">
</font>00267 <font class="keyword">  </font>{
00268     <font class="keywordflow">return</font> 1;
00269   }
00270 
00275   <font class="keyword">virtual</font> <font class="keywordtype">char</font> Testament () <font class="keyword">const</font>;
00276   
00281   <font class="keyword">virtual</font> <font class="keywordtype">char</font> Book () <font class="keyword">const</font>;
00282   
00287   <font class="keyword">virtual</font> <font class="keywordtype">int</font> Chapter () <font class="keyword">const</font>;
00288   
00293   <font class="keyword">virtual</font> <font class="keywordtype">int</font> Verse () <font class="keyword">const</font>;
00294   
00302   <font class="keyword">virtual</font> <font class="keywordtype">char</font> Testament (<font class="keywordtype">char</font> itestament);
00303   
00311   <font class="keyword">virtual</font> <font class="keywordtype">char</font> Book (<font class="keywordtype">char</font> ibook);
00312   
00320   <font class="keyword">virtual</font> <font class="keywordtype">int</font> Chapter (<font class="keywordtype">int</font> ichapter);
00321   
00329   <font class="keyword">virtual</font> <font class="keywordtype">int</font> Verse (<font class="keywordtype">int</font> iverse);
00330   
00337   <font class="keyword">virtual</font> <font class="keywordtype">void</font> Normalize (<font class="keywordtype">char</font> autocheck = 0);
00338   
00347   <font class="keyword">virtual</font> <font class="keywordtype">char</font> AutoNormalize (<font class="keywordtype">char</font> iautonorm = MAXPOS (<font class="keywordtype">char</font>));
00348   
00357   <font class="keyword">virtual</font> <font class="keywordtype">char</font> Headings (<font class="keywordtype">char</font> iheadings = MAXPOS (<font class="keywordtype">char</font>));
00358   
00359   <font class="keyword">virtual</font> <font class="keywordtype">long</font> NewIndex () <font class="keyword">const</font>;
00360   
00365   <font class="keyword">virtual</font> <font class="keywordtype">long</font> <a class="code" href="class_swkey.html#a23">Index</a> () <font class="keyword">const</font>;
00366   
00372   <font class="keyword">virtual</font> <font class="keywordtype">long</font> <a class="code" href="class_swkey.html#a23">Index</a> (<font class="keywordtype">long</font> iindex);
00373 
00374   <font class="keyword">virtual</font> <a class="code" href="class_listkey.html">ListKey</a> ParseVerseList (<font class="keyword">const</font> <font class="keywordtype">char</font> *buf, <font class="keyword">const</font> <font class="keywordtype">char</font> *defaultKey =
00375                                   <font class="stringliteral">"Genesis 1:1"</font>, <font class="keywordtype">bool</font> expandRange = <font class="keyword">false</font>);
00383   <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_swkey.html#a10">compare</a> (<font class="keyword">const</font> <a class="code" href="class_swkey.html">SWKey</a> &amp; ikey);
00384   
00392   <font class="keyword">virtual</font> <font class="keywordtype">int</font> _compare (<font class="keyword">const</font> <a class="code" href="class_versekey.html">VerseKey</a> &amp; ikey);
00393   
00394   <font class="keyword">virtual</font> <font class="keywordtype">void</font> setBookAbbrevs (<font class="keyword">const</font> <font class="keyword">struct</font> abbrev *bookAbbrevs,
00395                                <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> size =
00396                                0 <font class="comment">/* default determine size */</font> );
00397   <font class="keyword">virtual</font> <font class="keywordtype">void</font> setBooks (<font class="keyword">const</font> <font class="keywordtype">char</font> *iBMAX, <font class="keyword">struct</font> sbook **ibooks);
00398   <font class="keyword">virtual</font> <font class="keywordtype">void</font> setLocale (<font class="keyword">const</font> <font class="keywordtype">char</font> *name);
00399 };
00400 
00401 
00402 <font class="preprocessor">#endif
</font></div></pre><hr><address><small>Generated at Thu May 24 19:50:26 2001 for The Sword Project by
<a href="http://www.stack.nl/~dimitri/doxygen/index.html">
<img src="doxygen.gif" alt="doxygen" align=center border=0 
width=110 height=53></a>1.1.5 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
 &copy; 1997-2000</small></address>
</body>
</html>