aboutsummaryrefslogtreecommitdiffstats
path: root/doc/api-documentation/html/swkey_8h-source.html
blob: c5c48fa72b4e4d751354c848407d185538e637aa (plain) (blame)
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
<!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>swkey.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.17 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</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="namespacemembers.html">Namespace Members</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; </center>
<hr><h1>swkey.h</h1><div class="fragment"><pre>00001 <span class="comment">/******************************************************************************</span>
00002 <span class="comment"> *  swkey.h     - code for base class 'swkey'.  swkey is the basis for all</span>
00003 <span class="comment"> *                              types of keys for indexing into modules (e.g. verse, word,</span>
00004 <span class="comment"> *                              place, etc.)</span>
00005 <span class="comment"> *</span>
00006 <span class="comment"> * $Id: swkey_8h-source.html,v 1.9 2002/10/31 11:30:16 joachim Exp $</span>
00007 <span class="comment"> *</span>
00008 <span class="comment"> * Copyright 1998 CrossWire Bible Society (http://www.crosswire.org)</span>
00009 <span class="comment"> *      CrossWire Bible Society</span>
00010 <span class="comment"> *      P. O. Box 2528</span>
00011 <span class="comment"> *      Tempe, AZ  85280-2528</span>
00012 <span class="comment"> *</span>
00013 <span class="comment"> * This program is free software; you can redistribute it and/or modify it</span>
00014 <span class="comment"> * under the terms of the GNU General Public License as published by the</span>
00015 <span class="comment"> * Free Software Foundation version 2.</span>
00016 <span class="comment"> *</span>
00017 <span class="comment"> * This program is distributed in the hope that it will be useful, but</span>
00018 <span class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</span>
00019 <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU</span>
00020 <span class="comment"> * General Public License for more details.</span>
00021 <span class="comment"> *</span>
00022 <span class="comment"> */</span>
00023 
00024 <span class="preprocessor">#ifndef SWKEY_H</span>
00025 <span class="preprocessor"></span><span class="preprocessor">#define SWKEY_H</span>
00026 <span class="preprocessor"></span>
00027 <span class="preprocessor">#include &lt;swobject.h&gt;</span>
00028 
00029 <span class="preprocessor">#include &lt;defs.h&gt;</span>
00030 
00031 SWORD_NAMESPACE_START
00032 
00033 <span class="preprocessor">#define KEYERR_OUTOFBOUNDS 1</span>
00034 <span class="preprocessor"></span>
00035 <span class="preprocessor">#define SWKEY_OPERATORS \</span>
00036 <span class="preprocessor">  SWKey &amp; operator =(const char *ikey) { setText(ikey); return *this; } \</span>
00037 <span class="preprocessor">  SWKey &amp; operator =(const SWKey &amp;ikey) { copyFrom(ikey); return *this; } \</span>
00038 <span class="preprocessor">  SWKey &amp; operator =(SW_POSITION pos) { setPosition(pos); return *this; } \</span>
00039 <span class="preprocessor">  operator const char *() const { return getText(); } \</span>
00040 <span class="preprocessor">  bool operator ==(const SWKey &amp; ikey) { return equals(ikey); } \</span>
00041 <span class="preprocessor">  bool operator !=(const SWKey &amp; ikey) { return !equals(ikey); } \</span>
00042 <span class="preprocessor">  virtual bool operator &gt;(const SWKey &amp; ikey) { return (compare(ikey) &gt; 0); } \</span>
00043 <span class="preprocessor">  virtual bool operator &lt;(const SWKey &amp; ikey) { return (compare(ikey) &lt; 0); } \</span>
00044 <span class="preprocessor">  virtual bool operator &gt;=(const SWKey &amp; ikey) { return (compare(ikey) &gt; -1); }  \</span>
00045 <span class="preprocessor">  virtual bool operator &lt;=(const SWKey &amp; ikey) { return (compare(ikey) &lt; 1); } \</span>
00046 <span class="preprocessor">  SWKey &amp; operator -=(int steps) { decrement(steps); return *this; } \</span>
00047 <span class="preprocessor">  SWKey &amp; operator +=(int steps) { increment(steps); return *this; } \</span>
00048 <span class="preprocessor">  SWKey &amp; operator++(int) { return *this += 1; } \</span>
00049 <span class="preprocessor">  SWKey &amp; operator--(int) { return *this -= 1; }</span>
00050 <span class="preprocessor"></span>
00051 
00052 <span class="comment">// For use with = operator to position key.</span>
00053 
00054 <span class="keyword">class </span>SW_POSITION {
00055         <span class="keywordtype">char</span> pos;
00056 <span class="keyword">public</span>:
00057         SW_POSITION(<span class="keywordtype">char</span> ipos) { pos = ipos; }
00058         operator char() { <span class="keywordflow">return</span> pos; }
00059 };
00060 
00061 <span class="preprocessor">#define POS_TOP ((char)1)</span>
00062 <span class="preprocessor"></span><span class="preprocessor">#define POS_BOTTOM ((char)2)</span>
00063 <span class="preprocessor"></span>
00064 <span class="preprocessor">#define TOP SW_POSITION(POS_TOP)</span>
00065 <span class="preprocessor"></span><span class="preprocessor">#define BOTTOM SW_POSITION(POS_BOTTOM)</span>
00066 <span class="preprocessor"></span>
<a name="l00071"></a><a class="code" href="classsword_1_1_s_w_key.html">00071</a> <span class="keyword">class </span>SWDLLEXPORT <a class="code" href="classsword_1_1_s_w_key.html">SWKey</a> : <span class="keyword">public</span> <a class="code" href="classsword_1_1_s_w_object.html">SWObject</a> {
00072         <span class="keywordtype">long</span> index;
00073         <span class="keyword">static</span> <a class="code" href="classsword_1_1_s_w_class.html">SWClass</a> classdef;
00074         <span class="keywordtype">void</span> init();
00075 
00076 <span class="keyword">protected</span>:
00077         <span class="keywordtype">char</span> *keytext;
00078         <span class="keyword">mutable</span> <span class="keywordtype">char</span> *rangeText;
00079         <span class="keyword">mutable</span> <span class="keywordtype">bool</span> boundSet;
00080         <span class="keywordtype">char</span> persist;
00081         <span class="keywordtype">char</span> error;
00082 
00083 <span class="keyword">public</span>:
00084 
00085         <span class="comment">// misc pointer for whatever</span>
00086         <span class="keywordtype">void</span> *userData;
00087 
00092         <a class="code" href="classsword_1_1_s_w_key.html">SWKey</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *ikey = 0);
00093 
00097         <a class="code" href="classsword_1_1_s_w_key.html">SWKey</a>(<a class="code" href="classsword_1_1_s_w_key.html">SWKey</a> <span class="keyword">const</span> &amp;k);
00098 
00101         <span class="keyword">virtual</span> ~<a class="code" href="classsword_1_1_s_w_key.html">SWKey</a>();
00102 
00107         <span class="keyword">virtual</span> <a class="code" href="classsword_1_1_s_w_key.html">SWKey</a> *clone() <span class="keyword">const</span>;
00108 
00115         <span class="keywordtype">char</span> Persist() <span class="keyword">const</span>;
00116 
00125         <span class="keywordtype">char</span> Persist(<span class="keywordtype">signed</span> <span class="keywordtype">char</span> ikey);
00126 
00131         <span class="keyword">virtual</span> <span class="keywordtype">char</span> Error();
00132 
00137         <span class="keyword">virtual</span> <span class="keywordtype">void</span> setText(<span class="keyword">const</span> <span class="keywordtype">char</span> *ikey);
00138 
00143         <span class="keyword">virtual</span> <span class="keywordtype">void</span> copyFrom(<span class="keyword">const</span> <a class="code" href="classsword_1_1_s_w_key.html">SWKey</a> &amp;ikey);
00144 
00147         <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *getText() <span class="keyword">const</span>;
00148         <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *getShortText()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> getText(); }
00149         <span class="keyword">virtual</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *getRangeText() <span class="keyword">const</span>;
00150         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> isBoundSet()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> boundSet; }
00151 
00159         <span class="keyword">virtual</span> <span class="keywordtype">int</span> compare(<span class="keyword">const</span> <a class="code" href="classsword_1_1_s_w_key.html">SWKey</a> &amp; ikey);
00160 
<a name="l00166"></a><a class="code" href="classsword_1_1_s_w_key.html#a14">00166</a>         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> equals(<span class="keyword">const</span> <a class="code" href="classsword_1_1_s_w_key.html">SWKey</a> &amp;ikey) { <span class="keywordflow">return</span> !compare(ikey); }
00167 
00168         <span class="keyword">virtual</span> <span class="keywordtype">void</span> setPosition(SW_POSITION);
00169 
00175         <span class="keyword">virtual</span> <span class="keywordtype">void</span> decrement(<span class="keywordtype">int</span> steps = 1);
00176 
00182         <span class="keyword">virtual</span> <span class="keywordtype">void</span> increment(<span class="keywordtype">int</span> steps = 1);
00183 
00184         <span class="keyword">virtual</span> <span class="keywordtype">char</span> Traversable() { <span class="keywordflow">return</span> 0; }
00185 
<a name="l00208"></a><a class="code" href="classsword_1_1_s_w_key.html#a19">00208</a>         <span class="keyword">virtual</span> <span class="keywordtype">long</span> Index()<span class="keyword"> const </span>{ <span class="keywordflow">return</span> index; }
00209         <span class="keyword">virtual</span> <span class="keywordtype">long</span> Index(<span class="keywordtype">long</span> iindex) { index = iindex; <span class="keywordflow">return</span> index; }
00210 
00211         SWKEY_OPERATORS
00212 
00213         };
00214 
00215 SWORD_NAMESPACE_END
00216 <span class="preprocessor">#endif</span>
</pre></div><hr><address style="align: right;"><small>Generated on Thu Oct 31 12:11:28 2002 for The Sword Project by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 
width=110 height=53></a>1.2.17 </small></address>
</body>
</html>