[sword-devel] linking / testsuite

DM Smith dmsmith at crosswire.org
Sun Apr 26 20:28:32 MST 2009


On Apr 26, 2009, at 11:19 PM, DM Smith wrote:

>
> On Apr 26, 2009, at 10:57 PM, Troy A. Griffitts wrote:
>
>> 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?
>
> Sure. But can you give me a comment that explains what it does? I've  
> been away from c++ too long and it doesn't make sense. I always  
> comment the non-obvious.

Maybe not. I want to know if it has more than 1 key, regardless if it  
has a range or not. And when I'm done testing I need the verseKeys be  
something I can iterate over.

I use:
                 for (verseKeys = TOP; !verseKeys.Error(); verseKeys+ 
+) {
                         ...
                 }
Will that iterate over the whole?

>
>>
>>
>> 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
>>
>>
>> _______________________________________________
>> 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
>
>
> _______________________________________________
> 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