aboutsummaryrefslogblamecommitdiffstats
path: root/doc/api-documentation/html/rawcom_8cpp-source.html
blob: 5115fb1760e5a3a3bf2427d0360ff13e007e2572 (plain) (tree)
































































































































































































































































































                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
<!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>rawcom.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>rawcom.cpp</h1><div class="fragment"><pre>00001 <font class="comment">/******************************************************************************</font>
00002 <font class="comment"> *  rawcom.cpp - code for class 'RawCom'- a module that reads raw commentary</font>
00003 <font class="comment"> *                      files:  ot and nt using indexs ??.bks ??.cps ??.vss</font>
00004 <font class="comment"> */</font>
00005 
00006 
00007 <font class="preprocessor">#include &lt;ctype.h&gt;</font>
00008 <font class="preprocessor">#include &lt;stdio.h&gt;</font>
00009 <font class="preprocessor">#include &lt;fcntl.h&gt;</font>
00010 
00011 <font class="preprocessor">#ifndef __GNUC__</font>
00012 <font class="preprocessor"></font><font class="preprocessor">#include &lt;io.h&gt;</font>
00013 <font class="preprocessor">#else</font>
00014 <font class="preprocessor"></font><font class="preprocessor">#include &lt;unistd.h&gt;</font>
00015 <font class="preprocessor">#endif</font>
00016 <font class="preprocessor"></font>
00017 <font class="preprocessor">#include &lt;string.h&gt;</font>
00018 <font class="preprocessor">#include &lt;utilfuns.h&gt;</font>
00019 <font class="preprocessor">#include &lt;rawverse.h&gt;</font>
00020 <font class="preprocessor">#include &lt;rawcom.h&gt;</font>
00021 
00022 
00023  <font class="comment">/******************************************************************************</font>
00024 <font class="comment"> * RawCom Constructor - Initializes data for instance of RawCom</font>
00025 <font class="comment"> *</font>
00026 <font class="comment"> * ENT: iname - Internal name for module</font>
00027 <font class="comment"> *      idesc - Name to display to user for module</font>
00028 <font class="comment"> *      idisp    - Display object to use for displaying</font>
00029 <font class="comment"> */</font>
00030 
00031 RawCom::RawCom(<font class="keyword">const</font> <font class="keywordtype">char</font> *ipath, <font class="keyword">const</font> <font class="keywordtype">char</font> *iname, <font class="keyword">const</font> <font class="keywordtype">char</font> *idesc, <a class="code" href="class_s_w_display.html">SWDisplay</a> *idisp, SWTextEncoding encoding, SWTextDirection dir, SWTextMarkup markup, <font class="keyword">const</font> <font class="keywordtype">char</font>* ilang)
00032                 : RawVerse(ipath),
00033             <a class="code" href="class_s_w_com.html">SWCom</a>(iname, idesc, idisp, encoding, dir, markup, ilang){
00034 }
00035 
00036 
00037 <font class="comment">/******************************************************************************</font>
00038 <font class="comment"> * RawCom Destructor - Cleans up instance of RawCom</font>
00039 <font class="comment"> */</font>
00040 
00041 RawCom::~RawCom()
00042 {
00043 }
00044 
00045 
00046 <font class="comment">/******************************************************************************</font>
00047 <font class="comment"> * RawCom::operator char *      - Returns the correct verse when char * cast</font>
00048 <font class="comment"> *                                      is requested</font>
00049 <font class="comment"> *</font>
00050 <font class="comment"> * RET: string buffer with verse</font>
00051 <font class="comment"> */</font>
00052 
00053 <font class="keywordtype">char</font> *RawCom::getRawEntry() {
00054         <font class="keywordtype">long</font>  start = 0;
00055         <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size = 0;
00056         <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
00057 
00058 <font class="preprocessor">#ifndef _WIN32_WCE</font>
00059 <font class="preprocessor"></font>        <font class="keywordflow">try</font> {
00060 <font class="preprocessor">#endif</font>
00061 <font class="preprocessor"></font>                key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
00062 <font class="preprocessor">#ifndef _WIN32_WCE</font>
00063 <font class="preprocessor"></font>        }
00064         <font class="keywordflow">catch</font> ( ... ) {}
00065 <font class="preprocessor">#endif</font>
00066 <font class="preprocessor"></font>        <font class="keywordflow">if</font> (!key)
00067                 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(this-&gt;key);
00068 
00069 
00070         findoffset(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), &amp;start, &amp;size);
00071         entrySize = size;        <font class="comment">// support getEntrySize call</font>
00072 
00073         <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> newsize = (size + 2) * FILTERPAD;
00074         <font class="keywordflow">if</font> (newsize &gt; entrybufallocsize) {
00075                 <font class="keywordflow">if</font> (entrybuf)
00076                         <font class="keyword">delete</font> [] entrybuf;
00077                 entrybuf = <font class="keyword">new</font> <font class="keywordtype">char</font> [ newsize ];
00078                 entrybufallocsize = newsize;
00079         }
00080         *entrybuf = 0;
00081 
00082         gettext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), start, (size + 2), entrybuf);
00083 
00084         rawFilter(entrybuf, size, key);
00085 
00086         <font class="keywordflow">if</font> (!isUnicode())
00087                 preptext(entrybuf);
00088 
00089         <font class="keywordflow">if</font> (key != this-&gt;key)
00090                 <font class="keyword">delete</font> key;
00091 
00092         <font class="keywordflow">return</font> entrybuf;
00093 }
00094 
00095 
00096 <font class="comment">/******************************************************************************</font>
00097 <font class="comment"> * RawCom::operator +=  - Increments module key a number of entries</font>
00098 <font class="comment"> *</font>
00099 <font class="comment"> * ENT: increment       - Number of entries to jump forward</font>
00100 <font class="comment"> *</font>
00101 <font class="comment"> * RET: *this</font>
00102 <font class="comment"> */</font>
00103 
00104 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawCom::operator +=(<font class="keywordtype">int</font> increment)
00105 {
00106         <font class="keywordtype">long</font>  start;
00107         <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> size;
00108         <a class="code" href="class_verse_key.html">VerseKey</a> *tmpkey = 0;
00109 
00110 <font class="preprocessor">#ifndef _WIN32_WCE</font>
00111 <font class="preprocessor"></font>        <font class="keywordflow">try</font> {
00112 <font class="preprocessor">#endif</font>
00113 <font class="preprocessor"></font>                tmpkey = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, key);
00114 <font class="preprocessor">#ifndef _WIN32_WCE</font>
00115 <font class="preprocessor"></font>        }
00116         <font class="keywordflow">catch</font> ( ... ) {}
00117 <font class="preprocessor">#endif</font>
00118 <font class="preprocessor"></font>        <font class="keywordflow">if</font> (!tmpkey)
00119                 tmpkey = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(key);
00120 
00121         findoffset(tmpkey-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), tmpkey-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), &amp;start, &amp;size);
00122 
00123         <a class="code" href="class_s_w_key.html">SWKey</a> lastgood = *tmpkey;
00124         <font class="keywordflow">while</font> (increment) {
00125                 <font class="keywordtype">long</font> laststart = start;
00126                 <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> lastsize = size;
00127                 <a class="code" href="class_s_w_key.html">SWKey</a> lasttry = *tmpkey;
00128                 (increment &gt; 0) ? (*key)++ : (*key)--;
00129                 <font class="keywordflow">if</font> (tmpkey != key)
00130                         <font class="keyword">delete</font> tmpkey;
00131                 tmpkey = 0;
00132 <font class="preprocessor">#ifndef _WIN32_WCE</font>
00133 <font class="preprocessor"></font>                <font class="keywordflow">try</font> {
00134 <font class="preprocessor">#endif</font>
00135 <font class="preprocessor"></font>                        tmpkey = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, key);
00136 <font class="preprocessor">#ifndef _WIN32_WCE</font>
00137 <font class="preprocessor"></font>                }
00138                 <font class="keywordflow">catch</font> ( ... ) {}
00139 <font class="preprocessor">#endif</font>
00140 <font class="preprocessor"></font>                <font class="keywordflow">if</font> (!tmpkey)
00141                         tmpkey = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(key);
00142 
00143                 <font class="keywordflow">if</font> ((error = key-&gt;Error())) {
00144                         *key = lastgood;
00145                         <font class="keywordflow">break</font>;
00146                 }
00147                 <font class="keywordtype">long</font> index = tmpkey-&gt;<a class="code" href="class_s_w_key.html#a17">Index</a>();
00148                 findoffset(tmpkey-&gt;Testament(), index, &amp;start, &amp;size);
00149                 <font class="keywordflow">if</font> ((((laststart != start) || (lastsize != size))||(!skipConsecutiveLinks)) &amp;&amp; (start &gt;= 0) &amp;&amp; (size)) {
00150                         increment += (increment &lt; 0) ? 1 : -1;
00151                         lastgood = *tmpkey;
00152                 }
00153         }
00154         error = (error) ? KEYERR_OUTOFBOUNDS : 0;
00155 
00156         <font class="keywordflow">if</font> (tmpkey != key)
00157                 <font class="keyword">delete</font> tmpkey;
00158 
00159         <font class="keywordflow">return</font> *<font class="keyword">this</font>;
00160 }
00161 
00162 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawCom::setentry(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf, <font class="keywordtype">long</font> len) {
00163         <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
00164         <font class="comment">// see if we have a VerseKey * or decendant</font>
00165 <font class="preprocessor">#ifndef _WIN32_WCE</font>
00166 <font class="preprocessor"></font>        <font class="keywordflow">try</font> {
00167 <font class="preprocessor">#endif</font>
00168 <font class="preprocessor"></font>                key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
00169 <font class="preprocessor">#ifndef _WIN32_WCE</font>
00170 <font class="preprocessor"></font>        }
00171         <font class="keywordflow">catch</font> ( ... ) {}
00172 <font class="preprocessor">#endif</font>
00173 <font class="preprocessor"></font>        <font class="comment">// if we don't have a VerseKey * decendant, create our own</font>
00174         <font class="keywordflow">if</font> (!key)
00175                 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(this-&gt;key);
00176 
00177         settext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), inbuf, len);
00178 
00179         <font class="keywordflow">if</font> (this-&gt;key != key) <font class="comment">// free our key if we created a VerseKey</font>
00180                 <font class="keyword">delete</font> key;
00181 
00182         <font class="keywordflow">return</font> *<font class="keyword">this</font>;
00183 }
00184 
00185 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawCom::operator &lt;&lt;(<font class="keyword">const</font> <font class="keywordtype">char</font> *inbuf) {
00186         <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
00187         <font class="comment">// see if we have a VerseKey * or decendant</font>
00188 <font class="preprocessor">#ifndef _WIN32_WCE</font>
00189 <font class="preprocessor"></font>        <font class="keywordflow">try</font> {
00190 <font class="preprocessor">#endif</font>
00191 <font class="preprocessor"></font>                key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
00192 <font class="preprocessor">#ifndef _WIN32_WCE</font>
00193 <font class="preprocessor"></font>        }
00194         <font class="keywordflow">catch</font> ( ... ) {}
00195 <font class="preprocessor">#endif</font>
00196 <font class="preprocessor"></font>        <font class="comment">// if we don't have a VerseKey * decendant, create our own</font>
00197         <font class="keywordflow">if</font> (!key)
00198                 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(this-&gt;key);
00199 
00200         settext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), inbuf);
00201 
00202         <font class="keywordflow">if</font> (this-&gt;key != key) <font class="comment">// free our key if we created a VerseKey</font>
00203                 <font class="keyword">delete</font> key;
00204 
00205         <font class="keywordflow">return</font> *<font class="keyword">this</font>;
00206 }
00207 
00208 
00209 <a class="code" href="class_s_w_module.html">SWModule</a> &amp;RawCom::operator &lt;&lt;(<font class="keyword">const</font> <a class="code" href="class_s_w_key.html">SWKey</a> *inkey) {
00210         <a class="code" href="class_verse_key.html">VerseKey</a> *destkey = 0;
00211         <font class="keyword">const</font> <a class="code" href="class_verse_key.html">VerseKey</a> *srckey = 0;
00212         <font class="comment">// see if we have a VerseKey * or decendant</font>
00213 <font class="preprocessor">#ifndef _WIN32_WCE</font>
00214 <font class="preprocessor"></font>        <font class="keywordflow">try</font> {
00215 <font class="preprocessor">#endif</font>
00216 <font class="preprocessor"></font>                destkey = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
00217 <font class="preprocessor">#ifndef _WIN32_WCE</font>
00218 <font class="preprocessor"></font>        }
00219         <font class="keywordflow">catch</font> ( ... ) {}
00220 <font class="preprocessor">#endif</font>
00221 <font class="preprocessor"></font>        <font class="comment">// if we don't have a VerseKey * decendant, create our own</font>
00222         <font class="keywordflow">if</font> (!destkey)
00223                 destkey = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(this-&gt;key);
00224 
00225         <font class="comment">// see if we have a VerseKey * or decendant</font>
00226 <font class="preprocessor">#ifndef _WIN32_WCE</font>
00227 <font class="preprocessor"></font>        <font class="keywordflow">try</font> {
00228 <font class="preprocessor">#endif</font>
00229 <font class="preprocessor"></font>                srckey = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, inkey);
00230 <font class="preprocessor">#ifndef _WIN32_WCE</font>
00231 <font class="preprocessor"></font>        }
00232         <font class="keywordflow">catch</font> ( ... ) {}
00233 <font class="preprocessor">#endif</font>
00234 <font class="preprocessor"></font>        <font class="comment">// if we don't have a VerseKey * decendant, create our own</font>
00235         <font class="keywordflow">if</font> (!srckey)
00236                 srckey = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(inkey);
00237 
00238         linkentry(destkey-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), destkey-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), srckey-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>());
00239 
00240         <font class="keywordflow">if</font> (this-&gt;key != destkey) <font class="comment">// free our key if we created a VerseKey</font>
00241                 <font class="keyword">delete</font> destkey;
00242 
00243         <font class="keywordflow">if</font> (inkey != srckey) <font class="comment">// free our key if we created a VerseKey</font>
00244                 <font class="keyword">delete</font> srckey;
00245 
00246         <font class="keywordflow">return</font> *<font class="keyword">this</font>;
00247 }
00248 
00249 
00250 <font class="comment">/******************************************************************************</font>
00251 <font class="comment"> * RawCom::deleteEntry  - deletes this entry</font>
00252 <font class="comment"> *</font>
00253 <font class="comment"> * RET: *this</font>
00254 <font class="comment"> */</font>
00255 
00256 <font class="keywordtype">void</font> RawCom::deleteEntry() {
00257 
00258         <a class="code" href="class_verse_key.html">VerseKey</a> *key = 0;
00259 
00260 <font class="preprocessor">#ifndef _WIN32_WCE</font>
00261 <font class="preprocessor"></font>        <font class="keywordflow">try</font> {
00262 <font class="preprocessor">#endif</font>
00263 <font class="preprocessor"></font>                key = SWDYNAMIC_CAST(<a class="code" href="class_verse_key.html">VerseKey</a>, this-&gt;key);
00264 <font class="preprocessor">#ifndef _WIN32_WCE</font>
00265 <font class="preprocessor"></font>        }
00266         <font class="keywordflow">catch</font> ( ... ) {}
00267 <font class="preprocessor">#endif</font>
00268 <font class="preprocessor"></font>        <font class="keywordflow">if</font> (!key)
00269                 key = <font class="keyword">new</font> <a class="code" href="class_verse_key.html">VerseKey</a>(this-&gt;key);
00270 
00271         settext(key-&gt;<a class="code" href="class_verse_key.html#a22">Testament</a>(), key-&gt;<a class="code" href="class_verse_key.html#a34">Index</a>(), <font class="stringliteral">""</font>);
00272 
00273         <font class="keywordflow">if</font> (key != this-&gt;key)
00274                 <font class="keyword">delete</font> key;
00275 }
</pre></div><hr><address align="right"><small>Generated on Thu Jun 20 22:13:00 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>