[sword-devel] linking / testsuite
Troy A. Griffitts
scribe at crosswire.org
Sun Apr 26 19:57:03 MST 2009
Top-posting due to lateness... :)
DM,
Nice find! Glad you tracked it down. Count() is specific to only
ListKey and provides the number of subkey elements contained. This has
been optimized now and will only be > 1 if there is a non-contiguous
range, e.g. 'jn.1.1-6,8-10' (Count() == 2 // two VerseKey subkeys with
ranges set appropriately)
Can you use the following?
if (verseKeys++ == verseKeys) { /* then I have a single key */ }
Hope this can work.
-Troy.
DM Smith wrote:
> I found the problem. SWORD reports the count of verses in a VerseList
> differently. A range now counts as one. It used to count as many verses
> as was in it.
>
> Here is a demonstration of the problem that I quickly hacked together.
> (Troy, tell me which testcase file to put it in and I'll add it.) It
> should say (and used to say) that
> "There are 5 verses that are in the range"
> #include <iostream>
>
> #include <swbuf.h>
> #include <listkey.h>
> #include <versekey.h>
>
> #ifndef NO_SWORD_NAMESPACE
> using namespace sword;
> #endif
>
> using namespace std;
>
> int main(int argc, char **argv) {
> VerseKey currentVerse;
> SWBuf keyVal = "Matt.1.1-Matt.1.5";
> ListKey verseKeys = currentVerse.ParseVerseList(keyVal,
> "Gen.1.1", true);
> int memberKeyCount = verseKeys.Count();
> if (memberKeyCount) {
> cout << "There are " << memberKeyCount << " verses that
> are in the range: " << keyVal << endl;
> for (verseKeys = TOP; !verseKeys.Error(); verseKeys++)
> {
> cout << verseKeys << endl;
> }
> }
> else {
> cout << "Error: Invalid reference/annotateRef: " <<
> keyVal << endl;
> }
> }
>
>>
>>
>> I'll look into the testsuite. FYI, a sample xml is:
>>
>> <?xml version="1.0" encoding="UTF-8"?>
>> <osis
>> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>> xmlns="http://www.bibletechnologies.net/2003/OSIS/namespace"
>> xmlns:osis="http://www.bibletechnologies.net/2003/OSIS/namespace"
>>
>> xsi:schemaLocation="http://www.bibletechnologies.net/2003/OSIS/namespace
>> http://www.bibletechnologies.net/osisCore.2.1.1.xsd">
>> <osisText osisIDWork="Luther" osisRefWork="commentary"
>> xml:lang="en" canonical="false">
>> <header>
>> header.
>> </header>
>> <div type="bookGroup">
>> <title>New Testament</title>
>> <div type="book" osisID="Matt" canonical="false">
>> <title type="main" short="Matthew">Matthew</title>
>> <div type="section" annotateType="commentary"
>> annotateRef="Matt.1.1">
>> <p>
>> Blah blah...
>> This is a test!
>> </p>
>> </div>
>> <div type="section" annotateType="commentary"
>> annotateRef="Matt.22.1-Matt.22.9">
>> <title level="2">Sermon; Matthew 21:1-9</title>
>> <p>
>> This fails
>> </p>
>> </div>
>> </div>
>> </div>
>> </osisText>
>> </osis>
>>
>>
>> _______________________________________________
>> sword-devel mailing list: sword-devel at crosswire.org
>> <mailto:sword-devel at crosswire.org>
>> http://www.crosswire.org/mailman/listinfo/sword-devel
>> Instructions to unsubscribe/change your settings at above page
>
>
> ------------------------------------------------------------------------
>
> _______________________________________________
> sword-devel mailing list: sword-devel at crosswire.org
> http://www.crosswire.org/mailman/listinfo/sword-devel
> Instructions to unsubscribe/change your settings at above page
More information about the sword-devel
mailing list