aboutsummaryrefslogtreecommitdiffstats
path: root/doc/api-documentation/html/gbfstrongs_8cpp-source.html
blob: 064c24c455d79b64d566c346deaddee61544bd6b (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
142
143
144
<!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>gbfstrongs.cpp Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.2.15 -->
<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="functions.html">Compound Members</a> &nbsp; </center>
<hr><h1>gbfstrongs.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
00002 <font class="comment"> *</font>
00003 <font class="comment"> * gbfstrongs - SWFilter decendant to hide or show strongs number</font>
00004 <font class="comment"> *                      in a GBF module.</font>
00005 <font class="comment"> */</font>
00006 
00007 
00008 <font class="preprocessor">#include &lt;stdlib.h&gt;</font>
00009 <font class="preprocessor">#include &lt;string.h&gt;</font>
00010 <font class="preprocessor">#include &lt;gbfstrongs.h&gt;</font>
00011 <font class="preprocessor">#include &lt;swmodule.h&gt;</font>
00012 <font class="preprocessor">#ifndef __GNUC__</font>
00013 <font class="preprocessor"></font><font class="preprocessor">#else</font>
00014 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unixstr.h&gt;</font>
00015 <font class="preprocessor">#endif</font>
00016 <font class="preprocessor"></font>
00017 
00018 <font class="keyword">const</font> <font class="keywordtype">char</font> GBFStrongs::on[] = <font class="stringliteral">"On"</font>;
00019 <font class="keyword">const</font> <font class="keywordtype">char</font> GBFStrongs::off[] = <font class="stringliteral">"Off"</font>;
00020 <font class="keyword">const</font> <font class="keywordtype">char</font> GBFStrongs::optName[] = <font class="stringliteral">"Strong's Numbers"</font>;
00021 <font class="keyword">const</font> <font class="keywordtype">char</font> GBFStrongs::optTip[] = <font class="stringliteral">"Toggles Strong's Numbers On and Off if they exist"</font>;
00022 
00023 
00024 GBFStrongs::GBFStrongs() {
00025         option = <font class="keyword">false</font>;
00026         options.push_back(on);
00027         options.push_back(off);
00028 }
00029 
00030 
00031 GBFStrongs::~GBFStrongs() {
00032 }
00033 
00034 <font class="keywordtype">void</font> GBFStrongs::setOptionValue(<font class="keyword">const</font> <font class="keywordtype">char</font> *ival)
00035 {
00036         option = (!stricmp(ival, on));
00037 }
00038 
00039 <font class="keyword">const</font> <font class="keywordtype">char</font> *GBFStrongs::getOptionValue()
00040 {
00041         <font class="keywordflow">return</font> (option) ? on:off;
00042 }
00043 
00044 <font class="keywordtype">char</font> GBFStrongs::ProcessText(<font class="keywordtype">char</font> *text, <font class="keywordtype">int</font> maxlen, <font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *key, <font class="keyword">const</font> <a class="code" href="class_s_w_module.html">SWModule</a> *module)
00045 {
00046         <font class="keywordtype">char</font> *to, *from, token[2048]; <font class="comment">// cheese.  Fix.</font>
00047         <font class="keywordtype">int</font> tokpos = 0;
00048         <font class="keywordtype">bool</font> intoken = <font class="keyword">false</font>;
00049         <font class="keywordtype">int</font> len;
00050         <font class="keywordtype">bool</font> lastspace = <font class="keyword">false</font>;
00051         <font class="keywordtype">int</font> word = 1;
00052         <font class="keywordtype">char</font> val[128];
00053         <font class="keywordtype">char</font> wordstr[5];
00054         <font class="keywordtype">char</font> *valto;
00055         <font class="keywordtype">char</font> *ch;
00056         <font class="keywordtype">char</font> *textStart = text, *textEnd = 0;
00057         <font class="keywordtype">bool</font> newText = <font class="keyword">false</font>;
00058         string tmp;
00059 
00060         len = strlen(text) + 1; <font class="comment">// shift string to right of buffer</font>
00061         <font class="keywordflow">if</font> (len &lt; maxlen) {
00062                 memmove(&amp;text[maxlen - len], text, len);
00063                 from = &amp;text[maxlen - len];
00064         }
00065         <font class="keywordflow">else</font>    from = text;    <font class="comment">// -------------------------------</font>
00066 
00067         <font class="keywordflow">for</font> (to = text; *from; from++) {
00068                 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&lt;'</font>) {
00069                         intoken = <font class="keyword">true</font>;
00070                         tokpos = 0;
00071                         token[0] = 0;
00072                         token[1] = 0;
00073                         token[2] = 0;
00074                         textEnd = to;
00075                         <font class="keywordflow">continue</font>;
00076                 }
00077                 <font class="keywordflow">if</font> (*from == <font class="charliteral">'&gt;'</font>) {     <font class="comment">// process tokens</font>
00078                         intoken = <font class="keyword">false</font>;
00079                         <font class="keywordflow">if</font> (*token == <font class="charliteral">'W'</font> &amp;&amp; (token[1] == <font class="charliteral">'G'</font> || token[1] == <font class="charliteral">'H'</font>)) {    <font class="comment">// Strongs</font>
00080                                 <font class="keywordflow">if</font> (module-&gt;<a class="code" href="class_s_w_module.html#a64">isProcessEntryAttributes</a>()) {
00081                                         valto = val;
00082                                         <font class="keywordflow">for</font> (<font class="keywordtype">unsigned</font> <font class="keywordtype">int</font> i = 2; ((token[i]) &amp;&amp; (i &lt; 150)); i++)
00083                                                 *valto++ = token[i];
00084                                         *valto = 0;
00085                                         <font class="keywordflow">if</font> (atoi((!isdigit(*val))?val+1:val) &lt; 5627) {
00086                                                 <font class="comment">// normal strongs number</font>
00087                                                 sprintf(wordstr, <font class="stringliteral">"%03d"</font>, word++);
00088                                                 module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"Word"</font>][wordstr][<font class="stringliteral">"Strongs"</font>] = val;
00089                                                 tmp = <font class="stringliteral">""</font>;
00090                                                 tmp.append(textStart, (<font class="keywordtype">int</font>)(textEnd - textStart));
00091                                                 module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"Word"</font>][wordstr][<font class="stringliteral">"Text"</font>] = tmp;
00092                                                 newText = <font class="keyword">true</font>;
00093                                         }
00094                                         <font class="keywordflow">else</font> {
00095                                                 <font class="comment">// verb morph</font>
00096                                                 sprintf(wordstr, <font class="stringliteral">"%03d"</font>, word-1);
00097                                                 module-&gt;<a class="code" href="class_s_w_module.html#a62">getEntryAttributes</a>()[<font class="stringliteral">"Word"</font>][wordstr][<font class="stringliteral">"Morph"</font>] = val;
00098                                         }
00099                                 }
00100                                 <font class="keywordflow">if</font> (!option) {
00101                                         <font class="keywordflow">if</font> ((from[1] == <font class="charliteral">' '</font>) || (from[1] == <font class="charliteral">','</font>) || (from[1] == <font class="charliteral">';'</font>) || (from[1] == <font class="charliteral">'.'</font>) || (from[1] == <font class="charliteral">'?'</font>) || (from[1] == <font class="charliteral">'!'</font>) || (from[1] == <font class="charliteral">')'</font>) || (from[1] == <font class="charliteral">'\''</font>) || (from[1] == <font class="charliteral">'\"'</font>)) {
00102                                                 <font class="keywordflow">if</font> (lastspace)
00103                                                         to--;
00104                                         }
00105                                         <font class="keywordflow">if</font> (newText) {textStart = to; newText = <font class="keyword">false</font>; }
00106                                         <font class="keywordflow">continue</font>;
00107                                 }
00108                         }
00109                         <font class="comment">// if not a strongs token, keep token in text</font>
00110                         *to++ = <font class="charliteral">'&lt;'</font>;
00111                         <font class="keywordflow">for</font> (<font class="keywordtype">char</font> *tok = token; *tok; tok++)
00112                                 *to++ = *tok;
00113                         *to++ = <font class="charliteral">'&gt;'</font>;
00114                         <font class="keywordflow">if</font> (newText) {textStart = to; newText = <font class="keyword">false</font>; }
00115                         <font class="keywordflow">continue</font>;
00116                 }
00117                 <font class="keywordflow">if</font> (intoken) {
00118                         <font class="keywordflow">if</font> (tokpos &lt; 2045)
00119                                 token[tokpos++] = *from;
00120                                 token[tokpos+2] = 0;
00121                 }
00122                 <font class="keywordflow">else</font>    {
00123                         *to++ = *from;
00124                         lastspace = (*from == <font class="charliteral">' '</font>);
00125                 }
00126         }
00127         *to++ = 0;
00128         *to = 0;
00129         <font class="keywordflow">return</font> 0;
00130 }
</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:12:59 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.15 </small></address>
</body>
</html>