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
|
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>versekey.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body bgcolor="#ffffff">
<!-- Generated by Doxygen 1.2.9.1 -->
<center>
<a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="classes.html">Alphabetical List</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> </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_8h-source.html,v 1.4 2002/01/22 14:20:28 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 <swkey.h></font>
00027 <font class="preprocessor">#include <swmacs.h></font>
00028 <font class="preprocessor">#include <listkey.h></font>
00029 <font class="preprocessor">#include <ctype.h></font>
00030
00031 <font class="preprocessor">#include <defs.h></font>
00032
00033 <font class="preprocessor">#define POS_MAXVERSE ((char)3)</font>
00034 <font class="preprocessor"></font><font class="preprocessor">#define POS_MAXCHAPTER ((char)4)</font>
00035 <font class="preprocessor"></font><font class="preprocessor">#define POS_MAXBOOK ((char)5)</font>
00036 <font class="preprocessor"></font>
00037 <font class="preprocessor">#define MAXVERSE SW_POSITION(POS_MAXVERSE)</font>
00038 <font class="preprocessor"></font><font class="preprocessor">#define MAXCHAPTER SW_POSITION(POS_MAXCHAPTER)</font>
00039 <font class="preprocessor"></font><font class="preprocessor">#define MAXBOOK SW_POSITION(POS_MAXBOOK)</font>
00040 <font class="preprocessor"></font>
00041 <font class="keyword">struct </font>sbook
00042 {
00045 <font class="keyword">const</font> <font class="keywordtype">char</font> *name;
00048 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> chapmax;
00051 <font class="keywordtype">int</font> *versemax;
00052 };
00053
00054 <font class="keyword">struct </font>abbrev
00055 {
00056 <font class="keyword">const</font> <font class="keywordtype">char</font> *ab;
00057 <font class="keywordtype">int</font> book;
00058 };
00059
00060
00061 <font class="keyword">class </font><a class="code" href="class_s_w_locale.html">SWLocale</a>;
00062
<a name="l00067"></a><a class="code" href="class_verse_key.html">00067</a> <font class="keyword">class </font>SWDLLEXPORT <a class="code" href="class_verse_key.html">VerseKey</a>:<font class="keyword">public</font> <a class="code" href="class_s_w_key.html">SWKey</a>
00068 {
00069 <font class="keyword">class </font>LocaleCache
00070 {
00071 <font class="keyword">public</font>:
00072 <font class="keywordtype">char</font> *name;
00073 <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> abbrevsCnt;
00074 <a class="code" href="class_s_w_locale.html">SWLocale</a> *locale;
00075 LocaleCache ()<font class="keyword"></font>
00076 <font class="keyword"> </font>{
00077 name = 0;
00078 abbrevsCnt = 0;
00079 locale = 0;
00080 }
00081 <font class="keyword">virtual</font> ~LocaleCache ()<font class="keyword"></font>
00082 <font class="keyword"> </font>{
00083 <font class="keywordflow">if</font> (name)
00084 <font class="keyword">delete</font>[]name;
00085 }
00086 };
00087
00088 <font class="keyword">static</font> <a class="code" href="class_s_w_class.html">SWClass</a> classdef;
00089
00090 <font class="keyword">static</font> <font class="keywordtype">long</font> *offsets[2][2];
00091 <font class="keyword">static</font> <font class="keywordtype">int</font> offsize[2][2];
<a name="l00094"></a><a class="code" href="class_verse_key.html#r3">00094</a> <font class="keyword">static</font> <font class="keywordtype">int</font> instance;
00095 <font class="keyword">static</font> <font class="keyword">struct </font>sbook otbooks[];
00096 <font class="keyword">static</font> <font class="keyword">struct </font>sbook ntbooks[];
00097 <font class="keyword">static</font> <font class="keywordtype">long</font> otbks[];
00098 <font class="keyword">static</font> <font class="keywordtype">long</font> otcps[];
00099 <font class="keyword">static</font> <font class="keywordtype">long</font> ntbks[];
00100 <font class="keyword">static</font> <font class="keywordtype">long</font> ntcps[];
00101 <font class="keyword">static</font> <font class="keywordtype">int</font> vm[];
00102 <font class="keyword">static</font> LocaleCache localeCache;
00103 <a class="code" href="class_list_key.html">ListKey</a> internalListKey;
00104
00105 <font class="keyword">const</font> <font class="keyword">struct </font>abbrev *abbrevs;
00106 <font class="keywordtype">int</font> abbrevsCnt;
<a name="l00109"></a><a class="code" href="class_verse_key.html#o3">00109</a> <font class="keywordtype">char</font> testament;
00110 <font class="keyword">mutable</font> <font class="keywordtype">char</font> book;
00111 <font class="keyword">mutable</font> <font class="keywordtype">int</font> chapter;
00112 <font class="keyword">mutable</font> <font class="keywordtype">int</font> verse;
<a name="l00115"></a><a class="code" href="class_verse_key.html#o7">00115</a> <font class="keywordtype">char</font> autonorm;
<a name="l00118"></a><a class="code" href="class_verse_key.html#o8">00118</a> <font class="keywordtype">char</font> headings;
00119
00120 <font class="keywordtype">int</font> getBookAbbrev (<font class="keyword">const</font> <font class="keywordtype">char</font> *abbr);
00121 <font class="keywordtype">void</font> initBounds () <font class="keyword">const</font>;
00124 <font class="keywordtype">void</font> <a class="code" href="class_verse_key.html#c2">initstatics</a> ();
00127 <font class="keywordtype">void</font> <a class="code" href="class_verse_key.html#c3">init</a> ();
00132 <font class="keywordtype">void</font> <a class="code" href="class_verse_key.html#c4">freshtext</a> () <font class="keyword">const</font>;
00136 <font class="keyword">virtual</font> <font class="keywordtype">char</font> <a class="code" href="class_verse_key.html#c5">parse</a> ();
00145 <font class="keywordtype">int</font> <a class="code" href="class_verse_key.html#c6">findindex</a> (<font class="keywordtype">long</font> *array, <font class="keywordtype">int</font> size, <font class="keywordtype">long</font> value);
00146 <font class="keyword">mutable</font> <a class="code" href="class_verse_key.html">VerseKey</a> *lowerBound, *upperBound;
00147
00148 <font class="keyword">public</font>:
00149 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keywordtype">char</font> builtin_BMAX[2];
00150 <font class="keyword">static</font> <font class="keyword">struct </font>sbook *builtin_books[2];
00151 <font class="keyword">static</font> <font class="keyword">const</font> <font class="keyword">struct </font>abbrev builtin_abbrevs[];
00152 <font class="keyword">const</font> <font class="keywordtype">char</font> *BMAX;
00153 <font class="keyword">struct </font>sbook **books;
00154
00161 <a class="code" href="class_verse_key.html#a0">VerseKey</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey = 0);
00162
00169 <a class="code" href="class_verse_key.html#a0">VerseKey</a> (<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> * ikey);
00170
00177 <a class="code" href="class_verse_key.html#a0">VerseKey</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *min, <font class="keyword">const</font> <font class="keywordtype">char</font> *max);
00178
00184 <a class="code" href="class_verse_key.html#a0">VerseKey</a> (<a class="code" href="class_verse_key.html">VerseKey</a> <font class="keyword">const</font> &k);
00185
00189 <font class="keyword">virtual</font> <a class="code" href="class_verse_key.html#a4">~ VerseKey</a> ();
00190
00197 <a class="code" href="class_verse_key.html">VerseKey</a> & <a class="code" href="class_verse_key.html#a7">LowerBound</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *lb);
00198
00204 <a class="code" href="class_verse_key.html">VerseKey</a> & <a class="code" href="class_verse_key.html#a8">UpperBound</a> (<font class="keyword">const</font> <font class="keywordtype">char</font> *ub);
00205
00209 <a class="code" href="class_verse_key.html">VerseKey</a> & <a class="code" href="class_verse_key.html#a7">LowerBound</a> ()<font class="keyword">const</font>;
00210
00214 <a class="code" href="class_verse_key.html">VerseKey</a> & <a class="code" href="class_verse_key.html#a8">UpperBound</a> ()<font class="keyword">const</font>;
00215
00218 <font class="keywordtype">void</font> <a class="code" href="class_verse_key.html#a9">ClearBounds</a> ();
00219
00223 <font class="keyword">virtual</font> <a class="code" href="class_s_w_key.html">SWKey</a> *<a class="code" href="class_s_w_key.html#a3">clone</a> () <font class="keyword">const</font>;
00224
00228 <font class="keyword">virtual</font> <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="class_s_w_key.html#a9">getText</a>() <font class="keyword">const</font>;
<a name="l00229"></a><a class="code" href="class_verse_key.html#a12">00229</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a7">setText</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *ikey)<font class="keyword"> </font>{ <a class="code" href="class_s_w_key.html#a7">SWKey::setText</a>(ikey); <a class="code" href="class_verse_key.html#c5">parse</a> (); }
00230 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a8">copyFrom</a>(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> & ikey);
00231
00234 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a8">copyFrom</a>(<font class="keyword">const</font> <a class="code" href="class_verse_key.html">VerseKey</a> & ikey);
00235
00241 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_verse_key.html#a15">setPosition</a>(SW_POSITION);
00242
00248 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a13">decrement</a>(<font class="keywordtype">int</font> step);
00249
00255 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_s_w_key.html#a14">increment</a>(<font class="keywordtype">int</font> step);
00256 <font class="keyword">virtual</font> <font class="keywordtype">char</font> Traversable ()<font class="keyword"> </font>{ <font class="keywordflow">return</font> 1; }
00257
00262 <font class="keyword">virtual</font> <font class="keywordtype">char</font> <a class="code" href="class_verse_key.html#a19">Testament</a> () <font class="keyword">const</font>;
00263
00268 <font class="keyword">virtual</font> <font class="keywordtype">char</font> <a class="code" href="class_verse_key.html#a20">Book</a> () <font class="keyword">const</font>;
00269
00274 <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_verse_key.html#a21">Chapter</a> () <font class="keyword">const</font>;
00275
00280 <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_verse_key.html#a22">Verse</a> () <font class="keyword">const</font>;
00281
00289 <font class="keyword">virtual</font> <font class="keywordtype">char</font> <a class="code" href="class_verse_key.html#a19">Testament</a> (<font class="keywordtype">char</font> itestament);
00290
00298 <font class="keyword">virtual</font> <font class="keywordtype">char</font> <a class="code" href="class_verse_key.html#a20">Book</a> (<font class="keywordtype">char</font> ibook);
00299
00307 <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_verse_key.html#a21">Chapter</a> (<font class="keywordtype">int</font> ichapter);
00308
00316 <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_verse_key.html#a22">Verse</a> (<font class="keywordtype">int</font> iverse);
00317
00324 <font class="keyword">virtual</font> <font class="keywordtype">void</font> <a class="code" href="class_verse_key.html#a27">Normalize</a> (<font class="keywordtype">char</font> autocheck = 0);
00325
00334 <font class="keyword">virtual</font> <font class="keywordtype">char</font> <a class="code" href="class_verse_key.html#a28">AutoNormalize</a> (<font class="keywordtype">char</font> iautonorm = MAXPOS (<font class="keywordtype">char</font>));
00335
00344 <font class="keyword">virtual</font> <font class="keywordtype">char</font> <a class="code" href="class_verse_key.html#a29">Headings</a> (<font class="keywordtype">char</font> iheadings = MAXPOS (<font class="keywordtype">char</font>));
00345
00346 <font class="keyword">virtual</font> <font class="keywordtype">long</font> NewIndex () <font class="keyword">const</font>;
00347
00352 <font class="keyword">virtual</font> <font class="keywordtype">long</font> <a class="code" href="class_s_w_key.html#a16">Index</a> () <font class="keyword">const</font>;
00353
00359 <font class="keyword">virtual</font> <font class="keywordtype">long</font> <a class="code" href="class_s_w_key.html#a16">Index</a> (<font class="keywordtype">long</font> iindex);
00360
00361 <font class="keyword">virtual</font> <a class="code" href="class_list_key.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 =
00362 <font class="stringliteral">"Genesis 1:1"</font>, <font class="keywordtype">bool</font> expandRange = <font class="keyword">false</font>);
00370 <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_s_w_key.html#a10">compare</a> (<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> & ikey);
00371
00379 <font class="keyword">virtual</font> <font class="keywordtype">int</font> <a class="code" href="class_verse_key.html#a35">_compare</a> (<font class="keyword">const</font> <a class="code" href="class_verse_key.html">VerseKey</a> & ikey);
00380
00381 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setBookAbbrevs (<font class="keyword">const</font> <font class="keyword">struct</font> abbrev *bookAbbrevs,
00382 <font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> size =
00383 0 <font class="comment">/* default determine size */</font> );
00384 <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);
00385 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setLocale (<font class="keyword">const</font> <font class="keywordtype">char</font> *name);
00386
00387 SWKEY_OPERATORS
00388
00389 <font class="keyword">virtual</font> <a class="code" href="class_s_w_key.html">SWKey</a> & operator = (<font class="keyword">const</font> <a class="code" href="class_verse_key.html">VerseKey</a> & ikey)<font class="keyword"> </font>{ <a class="code" href="class_s_w_key.html#a8">copyFrom</a>(ikey); <font class="keywordflow">return</font> *<font class="keyword">this</font>; }
00390 };
00391
00392
00393 <font class="preprocessor">#endif</font>
</font></pre></div><hr><address><small>Generated at Tue Jan 22 14:52:49 2002 for The Sword Project by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.gif" alt="doxygen" align="middle" border=0
width=110 height=53></a>1.2.9.1 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>,
© 1997-2001</small></address>
</body>
</html>
|