void RawCom4::increment(int steps) { long start; unsigned long size; VerseKey *tmpkey = &getVerseKey(); findOffset(tmpkey->getTestament(), tmpkey->getTestamentIndex(), &start, &size); SWKey lastgood = *tmpkey; while (steps) { long laststart = start; unsigned long lastsize = size; SWKey lasttry = *tmpkey; (steps > 0) ? ++(*key) : --(*key); tmpkey = &getVerseKey(); if ((error = key->popError())) { *key = lastgood; break; } long index = tmpkey->getTestamentIndex(); findOffset(tmpkey->getTestament(), index, &start, &size); if ( (((laststart != start) || (lastsize != size)) // we're a different entry // && (start > 0) && (size)) // and we actually have a size ||(!skipConsecutiveLinks)) { // or we don't want to skip consecutive links steps += (steps < 0) ? 1 : -1; lastgood = *tmpkey; } } error = (error) ? KEYERR_OUTOFBOUNDS : 0; }
bool RawCom4::hasEntry(const SWKey *k) const { long start; unsigned long size; VerseKey *vk = &getVerseKey(k); findOffset(vk->getTestament(), vk->getTestamentIndex(), &start, &size); return size; }
void RawCom::linkEntry(const SWKey *inkey) { VerseKey *destkey = &getVerseKey(); const VerseKey *srckey = &getVerseKey(inkey); doLinkEntry(destkey->getTestament(), destkey->getTestamentIndex(), srckey->getTestamentIndex()); if (inkey != srckey) // free our key if we created a VerseKey delete srckey; }
SWBuf &RawCom4::getRawEntryBuf() const { long start = 0; unsigned long size = 0; VerseKey *key = &getVerseKey(); findOffset(key->getTestament(), key->getTestamentIndex(), &start, &size); entrySize = size; // support getEntrySize call entryBuf = ""; readText(key->getTestament(), start, size, entryBuf); rawFilter(entryBuf, 0); // hack, decipher rawFilter(entryBuf, key); // if (!isUnicode()) prepText(entryBuf); return entryBuf; }
SWBuf &HREFCom::getRawEntryBuf() const { long start; unsigned short size; VerseKey *key = 0; key = &getVerseKey(); findOffset(key->getTestament(), key->getTestamentIndex(), &start, &size); entrySize = size; // support getEntrySize call SWBuf tmpbuf; readText(key->getTestament(), start, size, tmpbuf); entryBuf = prefix; entryBuf += tmpbuf.c_str(); prepText(entryBuf); if (key != this->key) delete key; return entryBuf; }
int main(int argc, char **argv) { int loop; int max; VerseKey yo("Gen.1.1", "Gen.1.2"); std::cout << yo.getRangeText(); if (argc > 1) LocaleMgr::getSystemLocaleMgr()->setDefaultLocaleName(argv[1]); VerseKey bla; long index; if (argc < 2) bla = "James 1:19"; else bla = argv[2]; std::cout << "\n Headings: " << (bool)bla.isIntros() << "\n"; std::cout << " (.Index(Index()+1))\n"; max = (argc < 4) ? 10 : atoi(argv[3]); for (loop = 0; loop < max; loop++) { index = bla.getIndex(); std::cout << (const char *)bla << "(" << index << ")"; bla.setIndex(index+1); std::cout << "-> " << (const char *)bla << "\n"; } std::cout << "-----------------\n"; std::cout << "\n (.Index(Index()-1))\n"; if (argc < 2) bla = "James 1:19"; else bla = argv[2]; for (loop = max; loop; loop--) { index = bla.getIndex(); std::cout << (const char *)bla << "(" << index << ")"; bla.setIndex(index-1); std::cout << "-> " << (const char *)bla << "\n"; } std::cout << "-----------------\n"; bla.setIntros(true); std::cout << "\n Headings: " << (bool)bla.isIntros() << "\n"; std::cout << " key++\n"; if (argc < 2) bla = "Matthew 1:5"; else bla = argv[2]; for (loop = 0; loop < max && !bla.popError(); loop++,bla++) { index = bla.getIndex(); std::cout << (const char *)bla << "(" << index << ")\n"; } std::cout << "-----------------\n"; bla.setIntros(true); std::cout << "\n Headings: " << (bool)bla.isIntros() << "\n"; std::cout << " key--\n"; if (argc < 2) bla = "Matthew 1:5"; else bla = argv[2]; for (loop = max; loop && !bla.popError(); loop--, bla--) { index = bla.getIndex(); std::cout << (const char *)bla << "(" << index << ")\n"; } std::cout << "-----------------\n"; if (argc < 2) bla = "Genesis 1:5"; else bla = argv[2]; for (loop = max; loop; loop--, bla--) { index = bla.getIndex(); std::cout << (const char *)bla << "(" << index << ")\n"; } std::cout << "-----------------\n"; if (argc < 2) bla = "Malachi 4:2"; else bla = argv[2]; for (loop = max; loop; loop--, bla++) { index = bla.getIndex(); std::cout << (const char *)bla << "(" << index << ")\n"; } std::cout << "-----------------\n"; if (argc < 2) bla = "Revelation of John 22:17"; else bla = argv[2]; for (loop = max; loop; loop--, bla++) { index = bla.getIndex(); std::cout << (const char *)bla << "(" << index << ")\n"; } std::cout << "-----------------\n"; std::cout << "-------- Headings ---------\n"; bla.setIntros(true); if (argc < 2) bla = "Matthew 1:5"; else bla = argv[2]; for (loop = max; loop; loop--, bla--) { index = bla.getIndex(); std::cout << (const char *)bla << "(" << index << ")\n"; } std::cout << "-----------------\n"; if (argc < 2) bla = "Genesis 1:5"; else bla = argv[2]; for (loop = max; loop; loop--, bla--) { index = bla.getIndex(); std::cout << (const char *)bla << "(" << index << ")\n"; } std::cout << "-----------------\n"; if (argc < 2) bla = "Malachi 4:2"; else bla = argv[2]; for (loop = max; loop; loop--, bla++) { index = bla.getIndex(); std::cout << (const char *)bla << "(" << index << ")\n"; } std::cout << "-----------------\n"; if (argc < 2) bla = "Revelation of John 22:17"; else bla = argv[2]; for (loop = max; loop; loop--, bla++) { index = bla.getIndex(); std::cout << (const char *)bla << "(" << index << ")\n"; } std::cout << "\n\n"; std::cout << "-------- Error Check ------------\n\n"; bla = "Revelation of John 23:19"; std::cout << "bla = \"Revelation of John 23:19\"\n"; std::cout << "(const char *)bla = " << (const char *)bla << "\n"; std::cout << "bla.popError() = " << (int)bla.popError() << " \n"; std::cout << "bla++ \n"; bla++; std::cout << "bla.popError() = " << (int)bla.popError() << " \n"; bla.setIntros(false); for (bla = BOTTOM; !bla.popError(); bla.setBook(bla.getBook()-1)) std::cout << (const char *)bla << "\n"; bla.setTestament(1); bla = BOTTOM; std::cout << bla.getTestamentIndex() << "\n"; std::cout << bla.getIndex() << "\n"; std::cout << bla << "\n"; bla.setTestament(2); bla = BOTTOM; std::cout << bla.getTestamentIndex() << "\n"; std::cout << bla.getIndex() << "\n"; std::cout << bla << "\n"; return 0; }
void RawCom4::deleteEntry() { VerseKey *key = &getVerseKey(); doSetText(key->getTestament(), key->getTestamentIndex(), ""); }
void RawCom4::linkEntry(const SWKey *inkey) { VerseKey *destkey = &getVerseKey(); const VerseKey *srckey = &getVerseKey(inkey); doLinkEntry(destkey->getTestament(), destkey->getTestamentIndex(), srckey->getTestamentIndex()); }
void RawCom4::setEntry(const char *inbuf, long len) { VerseKey *key = &getVerseKey(); doSetText(key->getTestament(), key->getTestamentIndex(), inbuf, len); }