<!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 class Reference</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> <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="functions.html">Compound Members</a> </center>
<hr><h1>VerseKey Class Reference</h1>Class VerseKey The <a class="el" href="class_s_w_key.html">SWKey</a> implementation used for verse based modules like Bibles or commentaries.
<a href="#_details">More...</a>
<p>
<code>#include <<a class="el" href="versekey_8h-source.html">versekey.h</a>></code>
<p>
Inheritance diagram for VerseKey:<p><center><img src="class_verse_key__inherit__graph.png" border="0" usemap="#_verse_key__inherit__map" alt="Inheritance graph"></center>
<map name="_verse_key__inherit__map">
<area href="class_s_w_key.html" shape="rect" coords="22,84,78,103" alt="">
<area href="class_s_w_object.html" shape="rect" coords="14,15,86,33" alt="">
</map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center>Collaboration diagram for VerseKey:<p><center><img src="class_verse_key__coll__graph.png" border="0" usemap="#_verse_key__coll__map" alt="Collaboration graph"></center>
<map name="_verse_key__coll__map">
<area href="class_s_w_key.html" shape="rect" coords="122,196,178,215" alt="">
<area href="class_list_key.html" shape="rect" coords="161,287,214,305" alt="">
<area href="class_s_w_object.html" shape="rect" coords="183,105,255,124" alt="">
<area href="class_s_w_class.html" shape="rect" coords="107,15,171,33" alt="">
</map>
<center><font size="2">[<a href="graph_legend.html">legend</a>]</font></center><a href="class_verse_key-members.html">List of all members.</a><table border=0 cellpadding=0 cellspacing=0>
<tr><td colspan=2><br><h2>Public Methods</h2></td></tr>
<tr><td nowrap align=right valign=top> </td><td valign=bottom><a class="el" href="class_verse_key.html#a0">VerseKey</a> (const char *ikey=0)</td></tr>
<tr><td> </td><td><font size=-1><em>VerseKey Constructor - initializes Instance of VerseKey.</em> <a href="#a0">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top> </td><td valign=bottom><a class="el" href="class_verse_key.html#a1">VerseKey</a> (const <a class="el" href="class_s_w_key.html">SWKey</a> *ikey)</td></tr>
<tr><td> </td><td><font size=-1><em>VerseKey Constructor - initializes instance of VerseKey.</em> <a href="#a1">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top> </td><td valign=bottom><a class="el" href="class_verse_key.html#a2">VerseKey</a> (const char *min, const char *max)</td></tr>
<tr><td> </td><td><font size=-1><em>VerseKey Constructor - initializes instance of VerseKey with boundariess - see also <a class="el" href="class_verse_key.html#a5">LowerBound</a> and <a class="el" href="class_verse_key.html#a6">UpperBound</a>.</em> <a href="#a2">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top> </td><td valign=bottom><a class="el" href="class_verse_key.html#a3">VerseKey</a> (const VerseKey &k)</td></tr>
<tr><td> </td><td><font size=-1><em>VerseKey Copy Constructor - will create a new VerseKey based on an existing one.</em> <a href="#a3">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a4" doxytag="VerseKey::~VerseKey"></a>
virtual </td><td valign=bottom><a class="el" href="class_verse_key.html#a4">~VerseKey</a> ()</td></tr>
<tr><td> </td><td><font size=-1><em>VerseKey Destructor Cleans up an instance of VerseKey.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>VerseKey & </td><td valign=bottom><a class="el" href="class_verse_key.html#a5">LowerBound</a> (const char *lb)</td></tr>
<tr><td> </td><td><font size=-1><em>sets the lower boundary for this VerseKey and returns the new boundary.</em> <a href="#a5">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>VerseKey & </td><td valign=bottom><a class="el" href="class_verse_key.html#a6">UpperBound</a> (const char *ub)</td></tr>
<tr><td> </td><td><font size=-1><em>sets the upper boundary for this VerseKey and returns the new boundary.</em> <a href="#a6">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>VerseKey & </td><td valign=bottom><a class="el" href="class_verse_key.html#a7">LowerBound</a> () const</td></tr>
<tr><td> </td><td><font size=-1><em>gets the lower boundary of this VerseKey.</em> <a href="#a7">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>VerseKey & </td><td valign=bottom><a class="el" href="class_verse_key.html#a8">UpperBound</a> () const</td></tr>
<tr><td> </td><td><font size=-1><em>gets the upper boundary of this VerseKey.</em> <a href="#a8">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a9" doxytag="VerseKey::ClearBounds"></a>
void </td><td valign=bottom><a class="el" href="class_verse_key.html#a9">ClearBounds</a> ()</td></tr>
<tr><td> </td><td><font size=-1><em>clears the boundaries of this VerseKey.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a10" doxytag="VerseKey::clone"></a>
virtual <a class="el" href="class_s_w_key.html">SWKey</a> * </td><td valign=bottom><a class="el" href="class_verse_key.html#a10">clone</a> () const</td></tr>
<tr><td> </td><td><font size=-1><em>Creates a new <a class="el" href="class_s_w_key.html">SWKey</a> based on the current VerseKey see also the Copy Constructor.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a11" doxytag="VerseKey::getText"></a>
virtual const char * </td><td valign=bottom><a class="el" href="class_verse_key.html#a11">getText</a> () const</td></tr>
<tr><td> </td><td><font size=-1><em>refreshes keytext before returning if cast to a (char *) is requested.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a12" doxytag="VerseKey::getShortText"></a>
virtual const char * </td><td valign=bottom><b>getShortText</b> () const</td></tr>
<tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="class_verse_key.html#a13">setText</a> (const char *ikey)</td></tr>
<tr><td> </td><td><font size=-1><em>Equates this <a class="el" href="class_s_w_key.html">SWKey</a> to a character string.</em> <a href="#a13">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="class_verse_key.html#a14">copyFrom</a> (const <a class="el" href="class_s_w_key.html">SWKey</a> &ikey)</td></tr>
<tr><td> </td><td><font size=-1><em>Equates this <a class="el" href="class_s_w_key.html">SWKey</a> to another <a class="el" href="class_s_w_key.html">SWKey</a> object.</em> <a href="#a14">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a15" doxytag="VerseKey::copyFrom"></a>
virtual void </td><td valign=bottom><a class="el" href="class_verse_key.html#a15">copyFrom</a> (const VerseKey &ikey)</td></tr>
<tr><td> </td><td><font size=-1><em>Equates this VerseKey to another VerseKey.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="class_verse_key.html#a16">setPosition</a> (SW_POSITION)</td></tr>
<tr><td> </td><td><font size=-1><em>Positions this key.</em> <a href="#a16">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="class_verse_key.html#a17">decrement</a> (int step)</td></tr>
<tr><td> </td><td><font size=-1><em>Decrements key a number of verses.</em> <a href="#a17">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="class_verse_key.html#a18">increment</a> (int step)</td></tr>
<tr><td> </td><td><font size=-1><em>Increments key a number of verses.</em> <a href="#a18">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a19" doxytag="VerseKey::Traversable"></a>
virtual char </td><td valign=bottom><b>Traversable</b> ()</td></tr>
<tr><td nowrap align=right valign=top><a name="a20" doxytag="VerseKey::getBookName"></a>
virtual const char * </td><td valign=bottom><b>getBookName</b> () const</td></tr>
<tr><td nowrap align=right valign=top><a name="a21" doxytag="VerseKey::getBookAbbrev"></a>
virtual const char * </td><td valign=bottom><b>getBookAbbrev</b> () const</td></tr>
<tr><td nowrap align=right valign=top>virtual char </td><td valign=bottom><a class="el" href="class_verse_key.html#a22">Testament</a> () const</td></tr>
<tr><td> </td><td><font size=-1><em>Gets testament.</em> <a href="#a22">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual char </td><td valign=bottom><a class="el" href="class_verse_key.html#a23">Book</a> () const</td></tr>
<tr><td> </td><td><font size=-1><em>Gets book.</em> <a href="#a23">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual int </td><td valign=bottom><a class="el" href="class_verse_key.html#a24">Chapter</a> () const</td></tr>
<tr><td> </td><td><font size=-1><em>Gets chapter.</em> <a href="#a24">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual int </td><td valign=bottom><a class="el" href="class_verse_key.html#a25">Verse</a> () const</td></tr>
<tr><td> </td><td><font size=-1><em>Gets verse.</em> <a href="#a25">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual char </td><td valign=bottom><a class="el" href="class_verse_key.html#a26">Testament</a> (char itestament)</td></tr>
<tr><td> </td><td><font size=-1><em>Sets/gets testament.</em> <a href="#a26">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual char </td><td valign=bottom><a class="el" href="class_verse_key.html#a27">Book</a> (char ibook)</td></tr>
<tr><td> </td><td><font size=-1><em>Sets/gets book.</em> <a href="#a27">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual int </td><td valign=bottom><a class="el" href="class_verse_key.html#a28">Chapter</a> (int ichapter)</td></tr>
<tr><td> </td><td><font size=-1><em>Sets/gets chapter.</em> <a href="#a28">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual int </td><td valign=bottom><a class="el" href="class_verse_key.html#a29">Verse</a> (int iverse)</td></tr>
<tr><td> </td><td><font size=-1><em>Sets/gets verse.</em> <a href="#a29">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual void </td><td valign=bottom><a class="el" href="class_verse_key.html#a30">Normalize</a> (char autocheck=0)</td></tr>
<tr><td> </td><td><font size=-1><em>checks limits and normalizes if necessary (e.g.</em> <a href="#a30">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual char </td><td valign=bottom><a class="el" href="class_verse_key.html#a31">AutoNormalize</a> (char iautonorm=MAXPOS(char))</td></tr>
<tr><td> </td><td><font size=-1><em>Sets/gets flag that tells VerseKey to automatically normalize itself when modified.</em> <a href="#a31">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual char </td><td valign=bottom><a class="el" href="class_verse_key.html#a32">Headings</a> (char iheadings=MAXPOS(char))</td></tr>
<tr><td> </td><td><font size=-1><em>Sets/gets flag that tells VerseKey to include chapter/book/testament/module headings.</em> <a href="#a32">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a33" doxytag="VerseKey::NewIndex"></a>
virtual long </td><td valign=bottom><b>NewIndex</b> () const</td></tr>
<tr><td nowrap align=right valign=top>virtual long </td><td valign=bottom><a class="el" href="class_verse_key.html#a34">Index</a> () const</td></tr>
<tr><td> </td><td><font size=-1><em>Gets index based upon current verse.</em> <a href="#a34">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual long </td><td valign=bottom><a class="el" href="class_verse_key.html#a35">Index</a> (long iindex)</td></tr>
<tr><td> </td><td><font size=-1><em>Sets index based upon current verse.</em> <a href="#a35">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a36" doxytag="VerseKey::getOSISRef"></a>
virtual const char * </td><td valign=bottom><b>getOSISRef</b> () const</td></tr>
<tr><td nowrap align=right valign=top><a name="a37" doxytag="VerseKey::ParseVerseList"></a>
virtual <a class="el" href="class_list_key.html">ListKey</a> </td><td valign=bottom><b>ParseVerseList</b> (const char *buf, const char *defaultKey="Genesis 1:1", bool expandRange=false)</td></tr>
<tr><td nowrap align=right valign=top>virtual int </td><td valign=bottom><a class="el" href="class_verse_key.html#a38">compare</a> (const <a class="el" href="class_s_w_key.html">SWKey</a> &ikey)</td></tr>
<tr><td> </td><td><font size=-1><em>Compares another <a class="el" href="class_s_w_key.html">SWKey</a> object.</em> <a href="#a38">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>virtual int </td><td valign=bottom><a class="el" href="class_verse_key.html#a39">_compare</a> (const VerseKey &ikey)</td></tr>
<tr><td> </td><td><font size=-1><em>Compares another VerseKey object.</em> <a href="#a39">More...</a><em></em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="a40" doxytag="VerseKey::setBookAbbrevs"></a>
virtual void </td><td valign=bottom><b>setBookAbbrevs</b> (const struct abbrev *bookAbbrevs, unsigned int size=0)</td></tr>
<tr><td nowrap align=right valign=top><a name="a41" doxytag="VerseKey::setBooks"></a>
virtual void </td><td valign=bottom><b>setBooks</b> (const char *iBMAX, struct sbook **ibooks)</td></tr>
<tr><td nowrap align=right valign=top><a name="a42" doxytag="VerseKey::setLocale"></a>
virtual void </td><td valign=bottom><b>setLocale</b> (const char *name)</td></tr>
<tr><td nowrap align=right valign=top><a name="a43" doxytag="VerseKey::getLocale"></a>
virtual const char * </td><td valign=bottom><b>getLocale</b> () const</td></tr>
<tr><td nowrap align=right valign=top><a name="a44" doxytag="VerseKey::operator="></a>
virtual SWKEY_OPERATORS <a class="el" href="class_s_w_key.html">SWKey</a> & </td><td valign=bottom><b>operator=</b> (const VerseKey &ikey)</td></tr>
<tr><td colspan=2><br><h2>Public Attributes</h2></td></tr>
<tr><td nowrap align=right valign=top><a name="m0" doxytag="VerseKey::BMAX"></a>
const char * </td><td valign=bottom><b>BMAX</b></td></tr>
<tr><td nowrap align=right valign=top><a name="m1" doxytag="VerseKey::books"></a>
sbook ** </td><td valign=bottom><b>books</b></td></tr>
<tr><td colspan=2><br><h2>Static Public Attributes</h2></td></tr>
<tr><td nowrap align=right valign=top><a name="p0" doxytag="VerseKey::builtin_BMAX"></a>
const char </td><td valign=bottom><b>builtin_BMAX</b> [2] = {39, 27}</td></tr>
<tr><td nowrap align=right valign=top><a name="p1" doxytag="VerseKey::builtin_books"></a>
sbook * </td><td valign=bottom><b>builtin_books</b> [2] = {0,0}</td></tr>
<tr><td nowrap align=right valign=top><a name="p2" doxytag="VerseKey::builtin_abbrevs"></a>
const struct abbrev </td><td valign=bottom><b>builtin_abbrevs</b> []</td></tr>
<tr><td colspan=2><br><h2>Private Methods</h2></td></tr>
<tr><td nowrap align=right valign=top><a name="c0" doxytag="VerseKey::getBookAbbrev"></a>
int </td><td valign=bottom><b>getBookAbbrev</b> (const char *abbr)</td></tr>
<tr><td nowrap align=right valign=top><a name="c1" doxytag="VerseKey::initBounds"></a>
void </td><td valign=bottom><b>initBounds</b> () const</td></tr>
<tr><td nowrap align=right valign=top><a name="c2" doxytag="VerseKey::initstatics"></a>
void </td><td valign=bottom><a class="el" href="class_verse_key.html#c2">initstatics</a> ()</td></tr>
<tr><td> </td><td><font size=-1><em>initialize and allocate books array.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="c3" doxytag="VerseKey::init"></a>
void </td><td valign=bottom><a class="el" href="class_verse_key.html#c3">init</a> ()</td></tr>
<tr><td> </td><td><font size=-1><em>initializes this <a class="el" href="class_verse_key.html#a0">VerseKey</a>().</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="c4" doxytag="VerseKey::freshtext"></a>
void </td><td valign=bottom><a class="el" href="class_verse_key.html#c4">freshtext</a> () const</td></tr>
<tr><td> </td><td><font size=-1><em>Refresh keytext based on testament|book|chapter|verse default auto normalization to true default display headings option is false.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="c5" doxytag="VerseKey::parse"></a>
virtual char </td><td valign=bottom><a class="el" href="class_verse_key.html#c5">parse</a> ()</td></tr>
<tr><td> </td><td><font size=-1><em>Parse a character array into testament|book|chapter|verse.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top>int </td><td valign=bottom><a class="el" href="class_verse_key.html#c6">findindex</a> (long *array, int size, long value)</td></tr>
<tr><td> </td><td><font size=-1><em>Binary search to find the index closest, but less than the given value.</em> <a href="#c6">More...</a><em></em></font><br><br></td></tr>
<tr><td colspan=2><br><h2>Private Attributes</h2></td></tr>
<tr><td nowrap align=right valign=top><a name="o0" doxytag="VerseKey::internalListKey"></a>
<a class="el" href="class_list_key.html">ListKey</a> </td><td valign=bottom><b>internalListKey</b></td></tr>
<tr><td nowrap align=right valign=top><a name="o1" doxytag="VerseKey::abbrevs"></a>
const struct abbrev * </td><td valign=bottom><b>abbrevs</b></td></tr>
<tr><td nowrap align=right valign=top><a name="o2" doxytag="VerseKey::locale"></a>
char * </td><td valign=bottom><b>locale</b></td></tr>
<tr><td nowrap align=right valign=top><a name="o3" doxytag="VerseKey::abbrevsCnt"></a>
int </td><td valign=bottom><b>abbrevsCnt</b></td></tr>
<tr><td nowrap align=right valign=top><a name="o4" doxytag="VerseKey::testament"></a>
signed char </td><td valign=bottom><a class="el" href="class_verse_key.html#o4">testament</a></td></tr>
<tr><td> </td><td><font size=-1><em>The Testament: 0 - Old; 1 - New.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="o5" doxytag="VerseKey::book"></a>
signed char </td><td valign=bottom><b>book</b></td></tr>
<tr><td nowrap align=right valign=top><a name="o6" doxytag="VerseKey::chapter"></a>
signed int </td><td valign=bottom><b>chapter</b></td></tr>
<tr><td nowrap align=right valign=top><a name="o7" doxytag="VerseKey::verse"></a>
signed int </td><td valign=bottom><b>verse</b></td></tr>
<tr><td nowrap align=right valign=top><a name="o8" doxytag="VerseKey::autonorm"></a>
char </td><td valign=bottom><a class="el" href="class_verse_key.html#o8">autonorm</a></td></tr>
<tr><td> </td><td><font size=-1><em>flag for auto normalization.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="o9" doxytag="VerseKey::headings"></a>
char </td><td valign=bottom><a class="el" href="class_verse_key.html#o9">headings</a></td></tr>
<tr><td> </td><td><font size=-1><em>flag for headings on/off.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="o10" doxytag="VerseKey::lowerBound"></a>
VerseKey * </td><td valign=bottom><b>lowerBound</b></td></tr>
<tr><td nowrap align=right valign=top><a name="o11" doxytag="VerseKey::upperBound"></a>
VerseKey * </td><td valign=bottom><b>upperBound</b></td></tr>
<tr><td colspan=2><br><h2>Static Private Attributes</h2></td></tr>
<tr><td nowrap align=right valign=top><a name="r0" doxytag="VerseKey::classdef"></a>
<a class="el" href="class_s_w_class.html">SWClass</a> </td><td valign=bottom><b>classdef</b></td></tr>
<tr><td nowrap align=right valign=top><a name="r1" doxytag="VerseKey::offsets"></a>
long * </td><td valign=bottom><b>offsets</b> [2][2] = {{VerseKey::otbks, VerseKey::otcps}, {VerseKey::ntbks, VerseKey::ntcps}}</td></tr>
<tr><td nowrap align=right valign=top><a name="r2" doxytag="VerseKey::offsize"></a>
int </td><td valign=bottom><b>offsize</b> [2][2]</td></tr>
<tr><td nowrap align=right valign=top><a name="r3" doxytag="VerseKey::instance"></a>
int </td><td valign=bottom><a class="el" href="class_verse_key.html#r3">instance</a> = 0</td></tr>
<tr><td> </td><td><font size=-1><em>number of instantiated VerseKey objects or derivitives.</em></font><br><br></td></tr>
<tr><td nowrap align=right valign=top><a name="r4" doxytag="VerseKey::otbooks"></a>
sbook </td><td valign=bottom><b>otbooks</b> []</td></tr>
<tr><td nowrap align=right valign=top><a name="r5" doxytag="VerseKey::ntbooks"></a>
sbook </td><td valign=bottom><b>ntbooks</b> []</td></tr>
<tr><td nowrap align=right valign=top><a name="r6" doxytag="VerseKey::otbks"></a>
long </td><td valign=bottom><b>otbks</b> []</td></tr>
<tr><td nowrap align=right valign=top><a name="r7" doxytag="VerseKey::otcps"></a>
long </td><td valign=bottom><b>otcps</b> []</td></tr>
<tr><td nowrap align=right valign=top><a name="r8" doxytag="VerseKey::ntbks"></a>
long </td><td valign=bottom><b>ntbks</b> []</td></tr>
<tr><td nowrap align=right valign=top><a name="r9" doxytag="VerseKey::ntcps"></a>
long </td><td valign=bottom><b>ntcps</b> []</td></tr>
<tr><td nowrap align=right valign=top><a name="r10" doxytag="VerseKey::vm"></a>
int </td><td valign=bottom><b>vm</b> []</td></tr>
<tr><td nowrap align=right valign=top><a name="r11" doxytag="VerseKey::localeCache"></a>
LocaleCache </td><td valign=bottom><b>localeCache</b></td></tr>
</table>
<hr><a name="_details"></a><h2>Detailed Description</h2>
Class VerseKey The <a class="el" href="class_s_w_key.html">SWKey</a> implementation used for verse based modules like Bibles or commentaries.
<p>
<p>
Definition at line <a class="el" href="versekey_8h-source.html#l00072">72</a> of file <a class="el" href="versekey_8h-source.html">versekey.h</a>.<hr><h2>Constructor & Destructor Documentation</h2>
<a name="a0" doxytag="VerseKey::VerseKey"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> VerseKey::VerseKey </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">const char * </td>
<td class="mdname1" valign="top" nowrap> <em>ikey</em> = 0 </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
VerseKey Constructor - initializes Instance of VerseKey.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>ikey</em> </td><td>
text key (will take various forms of 'BOOK CH:VS'. See <a class="el" href="class_verse_key.html#c5">parse</a> for more detailed information) </td></tr>
</table>
</dl>
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l00089">89</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
References <a class="el" href="versekey_8cpp-source.html#l00048">init</a>(), and <a class="el" href="versekey_8cpp-source.html#l00231">parse</a>().
<p>
Referenced by <a class="el" href="versekey_8cpp-source.html#l00120">clone</a>().
<p>
<div class="fragment"><pre>00089 : <a class="code" href="class_s_w_key.html#a0">SWKey</a>(ikey)
00090 {
00091 <a class="code" href="class_verse_key.html#c3">init</a>();
00092 <font class="keywordflow">if</font> (ikey)
00093 <a class="code" href="class_verse_key.html#c5">parse</a>();
00094 }
</pre></div> </td>
</tr>
</table>
<a name="a1" doxytag="VerseKey::VerseKey"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> VerseKey::VerseKey </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">const <a class="el" href="class_s_w_key.html">SWKey</a> * </td>
<td class="mdname1" valign="top" nowrap> <em>ikey</em> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
VerseKey Constructor - initializes instance of VerseKey.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>ikey</em> </td><td>
base key (will take various forms of 'BOOK CH:VS'. See <a class="el" href="class_verse_key.html#c5">parse</a> for more detailed information) </td></tr>
</table>
</dl>
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l00074">74</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
References <a class="el" href="versekey_8cpp-source.html#l00048">init</a>(), and <a class="el" href="versekey_8cpp-source.html#l00231">parse</a>().
<p>
<div class="fragment"><pre>00074 : <a class="code" href="class_s_w_key.html#a0">SWKey</a>(*ikey)
00075 {
00076 <a class="code" href="class_verse_key.html#c3">init</a>();
00077 <font class="keywordflow">if</font> (ikey)
00078 <a class="code" href="class_verse_key.html#c5">parse</a>();
00079 }
</pre></div> </td>
</tr>
</table>
<a name="a2" doxytag="VerseKey::VerseKey"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> VerseKey::VerseKey </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">const char * </td>
<td class="mdname" nowrap> <em>min</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>const char * </td>
<td class="mdname" nowrap> <em>max</em></td>
</tr>
<tr>
<td></td>
<td class="md">) </td>
<td class="md" colspan="2"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
VerseKey Constructor - initializes instance of VerseKey with boundariess - see also <a class="el" href="class_verse_key.html#a5">LowerBound</a> and <a class="el" href="class_verse_key.html#a6">UpperBound</a>.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>min</em> </td><td>
the lower boundary of the new VerseKey </td></tr>
<tr><td valign=top><em>max</em> </td><td>
the upper boundary of the new VerseKey </td></tr>
</table>
</dl>
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l00111">111</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
References <a class="el" href="versekey_8cpp-source.html#l00048">init</a>(), <a class="el" href="versekey_8cpp-source.html#l00761">LowerBound</a>(), <a class="el" href="versekey_8cpp-source.html#l00884">setPosition</a>(), and <a class="el" href="versekey_8cpp-source.html#l00774">UpperBound</a>().
<p>
<div class="fragment"><pre>00111 : <a class="code" href="class_s_w_key.html#a0">SWKey</a>()
00112 {
00113 <a class="code" href="class_verse_key.html#c3">init</a>();
00114 <a class="code" href="class_verse_key.html#a7">LowerBound</a>(min);
00115 <a class="code" href="class_verse_key.html#a8">UpperBound</a>(max);
00116 <a class="code" href="class_verse_key.html#a16">setPosition</a>(TOP);
00117 }
</pre></div> </td>
</tr>
</table>
<a name="a3" doxytag="VerseKey::VerseKey"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> VerseKey::VerseKey </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">const VerseKey & </td>
<td class="mdname1" valign="top" nowrap> <em>k</em> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
VerseKey Copy Constructor - will create a new VerseKey based on an existing one.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>k</em> </td><td>
the VerseKey to copy from </td></tr>
</table>
</dl> </td>
</tr>
</table>
<hr><h2>Member Function Documentation</h2>
<a name="a39" doxytag="VerseKey::_compare"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> int VerseKey::_compare </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">const VerseKey & </td>
<td class="mdname1" valign="top" nowrap> <em>ikey</em> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap><code> [virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Compares another VerseKey object.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>ikey</em> </td><td>
key to compare with this one </td></tr>
</table>
</dl><dl compact><dt><b>
Returns: </b><dd>
>0 if this VerseKey is greater than compare VerseKey, <0 if this VerseKey is smaller than compare VerseKey, 0 if the keys are the same </dl>
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l01402">1402</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
References <a class="el" href="versekey_8cpp-source.html#l01075">Book</a>(), <a class="el" href="versekey_8cpp-source.html#l01087">Chapter</a>(), <a class="el" href="versekey_8cpp-source.html#l01063">Testament</a>(), and <a class="el" href="versekey_8cpp-source.html#l01099">Verse</a>().
<p>
Referenced by <a class="el" href="versekey_8cpp-source.html#l01385">compare</a>(), <a class="el" href="versekey_8cpp-source.html#l01316">Index</a>(), and <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>().
<p>
<div class="fragment"><pre>01403 {
01404 <font class="keywordtype">long</font> keyval1 = 0;
01405 <font class="keywordtype">long</font> keyval2 = 0;
01406
01407 keyval1 += <a class="code" href="class_verse_key.html#a22">Testament</a>() * 1000000000;
01408 keyval2 += ivkey.<a class="code" href="class_verse_key.html#a22">Testament</a>() * 1000000000;
01409 keyval1 += <a class="code" href="class_verse_key.html#a23">Book</a>() * 1000000;
01410 keyval2 += ivkey.<a class="code" href="class_verse_key.html#a23">Book</a>() * 1000000;
01411 keyval1 += <a class="code" href="class_verse_key.html#a24">Chapter</a>() * 1000;
01412 keyval2 += ivkey.<a class="code" href="class_verse_key.html#a24">Chapter</a>() * 1000;
01413 keyval1 += <a class="code" href="class_verse_key.html#a25">Verse</a>();
01414 keyval2 += ivkey.<a class="code" href="class_verse_key.html#a25">Verse</a>();
01415 keyval1 -= keyval2;
01416 keyval1 = (keyval1) ? ((keyval1 > 0) ? 1 : -1) <font class="comment">/*keyval1/labs(keyval1)*/</font>:0; <font class="comment">// -1 | 0 | 1</font>
01417 <font class="keywordflow">return</font> keyval1;
01418 }
</pre></div> </td>
</tr>
</table>
<a name="a31" doxytag="VerseKey::AutoNormalize"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> char VerseKey::AutoNormalize </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">char </td>
<td class="mdname1" valign="top" nowrap> <em>iautonorm</em> = MAXPOS(char) </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap><code> [virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Sets/gets flag that tells VerseKey to automatically normalize itself when modified.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>iautonorm</em> </td><td>
value which to set autonorm [MAXPOS(char)] - only get </td></tr>
</table>
</dl><dl compact><dt><b>
Returns: </b><dd>
if unchanged -> value of autonorm, if changed -> previous value of autonorm </dl>
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l01203">1203</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
References <a class="el" href="versekey_8h-source.html#l00121">autonorm</a>, and <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>().
<p>
<div class="fragment"><pre>01204 {
01205 <font class="keywordtype">char</font> retval = <a class="code" href="class_verse_key.html#o8">autonorm</a>;
01206
01207 <font class="keywordflow">if</font> (iautonorm != MAXPOS(<font class="keywordtype">char</font>)) {
01208 <a class="code" href="class_verse_key.html#o8">autonorm</a> = iautonorm;
01209 <a class="code" href="class_verse_key.html#a30">Normalize</a>(1);
01210 }
01211 <font class="keywordflow">return</font> retval;
01212 }
</pre></div> </td>
</tr>
</table>
<a name="a27" doxytag="VerseKey::Book"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> char VerseKey::Book </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">char </td>
<td class="mdname1" valign="top" nowrap> <em>ibook</em> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap><code> [virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Sets/gets book.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>ibook</em> </td><td>
value which to set book [MAXPOS(char)] - only get </td></tr>
</table>
</dl><dl compact><dt><b>
Returns: </b><dd>
if unchanged -> value of book, if changed -> previous value of book </dl>
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l01137">1137</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
References <a class="el" href="versekey_8cpp-source.html#l01087">Chapter</a>(), and <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>().
<p>
<div class="fragment"><pre>01138 {
01139 <font class="keywordtype">char</font> retval = book;
01140
01141 <a class="code" href="class_verse_key.html#a24">Chapter</a>(1);
01142 book = ibook;
01143 <a class="code" href="class_verse_key.html#a30">Normalize</a>(1);
01144
01145 <font class="keywordflow">return</font> retval;
01146 }
</pre></div> </td>
</tr>
</table>
<a name="a23" doxytag="VerseKey::Book"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> char VerseKey::Book </td>
<td class="md" valign="top">( </td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap> const<code> [virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Gets book.
<p>
<dl compact><dt><b>
Returns: </b><dd>
value of book </dl>
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l01075">1075</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
Referenced by <a class="el" href="versekey_8cpp-source.html#l01402">_compare</a>(), and <a class="el" href="versekey_8cpp-source.html#l00884">setPosition</a>().
<p>
<div class="fragment"><pre>01076 {
01077 <font class="keywordflow">return</font> book;
01078 }
</pre></div> </td>
</tr>
</table>
<a name="a28" doxytag="VerseKey::Chapter"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> int VerseKey::Chapter </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">int </td>
<td class="mdname1" valign="top" nowrap> <em>ichapter</em> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap><code> [virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Sets/gets chapter.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>ichapter</em> </td><td>
value which to set chapter [MAXPOS(int)] - only get </td></tr>
</table>
</dl><dl compact><dt><b>
Returns: </b><dd>
if unchanged -> value of chapter, if changed -> previous value of chapter </dl>
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l01159">1159</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
References <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>(), and <a class="el" href="versekey_8cpp-source.html#l01099">Verse</a>().
<p>
<div class="fragment"><pre>01160 {
01161 <font class="keywordtype">int</font> retval = chapter;
01162
01163 <a class="code" href="class_verse_key.html#a25">Verse</a>(1);
01164 chapter = ichapter;
01165 <a class="code" href="class_verse_key.html#a30">Normalize</a>(1);
01166
01167 <font class="keywordflow">return</font> retval;
01168 }
</pre></div> </td>
</tr>
</table>
<a name="a24" doxytag="VerseKey::Chapter"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> int VerseKey::Chapter </td>
<td class="md" valign="top">( </td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap> const<code> [virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Gets chapter.
<p>
<dl compact><dt><b>
Returns: </b><dd>
value of chapter </dl>
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l01087">1087</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
Referenced by <a class="el" href="versekey_8cpp-source.html#l01402">_compare</a>(), <a class="el" href="versekey_8cpp-source.html#l01137">Book</a>(), and <a class="el" href="versekey_8cpp-source.html#l00884">setPosition</a>().
<p>
<div class="fragment"><pre>01088 {
01089 <font class="keywordflow">return</font> chapter;
01090 }
</pre></div> </td>
</tr>
</table>
<a name="a38" doxytag="VerseKey::compare"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> int VerseKey::compare </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">const <a class="el" href="class_s_w_key.html">SWKey</a> & </td>
<td class="mdname1" valign="top" nowrap> <em>ikey</em> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap><code> [virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Compares another <a class="el" href="class_s_w_key.html">SWKey</a> object.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>ikey</em> </td><td>
key to compare with this one </td></tr>
</table>
</dl><dl compact><dt><b>
Returns: </b><dd>
>0 if this VerseKey is greater than compare <a class="el" href="class_s_w_key.html">SWKey</a>, <0 if this VerseKey is smaller than compare <a class="el" href="class_s_w_key.html">SWKey</a>, 0 if the keys are the same </dl>
<p>
Reimplemented from <a class="el" href="class_s_w_key.html#a11">SWKey</a>.
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l01385">1385</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
References <a class="el" href="versekey_8cpp-source.html#l01402">_compare</a>().
<p>
<div class="fragment"><pre>01386 {
01387 <a class="code" href="class_verse_key.html">VerseKey</a> ivkey = (<font class="keyword">const</font> <font class="keywordtype">char</font> *)ikey;
01388 <font class="keywordflow">return</font> <a class="code" href="class_verse_key.html#a39">_compare</a>(ivkey);
01389 }
</pre></div> </td>
</tr>
</table>
<a name="a14" doxytag="VerseKey::copyFrom"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> void VerseKey::copyFrom </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">const <a class="el" href="class_s_w_key.html">SWKey</a> & </td>
<td class="mdname1" valign="top" nowrap> <em>ikey</em> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap><code> [virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Equates this <a class="el" href="class_s_w_key.html">SWKey</a> to another <a class="el" href="class_s_w_key.html">SWKey</a> object.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>ikey</em> </td><td>
other swkey object </td></tr>
</table>
</dl>
<p>
Reimplemented from <a class="el" href="class_s_w_key.html#a8">SWKey</a>.
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l00833">833</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
References <a class="el" href="swkey_8cpp-source.html#l00126">SWKey::copyFrom</a>(), and <a class="el" href="versekey_8cpp-source.html#l00231">parse</a>().
<p>
<div class="fragment"><pre>00833 {
00834 <a class="code" href="class_s_w_key.html#a8">SWKey::copyFrom</a>(ikey);
00835
00836 <a class="code" href="class_verse_key.html#c5">parse</a>();
00837 }
</pre></div> </td>
</tr>
</table>
<a name="a17" doxytag="VerseKey::decrement"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> void VerseKey::decrement </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">int </td>
<td class="mdname1" valign="top" nowrap> <em>step</em> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap><code> [virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Decrements key a number of verses.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>decrement</em> </td><td>
Number of verses to jump backward </td></tr>
</table>
</dl><dl compact><dt><b>
Returns: </b><dd>
*this </dl>
<p>
Reimplemented from <a class="el" href="class_s_w_key.html#a14">SWKey</a>.
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l00941">941</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
References <a class="el" href="swkey_8cpp-source.html#l00100">SWKey::Error</a>(), <a class="el" href="versekey_8h-source.html#l00124">headings</a>, and <a class="el" href="versekey_8cpp-source.html#l01271">Index</a>().
<p>
<div class="fragment"><pre>00941 {
00942 <font class="keywordtype">char</font> ierror = 0;
00943
00944 <a class="code" href="class_verse_key.html#a34">Index</a>(<a class="code" href="class_verse_key.html#a34">Index</a>() - step);
00945 <font class="keywordflow">while</font> ((!verse) && (!<a class="code" href="class_verse_key.html#o9">headings</a>) && (!ierror)) {
00946 <a class="code" href="class_verse_key.html#a34">Index</a>(<a class="code" href="class_verse_key.html#a34">Index</a>() - 1);
00947 ierror = <a class="code" href="class_s_w_key.html#a6">Error</a>();
00948 }
00949 <font class="keywordflow">if</font> ((ierror) && (!<a class="code" href="class_verse_key.html#o9">headings</a>))
00950 (*this)++;
00951
00952 error = (ierror) ? ierror : error;
00953 }
</pre></div> </td>
</tr>
</table>
<a name="c6" doxytag="VerseKey::findindex"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> int VerseKey::findindex </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">long * </td>
<td class="mdname" nowrap> <em>array</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>int </td>
<td class="mdname" nowrap> <em>size</em>, </td>
</tr>
<tr>
<td></td>
<td></td>
<td class="md" nowrap>long </td>
<td class="mdname" nowrap> <em>value</em></td>
</tr>
<tr>
<td></td>
<td class="md">) </td>
<td class="md" colspan="2"><code> [private]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Binary search to find the index closest, but less than the given value.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>array</em> </td><td>
long * to array to search </td></tr>
<tr><td valign=top><em>size</em> </td><td>
number of elements in the array </td></tr>
<tr><td valign=top><em>value</em> </td><td>
value to find </td></tr>
</table>
</dl><dl compact><dt><b>
Returns: </b><dd>
the index into the array that is less than but closest to value </dl>
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l01249">1249</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
Referenced by <a class="el" href="versekey_8cpp-source.html#l01316">Index</a>().
<p>
<div class="fragment"><pre>01250 {
01251 <font class="keywordtype">int</font> lbound, ubound, tval;
01252
01253 lbound = 0;
01254 ubound = size - 1;
01255 <font class="keywordflow">while</font> ((ubound - lbound) > 1) {
01256 tval = lbound + (ubound-lbound)/2;
01257 <font class="keywordflow">if</font> (array[tval] <= value)
01258 lbound = tval;
01259 <font class="keywordflow">else</font> ubound = tval;
01260 }
01261 <font class="keywordflow">return</font> (array[ubound] <= value) ? ubound : lbound;
01262 }
</pre></div> </td>
</tr>
</table>
<a name="a32" doxytag="VerseKey::Headings"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> char VerseKey::Headings </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">char </td>
<td class="mdname1" valign="top" nowrap> <em>iheadings</em> = MAXPOS(char) </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap><code> [virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Sets/gets flag that tells VerseKey to include chapter/book/testament/module headings.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>iheadings</em> </td><td>
value which to set headings [MAXPOS(char)] - only get </td></tr>
</table>
</dl><dl compact><dt><b>
Returns: </b><dd>
if unchanged -> value of headings, if changed -> previous value of headings </dl>
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l01226">1226</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
References <a class="el" href="versekey_8h-source.html#l00124">headings</a>, and <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>().
<p>
<div class="fragment"><pre>01227 {
01228 <font class="keywordtype">char</font> retval = <a class="code" href="class_verse_key.html#o9">headings</a>;
01229
01230 <font class="keywordflow">if</font> (iheadings != MAXPOS(<font class="keywordtype">char</font>)) {
01231 <a class="code" href="class_verse_key.html#o9">headings</a> = iheadings;
01232 <a class="code" href="class_verse_key.html#a30">Normalize</a>(1);
01233 }
01234 <font class="keywordflow">return</font> retval;
01235 }
</pre></div> </td>
</tr>
</table>
<a name="a18" doxytag="VerseKey::increment"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> void VerseKey::increment </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">int </td>
<td class="mdname1" valign="top" nowrap> <em>step</em> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap><code> [virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Increments key a number of verses.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>increment</em> </td><td>
Number of verses to jump forward </td></tr>
</table>
</dl><dl compact><dt><b>
Returns: </b><dd>
*this </dl>
<p>
Reimplemented from <a class="el" href="class_s_w_key.html#a15">SWKey</a>.
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l00921">921</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
References <a class="el" href="swkey_8cpp-source.html#l00100">SWKey::Error</a>(), <a class="el" href="versekey_8h-source.html#l00124">headings</a>, and <a class="el" href="versekey_8cpp-source.html#l01271">Index</a>().
<p>
<div class="fragment"><pre>00921 {
00922 <font class="keywordtype">char</font> ierror = 0;
00923 <a class="code" href="class_verse_key.html#a34">Index</a>(<a class="code" href="class_verse_key.html#a34">Index</a>() + step);
00924 <font class="keywordflow">while</font> ((!verse) && (!<a class="code" href="class_verse_key.html#o9">headings</a>) && (!ierror)) {
00925 <a class="code" href="class_verse_key.html#a34">Index</a>(<a class="code" href="class_verse_key.html#a34">Index</a>() + 1);
00926 ierror = <a class="code" href="class_s_w_key.html#a6">Error</a>();
00927 }
00928
00929 error = (ierror) ? ierror : error;
00930 }
</pre></div> </td>
</tr>
</table>
<a name="a35" doxytag="VerseKey::Index"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> long VerseKey::Index </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">long </td>
<td class="mdname1" valign="top" nowrap> <em>iindex</em> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap><code> [virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Sets index based upon current verse.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>iindex</em> </td><td>
value to set index to </td></tr>
</table>
</dl><dl compact><dt><b>
Returns: </b><dd>
offset </dl>
<p>
Reimplemented from <a class="el" href="class_s_w_key.html">SWKey</a>.
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l01316">1316</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
References <a class="el" href="versekey_8cpp-source.html#l01402">_compare</a>(), <a class="el" href="versekey_8cpp-source.html#l01249">findindex</a>(), <a class="el" href="versekey_8cpp-source.html#l01271">Index</a>(), <a class="el" href="versekey_8cpp-source.html#l00761">LowerBound</a>(), <a class="el" href="versekey_8h-source.html#l00115">testament</a>, and <a class="el" href="versekey_8cpp-source.html#l00774">UpperBound</a>().
<p>
<div class="fragment"><pre>01317 {
01318 <font class="keywordtype">long</font> offset;
01319
01320 <font class="comment">// This is the dirty stuff --------------------------------------------</font>
01321
01322 <font class="keywordflow">if</font> (!<a class="code" href="class_verse_key.html#o4">testament</a>)
01323 <a class="code" href="class_verse_key.html#o4">testament</a> = 1;
01324
01325 <font class="keywordflow">if</font> (iindex < 1) { <font class="comment">// if (-) or module heading</font>
01326 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#o4">testament</a> < 2) {
01327 <font class="keywordflow">if</font> (iindex < 0) {
01328 <a class="code" href="class_verse_key.html#o4">testament</a> = 0; <font class="comment">// previously we changed 0 -> 1</font>
01329 error = KEYERR_OUTOFBOUNDS;
01330 }
01331 <font class="keywordflow">else</font> <a class="code" href="class_verse_key.html#o4">testament</a> = 0; <font class="comment">// we want module heading</font>
01332 }
01333 <font class="keywordflow">else</font> {
01334 <a class="code" href="class_verse_key.html#o4">testament</a>--;
01335 iindex = (offsets[<a class="code" href="class_verse_key.html#o4">testament</a>-1][1][offsize[<a class="code" href="class_verse_key.html#o4">testament</a>-1][1]-1] + books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][BMAX[<a class="code" href="class_verse_key.html#o4">testament</a>-1]-1].versemax[books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][BMAX[<a class="code" href="class_verse_key.html#o4">testament</a>-1]-1].chapmax-1]) + iindex; <font class="comment">// What a doozy! ((offset of last chapter + number of verses in the last chapter) + iindex)</font>
01336 }
01337 }
01338
01339 <font class="comment">// --------------------------------------------------------------------</font>
01340
01341
01342 <font class="keywordflow">if</font> (testament) {
01343 <font class="keywordflow">if</font> ((!error) && (iindex)) {
01344 offset = <a class="code" href="class_verse_key.html#c6">findindex</a>(offsets[<a class="code" href="class_verse_key.html#o4">testament</a>-1][1], offsize[<a class="code" href="class_verse_key.html#o4">testament</a>-1][1], iindex);
01345 verse = iindex - offsets[<a class="code" href="class_verse_key.html#o4">testament</a>-1][1][offset];
01346 book = <a class="code" href="class_verse_key.html#c6">findindex</a>(offsets[<a class="code" href="class_verse_key.html#o4">testament</a>-1][0], offsize[<a class="code" href="class_verse_key.html#o4">testament</a>-1][0], offset);
01347 chapter = offset - offsets[<a class="code" href="class_verse_key.html#o4">testament</a>-1][0][VerseKey::book];
01348 verse = (chapter) ? verse : 0; <font class="comment">// funny check. if we are index=1 (testmt header) all gets set to 0 exept verse. Don't know why. Fix if you figure out. Think its in the offsets table.</font>
01349 <font class="keywordflow">if</font> (verse) { <font class="comment">// only check if -1 won't give negative</font>
01350 <font class="keywordflow">if</font> (verse > books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].versemax[chapter-1]) {
01351 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#o4">testament</a> > 1) {
01352 verse = books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].versemax[chapter-1];
01353 error = KEYERR_OUTOFBOUNDS;
01354 }
01355 <font class="keywordflow">else</font> {
01356 <a class="code" href="class_verse_key.html#o4">testament</a>++;
01357 <a class="code" href="class_verse_key.html#a34">Index</a>(verse - books[<a class="code" href="class_verse_key.html#o4">testament</a>-2][book-1].versemax[chapter-1]);
01358 }
01359 }
01360 }
01361 }
01362 }
01363 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#a39">_compare</a>(<a class="code" href="class_verse_key.html#a8">UpperBound</a>()) > 0) {
01364 *<font class="keyword">this</font> = <a class="code" href="class_verse_key.html#a8">UpperBound</a>();
01365 error = KEYERR_OUTOFBOUNDS;
01366 }
01367 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#a39">_compare</a>(<a class="code" href="class_verse_key.html#a7">LowerBound</a>()) < 0) {
01368 *<font class="keyword">this</font> = <a class="code" href="class_verse_key.html#a7">LowerBound</a>();
01369 error = KEYERR_OUTOFBOUNDS;
01370 }
01371 <font class="keywordflow">return</font> <a class="code" href="class_verse_key.html#a34">Index</a>();
01372 }
</pre></div> </td>
</tr>
</table>
<a name="a34" doxytag="VerseKey::Index"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> long VerseKey::Index </td>
<td class="md" valign="top">( </td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap> const<code> [virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Gets index based upon current verse.
<p>
<dl compact><dt><b>
Returns: </b><dd>
offset </dl>
<p>
Reimplemented from <a class="el" href="class_s_w_key.html#a17">SWKey</a>.
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l01271">1271</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
References <a class="el" href="versekey_8h-source.html#l00115">testament</a>.
<p>
Referenced by <a class="el" href="versekey_8cpp-source.html#l00941">decrement</a>(), <a class="el" href="versekey_8cpp-source.html#l00921">increment</a>(), and <a class="el" href="versekey_8cpp-source.html#l01316">Index</a>().
<p>
<div class="fragment"><pre>01272 {
01273 <font class="keywordtype">long</font> offset;
01274
01275 <font class="keywordflow">if</font> (!<a class="code" href="class_verse_key.html#o4">testament</a>) { <font class="comment">// if we want module heading</font>
01276 offset = 0;
01277 verse = 0;
01278 }
01279 <font class="keywordflow">else</font> {
01280 <font class="keywordflow">if</font> (!book)
01281 chapter = 0;
01282 <font class="keywordflow">if</font> (!chapter)
01283 verse = 0;
01284
01285 offset = offsets[<a class="code" href="class_verse_key.html#o4">testament</a>-1][0][book];
01286 offset = offsets[<a class="code" href="class_verse_key.html#o4">testament</a>-1][1][(int)offset + chapter];
01287 <font class="keywordflow">if</font> (!(offset|verse)) <font class="comment">// if we have a testament but nothing else.</font>
01288 offset = 1;
01289 }
01290 <font class="keywordflow">return</font> (offset + verse);
01291 }
</pre></div> </td>
</tr>
</table>
<a name="a7" doxytag="VerseKey::LowerBound"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> VerseKey & VerseKey::LowerBound </td>
<td class="md" valign="top">( </td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap> const</td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
gets the lower boundary of this VerseKey.
<p>
<dl compact><dt><b>
Returns: </b><dd>
the lower boundary of this VerseKey </dl>
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l00761">761</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
Referenced by <a class="el" href="versekey_8cpp-source.html#l01316">Index</a>(), <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>(), <a class="el" href="versekey_8cpp-source.html#l00884">setPosition</a>(), and <a class="el" href="versekey_8cpp-source.html#l00111">VerseKey</a>().
<p>
<div class="fragment"><pre>00762 {
00763 <font class="keywordflow">if</font> (!lowerBound)
00764 initBounds();
00765
00766 <font class="keywordflow">return</font> (*lowerBound);
00767 }
</pre></div> </td>
</tr>
</table>
<a name="a5" doxytag="VerseKey::LowerBound"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> VerseKey & VerseKey::LowerBound </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">const char * </td>
<td class="mdname1" valign="top" nowrap> <em>lb</em> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
sets the lower boundary for this VerseKey and returns the new boundary.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>lb</em> </td><td>
the new lower boundary for this VerseKey </td></tr>
</table>
</dl><dl compact><dt><b>
Returns: </b><dd>
the lower boundary the key was set to </dl>
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l00705">705</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
References <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>().
<p>
<div class="fragment"><pre>00706 {
00707 <font class="keywordflow">if</font> (!lowerBound)
00708 initBounds();
00709
00710 (*lowerBound) = lb;
00711 lowerBound-><a class="code" href="class_verse_key.html#a30">Normalize</a>();
00712
00713 <font class="keywordflow">return</font> (*lowerBound);
00714 }
</pre></div> </td>
</tr>
</table>
<a name="a30" doxytag="VerseKey::Normalize"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> void VerseKey::Normalize </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">char </td>
<td class="mdname1" valign="top" nowrap> <em>autocheck</em> = 0 </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap><code> [virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
checks limits and normalizes if necessary (e.g.
<p>
Matthew 29:47 = Mark 2:2). If last verse is exceeded, key is set to last Book CH:VS
<p>
<dl compact><dt><b>
Returns: </b><dd>
*this </dl>
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l00963">963</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
References <a class="el" href="versekey_8cpp-source.html#l01402">_compare</a>(), <a class="el" href="versekey_8h-source.html#l00121">autonorm</a>, <a class="el" href="versekey_8h-source.html#l00124">headings</a>, <a class="el" href="versekey_8cpp-source.html#l00761">LowerBound</a>(), <a class="el" href="versekey_8h-source.html#l00115">testament</a>, and <a class="el" href="versekey_8cpp-source.html#l00774">UpperBound</a>().
<p>
Referenced by <a class="el" href="versekey_8cpp-source.html#l01203">AutoNormalize</a>(), <a class="el" href="versekey_8cpp-source.html#l01137">Book</a>(), <a class="el" href="versekey_8cpp-source.html#l01159">Chapter</a>(), <a class="el" href="versekey_8cpp-source.html#l01226">Headings</a>(), <a class="el" href="versekey_8cpp-source.html#l00705">LowerBound</a>(), <a class="el" href="versekey_8cpp-source.html#l00231">parse</a>(), <a class="el" href="versekey_8cpp-source.html#l00884">setPosition</a>(), <a class="el" href="versekey_8cpp-source.html#l01115">Testament</a>(), <a class="el" href="versekey_8cpp-source.html#l00721">UpperBound</a>(), and <a class="el" href="versekey_8cpp-source.html#l01181">Verse</a>().
<p>
<div class="fragment"><pre>00964 {
00965 error = 0;
00966
00967 <font class="keywordflow">if</font> ((autocheck) && (!<a class="code" href="class_verse_key.html#o8">autonorm</a>)) <font class="comment">// only normalize if we were explicitely called or if autonorm is turned on</font>
00968 <font class="keywordflow">return</font>;
00969
00970 <font class="keywordflow">if</font> ((headings) && (!verse)) <font class="comment">// this is cheeze and temporary until deciding what actions should be taken.</font>
00971 <font class="keywordflow">return</font>; <font class="comment">// so headings should only be turned on when positioning with Index() or incrementors</font>
00972
00973 <font class="keywordflow">while</font> ((testament < 3) && (testament > 0)) {
00974
00975 <font class="keywordflow">if</font> (book > BMAX[<a class="code" href="class_verse_key.html#o4">testament</a>-1]) {
00976 book -= BMAX[<a class="code" href="class_verse_key.html#o4">testament</a>-1];
00977 <a class="code" href="class_verse_key.html#o4">testament</a>++;
00978 <font class="keywordflow">continue</font>;
00979 }
00980
00981 <font class="keywordflow">if</font> (book < 1) {
00982 <font class="keywordflow">if</font> (--<a class="code" href="class_verse_key.html#o4">testament</a> > 0) {
00983 book += BMAX[<a class="code" href="class_verse_key.html#o4">testament</a>-1];
00984 }
00985 <font class="keywordflow">continue</font>;
00986 }
00987
00988 <font class="keywordflow">if</font> (chapter > books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].chapmax) {
00989 chapter -= books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].chapmax;
00990 book++;
00991 <font class="keywordflow">continue</font>;
00992 }
00993
00994 <font class="keywordflow">if</font> (chapter < 1) {
00995 <font class="keywordflow">if</font> (--book > 0) {
00996 chapter += books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].chapmax;
00997 }
00998 <font class="keywordflow">else</font> {
00999 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#o4">testament</a> > 1) {
01000 chapter += books[0][BMAX[0]-1].chapmax;
01001 }
01002 }
01003 <font class="keywordflow">continue</font>;
01004 }
01005
01006 <font class="keywordflow">if</font> (verse > books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].versemax[chapter-1]) { <font class="comment">// -1 because e.g chapter 1 of Matthew is books[1][0].versemax[0]</font>
01007 verse -= books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].versemax[chapter++ - 1];
01008 <font class="keywordflow">continue</font>;
01009 }
01010
01011 <font class="keywordflow">if</font> (verse < 1) {
01012 <font class="keywordflow">if</font> (--chapter > 0) {
01013 verse += books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].versemax[chapter-1];
01014 }
01015 <font class="keywordflow">else</font> {
01016 <font class="keywordflow">if</font> (book > 1) {
01017 verse += books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-2].versemax[books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-2].chapmax-1];
01018 }
01019 <font class="keywordflow">else</font> {
01020 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#o4">testament</a> > 1) {
01021 verse += books[0][BMAX[0]-1].versemax[books[0][BMAX[0]-1].chapmax-1];
01022 }
01023 }
01024 }
01025 <font class="keywordflow">continue</font>;
01026 }
01027
01028 <font class="keywordflow">break</font>; <font class="comment">// If we've made it this far (all failure checks continue) we're ok</font>
01029 }
01030
01031 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#o4">testament</a> > 2) {
01032 <a class="code" href="class_verse_key.html#o4">testament</a> = 2;
01033 book = BMAX[<a class="code" href="class_verse_key.html#o4">testament</a>-1];
01034 chapter = books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].chapmax;
01035 verse = books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].versemax[chapter-1];
01036 error = KEYERR_OUTOFBOUNDS;
01037 }
01038
01039 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#o4">testament</a> < 1) {
01040 error = ((!<a class="code" href="class_verse_key.html#o9">headings</a>) || (<a class="code" href="class_verse_key.html#o4">testament</a> < 0) || (book < 0)) ? KEYERR_OUTOFBOUNDS : 0;
01041 <a class="code" href="class_verse_key.html#o4">testament</a> = ((headings) ? 0 : 1);
01042 book = ((headings) ? 0 : 1);
01043 chapter = ((headings) ? 0 : 1);
01044 verse = ((headings) ? 0 : 1);
01045 }
01046 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#a39">_compare</a>(<a class="code" href="class_verse_key.html#a8">UpperBound</a>()) > 0) {
01047 *<font class="keyword">this</font> = <a class="code" href="class_verse_key.html#a8">UpperBound</a>();
01048 error = KEYERR_OUTOFBOUNDS;
01049 }
01050 <font class="keywordflow">if</font> (<a class="code" href="class_verse_key.html#a39">_compare</a>(<a class="code" href="class_verse_key.html#a7">LowerBound</a>()) < 0) {
01051 *<font class="keyword">this</font> = <a class="code" href="class_verse_key.html#a7">LowerBound</a>();
01052 error = KEYERR_OUTOFBOUNDS;
01053 }
01054 }
</pre></div> </td>
</tr>
</table>
<a name="a16" doxytag="VerseKey::setPosition"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> void VerseKey::setPosition </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">SW_POSITION </td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap><code> [virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Positions this key.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>p</em> </td><td>
position </td></tr>
</table>
</dl><dl compact><dt><b>
Returns: </b><dd>
*this </dl>
<p>
Reimplemented from <a class="el" href="class_s_w_key.html">SWKey</a>.
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l00884">884</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
References <a class="el" href="versekey_8cpp-source.html#l01075">Book</a>(), <a class="el" href="versekey_8cpp-source.html#l01087">Chapter</a>(), <a class="el" href="swkey_8cpp-source.html#l00100">SWKey::Error</a>(), <a class="el" href="versekey_8cpp-source.html#l00761">LowerBound</a>(), <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>(), <a class="el" href="versekey_8cpp-source.html#l01063">Testament</a>(), <a class="el" href="versekey_8h-source.html#l00115">testament</a>, <a class="el" href="versekey_8cpp-source.html#l00774">UpperBound</a>(), and <a class="el" href="versekey_8cpp-source.html#l01099">Verse</a>().
<p>
Referenced by <a class="el" href="versekey_8cpp-source.html#l00111">VerseKey</a>().
<p>
<div class="fragment"><pre>00884 {
00885 <font class="keywordflow">switch</font> (p) {
00886 <font class="keywordflow">case</font> POS_TOP:
00887 <a class="code" href="class_verse_key.html#o4">testament</a> = <a class="code" href="class_verse_key.html#a7">LowerBound</a>().<a class="code" href="class_verse_key.html#a22">Testament</a>();
00888 book = <a class="code" href="class_verse_key.html#a7">LowerBound</a>().<a class="code" href="class_verse_key.html#a23">Book</a>();
00889 chapter = <a class="code" href="class_verse_key.html#a7">LowerBound</a>().<a class="code" href="class_verse_key.html#a24">Chapter</a>();
00890 verse = <a class="code" href="class_verse_key.html#a7">LowerBound</a>().<a class="code" href="class_verse_key.html#a25">Verse</a>();
00891 <font class="keywordflow">break</font>;
00892 <font class="keywordflow">case</font> POS_BOTTOM:
00893 <a class="code" href="class_verse_key.html#o4">testament</a> = <a class="code" href="class_verse_key.html#a8">UpperBound</a>().<a class="code" href="class_verse_key.html#a22">Testament</a>();
00894 book = <a class="code" href="class_verse_key.html#a8">UpperBound</a>().<a class="code" href="class_verse_key.html#a23">Book</a>();
00895 chapter = <a class="code" href="class_verse_key.html#a8">UpperBound</a>().<a class="code" href="class_verse_key.html#a24">Chapter</a>();
00896 verse = <a class="code" href="class_verse_key.html#a8">UpperBound</a>().<a class="code" href="class_verse_key.html#a25">Verse</a>();
00897 <font class="keywordflow">break</font>;
00898 <font class="keywordflow">case</font> POS_MAXVERSE:
00899 <a class="code" href="class_verse_key.html#a30">Normalize</a>();
00900 verse = books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].versemax[chapter-1];
00901 <font class="keywordflow">break</font>;
00902 <font class="keywordflow">case</font> POS_MAXCHAPTER:
00903 verse = 1;
00904 <a class="code" href="class_verse_key.html#a30">Normalize</a>();
00905 chapter = books[<a class="code" href="class_verse_key.html#o4">testament</a>-1][book-1].chapmax;
00906 <font class="keywordflow">break</font>;
00907 }
00908 <a class="code" href="class_verse_key.html#a30">Normalize</a>(1);
00909 <a class="code" href="class_s_w_key.html#a6">Error</a>(); <font class="comment">// clear error from normalize</font>
00910 }
</pre></div> </td>
</tr>
</table>
<a name="a13" doxytag="VerseKey::setText"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> virtual void VerseKey::setText </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">const char * </td>
<td class="mdname1" valign="top" nowrap> <em>ikey</em> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap><code> [inline, virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Equates this <a class="el" href="class_s_w_key.html">SWKey</a> to a character string.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>ikey</em> </td><td>
string to set this key to </td></tr>
</table>
</dl>
<p>
Reimplemented from <a class="el" href="class_s_w_key.html#a7">SWKey</a>.
<p>
Definition at line <a class="el" href="versekey_8h-source.html#l00236">236</a> of file <a class="el" href="versekey_8h-source.html">versekey.h</a>.
<p>
References <a class="el" href="swkey_8cpp-source.html#l00115">SWKey::setText</a>().
<p>
<div class="fragment"><pre>00236 { <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> (); }
</pre></div> </td>
</tr>
</table>
<a name="a26" doxytag="VerseKey::Testament"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> char VerseKey::Testament </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">char </td>
<td class="mdname1" valign="top" nowrap> <em>itestament</em> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap><code> [virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Sets/gets testament.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>itestament</em> </td><td>
value which to set testament [MAXPOS(char)] - only get </td></tr>
</table>
</dl><dl compact><dt><b>
Returns: </b><dd>
if unchanged -> value of testament, if changed -> previous value of testament </dl>
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l01115">1115</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
References <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>(), and <a class="el" href="versekey_8h-source.html#l00115">testament</a>.
<p>
<div class="fragment"><pre>01116 {
01117 <font class="keywordtype">char</font> retval = <a class="code" href="class_verse_key.html#o4">testament</a>;
01118
01119 <font class="keywordflow">if</font> (itestament != MAXPOS(<font class="keywordtype">char</font>)) {
01120 <a class="code" href="class_verse_key.html#o4">testament</a> = itestament;
01121 <a class="code" href="class_verse_key.html#a30">Normalize</a>(1);
01122 }
01123 <font class="keywordflow">return</font> retval;
01124 }
</pre></div> </td>
</tr>
</table>
<a name="a22" doxytag="VerseKey::Testament"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> char VerseKey::Testament </td>
<td class="md" valign="top">( </td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap> const<code> [virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Gets testament.
<p>
<dl compact><dt><b>
Returns: </b><dd>
value of testament </dl>
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l01063">1063</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
References <a class="el" href="versekey_8h-source.html#l00115">testament</a>.
<p>
Referenced by <a class="el" href="versekey_8cpp-source.html#l01402">_compare</a>(), and <a class="el" href="versekey_8cpp-source.html#l00884">setPosition</a>().
<p>
<div class="fragment"><pre>01064 {
01065 <font class="keywordflow">return</font> <a class="code" href="class_verse_key.html#o4">testament</a>;
01066 }
</pre></div> </td>
</tr>
</table>
<a name="a8" doxytag="VerseKey::UpperBound"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> VerseKey & VerseKey::UpperBound </td>
<td class="md" valign="top">( </td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap> const</td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
gets the upper boundary of this VerseKey.
<p>
<dl compact><dt><b>
Returns: </b><dd>
the upper boundary of this VerseKey </dl>
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l00774">774</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
Referenced by <a class="el" href="versekey_8cpp-source.html#l01316">Index</a>(), <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>(), <a class="el" href="versekey_8cpp-source.html#l00884">setPosition</a>(), and <a class="el" href="versekey_8cpp-source.html#l00111">VerseKey</a>().
<p>
<div class="fragment"><pre>00775 {
00776 <font class="keywordflow">if</font> (!upperBound)
00777 initBounds();
00778
00779 <font class="keywordflow">return</font> (*upperBound);
00780 }
</pre></div> </td>
</tr>
</table>
<a name="a6" doxytag="VerseKey::UpperBound"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> VerseKey & VerseKey::UpperBound </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">const char * </td>
<td class="mdname1" valign="top" nowrap> <em>ub</em> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
sets the upper boundary for this VerseKey and returns the new boundary.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>lb</em> </td><td>
the new upper boundary for this VerseKey </td></tr>
</table>
</dl><dl compact><dt><b>
Returns: </b><dd>
the upper boundary the key was set to </dl>
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l00721">721</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
References <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>().
<p>
<div class="fragment"><pre>00722 {
00723 <font class="keywordflow">if</font> (!upperBound)
00724 initBounds();
00725
00726 <font class="comment">// need to set upperbound parsing to resolve to max verse/chap if not specified</font>
00727 (*upperBound) = ub;
00728 <font class="keywordflow">if</font> (*upperBound < *lowerBound)
00729 *upperBound = *lowerBound;
00730 upperBound-><a class="code" href="class_verse_key.html#a30">Normalize</a>();
00731
00732 <font class="comment">// until we have a proper method to resolve max verse/chap use this kludge</font>
00733 <font class="keywordtype">int</font> len = strlen(ub);
00734 <font class="keywordtype">bool</font> alpha = <font class="keyword">false</font>;
00735 <font class="keywordtype">bool</font> versespec = <font class="keyword">false</font>;
00736 <font class="keywordtype">bool</font> chapspec = <font class="keyword">false</font>;
00737 <font class="keywordflow">for</font> (<font class="keywordtype">int</font> i = 0; i < len; i++) {
00738 <font class="keywordflow">if</font> (isalpha(ub[i]))
00739 alpha = <font class="keyword">true</font>;
00740 <font class="keywordflow">if</font> (ub[i] == <font class="charliteral">':'</font>) <font class="comment">// if we have a : we assume verse spec</font>
00741 versespec = <font class="keyword">true</font>;
00742 <font class="keywordflow">if</font> ((isdigit(ub[i])) && (alpha)) <font class="comment">// if digit after alpha assume chap spec</font>
00743 chapspec = <font class="keyword">true</font>;
00744 }
00745 <font class="keywordflow">if</font> (!chapspec)
00746 *upperBound = MAXCHAPTER;
00747 <font class="keywordflow">if</font> (!versespec)
00748 *upperBound = MAXVERSE;
00749
00750
00751 <font class="comment">// -- end kludge</font>
00752
00753 <font class="keywordflow">return</font> (*upperBound);
00754 }
</pre></div> </td>
</tr>
</table>
<a name="a29" doxytag="VerseKey::Verse"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> int VerseKey::Verse </td>
<td class="md" valign="top">( </td>
<td class="md" nowrap valign="top">int </td>
<td class="mdname1" valign="top" nowrap> <em>iverse</em> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap><code> [virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Sets/gets verse.
<p>
<dl compact><dt><b>
Parameters: </b><dd>
<table border=0 cellspacing=2 cellpadding=0>
<tr><td valign=top><em>iverse</em> </td><td>
value which to set verse [MAXPOS(int)] - only get </td></tr>
</table>
</dl><dl compact><dt><b>
Returns: </b><dd>
if unchanged -> value of verse, if changed -> previous value of verse </dl>
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l01181">1181</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
References <a class="el" href="versekey_8cpp-source.html#l00963">Normalize</a>().
<p>
<div class="fragment"><pre>01182 {
01183 <font class="keywordtype">int</font> retval = verse;
01184
01185 verse = iverse;
01186 <a class="code" href="class_verse_key.html#a30">Normalize</a>(1);
01187
01188 <font class="keywordflow">return</font> retval;
01189 }
</pre></div> </td>
</tr>
</table>
<a name="a25" doxytag="VerseKey::Verse"></a><p>
<table width="100%" cellpadding="2" cellspacing="0" border="0">
<tr>
<td class="md">
<table cellpadding="0" cellspacing="0" border="0">
<tr>
<td class="md" nowrap valign="top"> int VerseKey::Verse </td>
<td class="md" valign="top">( </td>
<td class="mdname1" valign="top" nowrap> </td>
<td class="md" valign="top">) </td>
<td class="md" nowrap> const<code> [virtual]</code></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellspacing=5 cellpadding=0 border=0>
<tr>
<td>
</td>
<td>
<p>
Gets verse.
<p>
<dl compact><dt><b>
Returns: </b><dd>
value of verse </dl>
<p>
Definition at line <a class="el" href="versekey_8cpp-source.html#l01099">1099</a> of file <a class="el" href="versekey_8cpp-source.html">versekey.cpp</a>.
<p>
Referenced by <a class="el" href="versekey_8cpp-source.html#l01402">_compare</a>(), <a class="el" href="versekey_8cpp-source.html#l01159">Chapter</a>(), and <a class="el" href="versekey_8cpp-source.html#l00884">setPosition</a>().
<p>
<div class="fragment"><pre>01100 {
01101 <font class="keywordflow">return</font> verse;
01102 }
</pre></div> </td>
</tr>
</table>
<hr>The documentation for this class was generated from the following files:<ul>
<li><a class="el" href="versekey_8h-source.html">versekey.h</a><li><a class="el" href="versekey_8cpp-source.html">versekey.cpp</a></ul>
<hr><address align="right"><small>Generated on Thu Jun 20 22:13:05 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>