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> <a class="qindex" href="namespaces.html">Namespace List</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="namespacemembers.html">Namespace Members</a> <a class="qindex" href="functions.html">Compound Members</a> </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 <swobject.h></span>
00028
00029 <span class="preprocessor">#include <defs.h></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 & operator =(const char *ikey) { setText(ikey); return *this; } \</span>
00037 <span class="preprocessor"> SWKey & operator =(const SWKey &ikey) { copyFrom(ikey); return *this; } \</span>
00038 <span class="preprocessor"> SWKey & 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 & ikey) { return equals(ikey); } \</span>
00041 <span class="preprocessor"> bool operator !=(const SWKey & ikey) { return !equals(ikey); } \</span>
00042 <span class="preprocessor"> virtual bool operator >(const SWKey & ikey) { return (compare(ikey) > 0); } \</span>
00043 <span class="preprocessor"> virtual bool operator <(const SWKey & ikey) { return (compare(ikey) < 0); } \</span>
00044 <span class="preprocessor"> virtual bool operator >=(const SWKey & ikey) { return (compare(ikey) > -1); } \</span>
00045 <span class="preprocessor"> virtual bool operator <=(const SWKey & ikey) { return (compare(ikey) < 1); } \</span>
00046 <span class="preprocessor"> SWKey & operator -=(int steps) { decrement(steps); return *this; } \</span>
00047 <span class="preprocessor"> SWKey & operator +=(int steps) { increment(steps); return *this; } \</span>
00048 <span class="preprocessor"> SWKey & operator++(int) { return *this += 1; } \</span>
00049 <span class="preprocessor"> SWKey & 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> &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> &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> & 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> &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>
|