Hi. Again a SWORD API question. I'm trying to optimise memory usage and speed issues. At the moment I believe the API or better SWModule SWKey usage in MacSword is not as good as it could be.
Now while improving that I came across one or two questions. First the following code (all code is in Objective-C syntax but is almost an equivalent to the C++ API): --------------- - (void)testLoopWithModulePosWithDiverseReference { SwordListKey *lk = [SwordListKey listKeyWithRef:@"gen 1:1;4:5-8" v11n:[mod versification]]; [lk setPersist:YES]; [mod setKey:lk]; NSString *ref = nil; NSString *rendered = nil; while(![mod error]) { ref = [lk keyText]; rendered = [mod renderedText]; NSLog(@"%@:%@", ref, rendered); [mod incKeyPosition]; } } --------------- This code works and is pretty fast. The output are only verses as in the reference. That's how it should be. The module only keeps a reference to the key. This example: --------------- - (void)testLoopWithModulePosNoPersistWithDiverseReference { SwordListKey *lk = [SwordListKey listKeyWithRef:@"gen 1:1;4:5-8" v11n:[mod versification]]; [lk setPosition:BOTTOM]; SwordVerseKey *bot = [SwordVerseKey verseKeyWithRef:[lk keyText] v11n:[mod versification]]; [lk setPosition:TOP]; [lk setPersist:NO]; [mod setKey:lk]; NSString *ref = nil; NSString *rendered = nil; while(![mod error] && ([(SwordVerseKey *)[mod getKey] index] <= [bot index])) { ref = [[mod getKey] keyText]; rendered = [mod renderedText]; NSLog(@"%@:%@", ref, rendered); [mod incKeyPosition]; } } --------------- This version however renders all verses from gen 1:1 to gen 4:8. The only difference is that the module keeps it's own copy of the key. The boundary check "![mod error]" doesn't work here so I added the index check mainly because I didn't know otherwise. How does this loop work with a none persistent key? Thanks, Manfred _______________________________________________ sword-devel mailing list: sword-devel@crosswire.org http://www.crosswire.org/mailman/listinfo/sword-devel Instructions to unsubscribe/change your settings at above page