[Pkg-crosswire-devel] Fwd: [sword-svn] r2187 - in trunk: . examples/classes examples/cmdline include src/mgr src/modules src/modules/common src/modules/filters src/modules/genbook/rawgenbook src/modules/texts/ztext

Jonathan Morgan jonmmorgan at gmail.com
Sat Jan 31 02:04:33 GMT 2009


To follow up the discussion, this is the change that has been
partially included in BPBible's patched Sword version to improve speed
of compressed modules, with zverse.h and zverse.cpp patched.  The most
relevant line is:

-       if ( (size > 0) && cacheBuf && ((unsigned)start <
strlen(cacheBuf)) ){ //TODO: optimize this, remove strlen
+       if ((size > 0) && cacheBuf && ((unsigned)start < cacheBufSize)) {

This makes compressed modules more efficient, but doesn't affect
behaviour in any way, and I would certainly prefer it included in any
package of sword.

Annoyingly, the BPBible "patches" zip file has the complete files
rather than just patches against 1.5.11, so I'm not sure whether the
other changes made to zverse.cpp and zverse.h in this commit are
reflected in the BPBible patches.

Jon

---------- Forwarded message ----------
From:  <scribe at www.crosswire.org>
Date: Tue, Jul 22, 2008 at 10:00 PM
Subject: [sword-svn] r2187 - in trunk: . examples/classes
examples/cmdline include src/mgr src/modules src/modules/common
src/modules/filters src/modules/genbook/rawgenbook
src/modules/texts/ztext
To: sword-cvs at crosswire.org


Author: scribe
Date: 2008-07-22 04:00:16 -0700 (Tue, 22 Jul 2008)
New Revision: 2187

Added:
  trunk/examples/cmdline/outplain.cpp
Removed:
  trunk/examples/classes/outplain.cpp
Modified:
  trunk/configure.ac
  trunk/examples/classes/Makefile
  trunk/examples/cmdline/Makefile.am
  trunk/include/osisplain.h
  trunk/include/rawstr.h
  trunk/include/rawstr4.h
  trunk/include/rawverse.h
  trunk/include/rawverse4.h
  trunk/include/swmodule.h
  trunk/include/zstr.h
  trunk/include/zverse.h
  trunk/src/mgr/localemgr.cpp
  trunk/src/modules/common/rawstr.cpp
  trunk/src/modules/common/rawstr4.cpp
  trunk/src/modules/common/rawverse.cpp
  trunk/src/modules/common/rawverse4.cpp
  trunk/src/modules/common/zstr.cpp
  trunk/src/modules/common/zverse.cpp
  trunk/src/modules/filters/osisplain.cpp
  trunk/src/modules/genbook/rawgenbook/rawgenbook.cpp
  trunk/src/modules/swmodule.cpp
  trunk/src/modules/texts/ztext/ztext.cpp
  trunk/usrinst.sh
Log:
Optimizations and bug fixes


Modified: trunk/configure.ac
===================================================================
--- trunk/configure.ac  2008-07-21 11:28:48 UTC (rev 2186)
+++ trunk/configure.ac  2008-07-22 11:00:16 UTC (rev 2187)
@@ -90,8 +90,8 @@
    AM_CXXFLAGS="-O0 -Wall"
  fi
 else
-  AM_CFLAGS="-O2"
-  AM_CXXFLAGS="-O2"
+  AM_CFLAGS="-O3"
+  AM_CXXFLAGS="-O3"
 fi

 # ---------------------------------------------------------------------

Modified: trunk/examples/classes/Makefile
===================================================================
--- trunk/examples/classes/Makefile     2008-07-21 11:28:48 UTC (rev 2186)
+++ trunk/examples/classes/Makefile     2008-07-22 11:00:16 UTC (rev 2187)
@@ -5,6 +5,6 @@
       rm $(TARGETS)

 .cpp:
-       g++ -g `pkg-config --cflags sword` $< -o $@ `pkg-config --libs sword`
+       g++ -O3 `pkg-config --cflags sword` $< -o $@ `pkg-config --libs sword`



Deleted: trunk/examples/classes/outplain.cpp
===================================================================
--- trunk/examples/classes/outplain.cpp 2008-07-21 11:28:48 UTC (rev 2186)
+++ trunk/examples/classes/outplain.cpp 2008-07-22 11:00:16 UTC (rev 2187)
@@ -1,32 +0,0 @@
-/******************************************************************************
- * Class SWMgr manages installed modules for a frontend.
- * SWMgr reads a mods.conf file to discover its information.
- * It then instantiates the correct decendent of SWModule for each
- * module entry in mods.conf
- * The developer may use this class to query what modules are installed
- * and to retrieve an (SWModule *) for any one of these modules
- *
- * SWMgr makes its modules available as an STL Map.
- * The Map definition is typedef'ed as ModMap
- * ModMap consists of: FIRST : SWBuf moduleName
- *                     SECOND: SWModule *module
- *
- */
-
-#include <iostream>
-
-#include <swmgr.h>
-#include <swmodule.h>
-
-using namespace sword;
-using namespace std;
-
-int main(int argc, char **argv) {
-       SWMgr manager;          // create a default manager that looks
in the current directory for mods.conf
-
-       const char *bookName = (argc > 1) ? argv[1] : "WLC";
-       SWModule &book = *manager.getModule(bookName);
-       for (book = TOP; !book.Error(); book++) {
-               cout << book.StripText() << "\n";
-       }
-}

Modified: trunk/examples/cmdline/Makefile.am
===================================================================
--- trunk/examples/cmdline/Makefile.am  2008-07-21 11:28:48 UTC (rev 2186)
+++ trunk/examples/cmdline/Makefile.am  2008-07-22 11:00:16 UTC (rev 2187)
@@ -2,11 +2,12 @@
 INCLUDES = -I $(top_srcdir)/include
 LDADD = $(top_builddir)/lib/libsword.la

-noinst_PROGRAMS = lookup search threaded_search listoptions verserangeparse
+noinst_PROGRAMS = lookup search threaded_search listoptions
verserangeparse outplain

 lookup_SOURCES = lookup.cpp
 search_SOURCES = search.cpp
 listoptions_SOURCES = listoptions.cpp
 verserangeparse_SOURCES = verserangeparse.cpp
 threaded_search_SOURCES = threaded_search.cpp
+outplain_SOURCES = outplain.cpp
 threaded_search_LDADD = $(LDADD) -lpthread

Copied: trunk/examples/cmdline/outplain.cpp (from rev 2180,
trunk/examples/classes/outplain.cpp)
===================================================================
--- trunk/examples/cmdline/outplain.cpp                         (rev 0)
+++ trunk/examples/cmdline/outplain.cpp 2008-07-22 11:00:16 UTC (rev 2187)
@@ -0,0 +1,33 @@
+/******************************************************************************
+ * Class SWMgr manages installed modules for a frontend.
+ * SWMgr reads a mods.conf file to discover its information.
+ * It then instantiates the correct decendent of SWModule for each
+ * module entry in mods.conf
+ * The developer may use this class to query what modules are installed
+ * and to retrieve an (SWModule *) for any one of these modules
+ *
+ * SWMgr makes its modules available as an STL Map.
+ * The Map definition is typedef'ed as ModMap
+ * ModMap consists of: FIRST : SWBuf moduleName
+ *                     SECOND: SWModule *module
+ *
+ */
+
+#include <iostream>
+
+#include <swmgr.h>
+#include <swmodule.h>
+
+using namespace sword;
+using namespace std;
+
+int main(int argc, char **argv) {
+       SWMgr manager;          // create a default manager that looks
in the current directory for mods.conf
+
+       const char *bookName = (argc > 1) ? argv[1] : "WLC";
+       SWModule &book = *manager.getModule(bookName);
+       book.processEntryAttributes(false);
+       for (book = TOP; !book.Error(); book++) {
+               cout << book.getKeyText() << " " << book.StripText() << "\n";
+       }
+}

Modified: trunk/include/osisplain.h
===================================================================
--- trunk/include/osisplain.h   2008-07-21 11:28:48 UTC (rev 2186)
+++ trunk/include/osisplain.h   2008-07-22 11:00:16 UTC (rev 2187)
@@ -31,15 +31,7 @@
 class SWDLLEXPORT OSISPlain : public SWBasicFilter {
 public:
 protected:
-       class MyUserData : public BasicFilterUserData {
-       public:
-               SWBuf w;
-               XMLTag tag;
-               MyUserData(const SWModule *module, const SWKey *key) :
BasicFilterUserData(module, key) {}
-       };
-       virtual BasicFilterUserData *createUserData(const SWModule
*module, const SWKey *key) {
-               return new MyUserData(module, key);
-       }
+       virtual BasicFilterUserData *createUserData(const SWModule
*module, const SWKey *key);
       virtual bool handleToken(SWBuf &buf, const char *token,
BasicFilterUserData *userData);
 public:
       OSISPlain();

Modified: trunk/include/rawstr.h
===================================================================
--- trunk/include/rawstr.h      2008-07-21 11:28:48 UTC (rev 2186)
+++ trunk/include/rawstr.h      2008-07-22 11:00:16 UTC (rev 2187)
@@ -43,7 +43,6 @@
       void doSetText(const char *key, const char *buf, long len = -1);
       void doLinkEntry(const char *destkey, const char *srckey);
 public:
-       static void prepText(SWBuf &buf);
       static char nl;
       RawStr(const char *ipath, int fileMode = -1);
       virtual ~RawStr();

Modified: trunk/include/rawstr4.h
===================================================================
--- trunk/include/rawstr4.h     2008-07-21 11:28:48 UTC (rev 2186)
+++ trunk/include/rawstr4.h     2008-07-22 11:00:16 UTC (rev 2187)
@@ -40,7 +40,6 @@
 protected:
       FileDesc *idxfd;
       FileDesc *datfd;
-       void prepText(SWBuf &buf);
       void doSetText(const char *key, const char *buf, long len = -1);
       void doLinkEntry(const char *destkey, const char *srckey);
 public:

Modified: trunk/include/rawverse.h
===================================================================
--- trunk/include/rawverse.h    2008-07-21 11:28:48 UTC (rev 2186)
+++ trunk/include/rawverse.h    2008-07-22 11:00:16 UTC (rev 2187)
@@ -25,7 +25,6 @@
       FileDesc *textfp[2];

       char *path;
-       void prepText(SWBuf &buf);
       void doSetText(char testmt, long idxoff, const char *buf, long len = -1);
       void doLinkEntry(char testmt, long destidxoff, long srcidxoff);


Modified: trunk/include/rawverse4.h
===================================================================
--- trunk/include/rawverse4.h   2008-07-21 11:28:48 UTC (rev 2186)
+++ trunk/include/rawverse4.h   2008-07-22 11:00:16 UTC (rev 2187)
@@ -25,7 +25,6 @@
       FileDesc *textfp[2];

       char *path;
-       void prepText(SWBuf &buf);
       void doSetText(char testmt, long idxoff, const char *buf, long len = -1);
       void doLinkEntry(char testmt, long destidxoff, long srcidxoff);


Modified: trunk/include/swmodule.h
===================================================================
--- trunk/include/swmodule.h    2008-07-21 11:28:48 UTC (rev 2186)
+++ trunk/include/swmodule.h    2008-07-22 11:00:16 UTC (rev 2187)
@@ -133,7 +133,9 @@
       int entrySize;
       mutable long entryIndex;         // internal common storage for index

+       static void prepText(SWBuf &buf);

+
 public:

       /**

Modified: trunk/include/zstr.h
===================================================================
--- trunk/include/zstr.h        2008-07-21 11:28:48 UTC (rev 2186)
+++ trunk/include/zstr.h        2008-07-22 11:00:16 UTC (rev 2187)
@@ -56,7 +56,6 @@

       void getCompressedText(long block, long entry, char **buf);
       void flushCache();
-       void prepText(SWBuf &buf);
       void getKeyFromDatOffset(long ioffset, char **buf);
       void getKeyFromIdxOffset(long ioffset, char **buf);


Modified: trunk/include/zverse.h
===================================================================
--- trunk/include/zverse.h      2008-07-21 11:28:48 UTC (rev 2186)
+++ trunk/include/zverse.h      2008-07-22 11:00:16 UTC (rev 2187)
@@ -26,11 +26,11 @@
       FileDesc *textfp[2];
       FileDesc *compfp[2];
       char *path;
-       void prepText(SWBuf &buf);
       void doSetText(char testmt, long idxoff, const char *buf, long len = 0);
       void doLinkEntry(char testmt, long destidxoff, long srcidxoff);
       void flushCache();
       char *cacheBuf;
+       unsigned int cacheBufSize;
       char cacheTestament;
       long cacheBufIdx;
       bool dirtyCache;

Modified: trunk/src/mgr/localemgr.cpp
===================================================================
--- trunk/src/mgr/localemgr.cpp 2008-07-21 11:28:48 UTC (rev 2186)
+++ trunk/src/mgr/localemgr.cpp 2008-07-22 11:00:16 UTC (rev 2187)
@@ -49,10 +49,11 @@


 LocaleMgr *LocaleMgr::getSystemLocaleMgr() {
-       if (!systemLocaleMgr)
+       if (!systemLocaleMgr) {
               systemLocaleMgr = new LocaleMgr();
               SWLocale *locale = new SWLocale(0);
               systemLocaleMgr->locales->insert(LocaleMap::value_type(locale->getName(),
locale));
+       }

       return systemLocaleMgr;
 }

Modified: trunk/src/modules/common/rawstr.cpp
===================================================================
--- trunk/src/modules/common/rawstr.cpp 2008-07-21 11:28:48 UTC (rev 2186)
+++ trunk/src/modules/common/rawstr.cpp 2008-07-22 11:00:16 UTC (rev 2187)
@@ -271,65 +271,6 @@


 /******************************************************************************
- * RawStr::preptext    - Prepares the text before returning it to external
- *                                     objects
- *
- * ENT:        buf     - buffer where text is stored and where to
store the prep'd
- *                             text.
- */
-
-void RawStr::prepText(SWBuf &buf) {
-       unsigned int to, from;
-       char space = 0, cr = 0, realdata = 0, nlcnt = 0;
-       char *rawBuf = buf.getRawData();
-       for (to = from = 0; rawBuf[from]; from++) {
-               switch (rawBuf[from]) {
-               case 10:
-                       if (!realdata)
-                               continue;
-                       space = (cr) ? 0 : 1;
-                       cr = 0;
-                       nlcnt++;
-                       if (nlcnt > 1) {
-//                             *to++ = nl;
-                               rawBuf[to++] = 10;
-//                             *to++ = nl[1];
-//                             nlcnt = 0;
-                       }
-                       continue;
-               case 13:
-                       if (!realdata)
-                               continue;
-//                     *to++ = nl[0];
-                       rawBuf[to++] = 10;
-                       space = 0;
-                       cr = 1;
-                       continue;
-               }
-               realdata = 1;
-               nlcnt = 0;
-               if (space) {
-                       space = 0;
-                       if (rawBuf[from] != ' ') {
-                               rawBuf[to++] = ' ';
-                               from--;
-                               continue;
-                       }
-               }
-               rawBuf[to++] = rawBuf[from];
-       }
-       buf.setSize(to);
-
-       while (to > 1) {                        // remove trailing excess
-               to--;
-               if ((rawBuf[to] == 10) || (rawBuf[to] == ' '))
-                       buf.setSize(to);
-               else break;
-       }
-}
-
-
-/******************************************************************************
 * RawStr::readtext    - gets text at a given offset
 *
 * ENT:

Modified: trunk/src/modules/common/rawstr4.cpp
===================================================================
--- trunk/src/modules/common/rawstr4.cpp        2008-07-21 11:28:48
UTC (rev 2186)
+++ trunk/src/modules/common/rawstr4.cpp        2008-07-22 11:00:16
UTC (rev 2187)
@@ -279,65 +279,6 @@


 /******************************************************************************
- * RawStr4::preptext   - Prepares the text before returning it to external
- *                                     objects
- *
- * ENT:        buf     - buffer where text is stored and where to
store the prep'd
- *                             text.
- */
-
-void RawStr4::prepText(SWBuf &buf) {
-       unsigned int to, from;
-       char space = 0, cr = 0, realdata = 0, nlcnt = 0;
-       char *rawBuf = buf.getRawData();
-       for (to = from = 0; rawBuf[from]; from++) {
-               switch (rawBuf[from]) {
-               case 10:
-                       if (!realdata)
-                               continue;
-                       space = (cr) ? 0 : 1;
-                       cr = 0;
-                       nlcnt++;
-                       if (nlcnt > 1) {
-//                             *to++ = nl;
-                               rawBuf[to++] = 10;
-//                             *to++ = nl[1];
-//                             nlcnt = 0;
-                       }
-                       continue;
-               case 13:
-                       if (!realdata)
-                               continue;
-//                     *to++ = nl[0];
-                       rawBuf[to++] = 10;
-                       space = 0;
-                       cr = 1;
-                       continue;
-               }
-               realdata = 1;
-               nlcnt = 0;
-               if (space) {
-                       space = 0;
-                       if (rawBuf[from] != ' ') {
-                               rawBuf[to++] = ' ';
-                               from--;
-                               continue;
-                       }
-               }
-               rawBuf[to++] = rawBuf[from];
-       }
-       buf.setSize(to);
-
-       while (to > 1) {                        // remove trailing excess
-               to--;
-               if ((rawBuf[to] == 10) || (rawBuf[to] == ' '))
-                       buf.setSize(to);
-               else break;
-       }
-}
-
-
-/******************************************************************************
 * RawStr4::readtext   - gets text at a given offset
 *
 * ENT:

Modified: trunk/src/modules/common/rawverse.cpp
===================================================================
--- trunk/src/modules/common/rawverse.cpp       2008-07-21 11:28:48
UTC (rev 2186)
+++ trunk/src/modules/common/rawverse.cpp       2008-07-22 11:00:16
UTC (rev 2187)
@@ -121,65 +121,6 @@


 /******************************************************************************
- * RawVerse::preptext  - Prepares the text before returning it to external
- *                             objects
- *
- * ENT:        buf     - buffer where text is stored and where to
store the prep'd
- *                     text.
- */
-
-void RawVerse::prepText(SWBuf &buf) {
-       unsigned int to, from;
-       char space = 0, cr = 0, realdata = 0, nlcnt = 0;
-       char *rawBuf = buf.getRawData();
-       for (to = from = 0; rawBuf[from]; from++) {
-               switch (rawBuf[from]) {
-               case 10:
-                       if (!realdata)
-                               continue;
-                       space = (cr) ? 0 : 1;
-                       cr = 0;
-                       nlcnt++;
-                       if (nlcnt > 1) {
-//                             *to++ = nl;
-                               rawBuf[to++] = 10;
-//                             *to++ = nl[1];
-//                             nlcnt = 0;
-                       }
-                       continue;
-               case 13:
-                       if (!realdata)
-                               continue;
-//                     *to++ = nl[0];
-                       rawBuf[to++] = 10;
-                       space = 0;
-                       cr = 1;
-                       continue;
-               }
-               realdata = 1;
-               nlcnt = 0;
-               if (space) {
-                       space = 0;
-                       if (rawBuf[from] != ' ') {
-                               rawBuf[to++] = ' ';
-                               from--;
-                               continue;
-                       }
-               }
-               rawBuf[to++] = rawBuf[from];
-       }
-       buf.setSize(to);
-
-       while (to > 1) {                        // remove trailing excess
-               to--;
-               if ((rawBuf[to] == 10) || (rawBuf[to] == ' '))
-                       buf.setSize(to);
-               else break;
-       }
-}
-
-
-/******************************************************************************
 * RawVerse::readtext  - gets text at a given offset
 *
 * ENT:        testmt  - testament file to search in (0 - Old; 1 - New)

Modified: trunk/src/modules/common/rawverse4.cpp
===================================================================
--- trunk/src/modules/common/rawverse4.cpp      2008-07-21 11:28:48
UTC (rev 2186)
+++ trunk/src/modules/common/rawverse4.cpp      2008-07-22 11:00:16
UTC (rev 2187)
@@ -121,65 +121,6 @@


 /******************************************************************************
- * RawVerse4::preptext - Prepares the text before returning it to external
- *                             objects
- *
- * ENT:        buf     - buffer where text is stored and where to
store the prep'd
- *                     text.
- */
-
-void RawVerse4::prepText(SWBuf &buf) {
-       unsigned int to, from;
-       char space = 0, cr = 0, realdata = 0, nlcnt = 0;
-       char *rawBuf = buf.getRawData();
-       for (to = from = 0; rawBuf[from]; from++) {
-               switch (rawBuf[from]) {
-               case 10:
-                       if (!realdata)
-                               continue;
-                       space = (cr) ? 0 : 1;
-                       cr = 0;
-                       nlcnt++;
-                       if (nlcnt > 1) {
-//                             *to++ = nl;
-                               rawBuf[to++] = 10;
-//                             *to++ = nl[1];
-//                             nlcnt = 0;
-                       }
-                       continue;
-               case 13:
-                       if (!realdata)
-                               continue;
-//                     *to++ = nl[0];
-                       rawBuf[to++] = 10;
-                       space = 0;
-                       cr = 1;
-                       continue;
-               }
-               realdata = 1;
-               nlcnt = 0;
-               if (space) {
-                       space = 0;
-                       if (rawBuf[from] != ' ') {
-                               rawBuf[to++] = ' ';
-                               from--;
-                               continue;
-                       }
-               }
-               rawBuf[to++] = rawBuf[from];
-       }
-       buf.setSize(to);
-
-       while (to > 1) {                        // remove trailing excess
-               to--;
-               if ((rawBuf[to] == 10) || (rawBuf[to] == ' '))
-                       buf.setSize(to);
-               else break;
-       }
-}
-
-
-/******************************************************************************
 * RawVerse4::readtext - gets text at a given offset
 *
 * ENT:        testmt  - testament file to search in (0 - Old; 1 - New)

Modified: trunk/src/modules/common/zstr.cpp
===================================================================
--- trunk/src/modules/common/zstr.cpp   2008-07-21 11:28:48 UTC (rev 2186)
+++ trunk/src/modules/common/zstr.cpp   2008-07-22 11:00:16 UTC (rev 2187)
@@ -287,65 +287,6 @@


 /******************************************************************************
- * zStr::preptext      - Prepares the text before returning it to external
- *                                     objects
- *
- * ENT:        buf     - buffer where text is stored and where to
store the prep'd
- *                             text.
- */
-
-void zStr::prepText(SWBuf &buf) {
-       unsigned int to, from;
-       char space = 0, cr = 0, realdata = 0, nlcnt = 0;
-       char *rawBuf = buf.getRawData();
-       for (to = from = 0; rawBuf[from]; from++) {
-               switch (rawBuf[from]) {
-               case 10:
-                       if (!realdata)
-                               continue;
-                       space = (cr) ? 0 : 1;
-                       cr = 0;
-                       nlcnt++;
-                       if (nlcnt > 1) {
-//                             *to++ = nl;
-                               rawBuf[to++] = 10;
-//                             *to++ = nl[1];
-//                             nlcnt = 0;
-                       }
-                       continue;
-               case 13:
-                       if (!realdata)
-                               continue;
-//                     *to++ = nl[0];
-                       rawBuf[to++] = 10;
-                       space = 0;
-                       cr = 1;
-                       continue;
-               }
-               realdata = 1;
-               nlcnt = 0;
-               if (space) {
-                       space = 0;
-                       if (rawBuf[from] != ' ') {
-                               rawBuf[to++] = ' ';
-                               from--;
-                               continue;
-                       }
-               }
-               rawBuf[to++] = rawBuf[from];
-       }
-       buf.setSize(to);
-
-       while (to > 1) {                        // remove trailing excess
-               to--;
-               if ((rawBuf[to] == 10) || (rawBuf[to] == ' '))
-                       buf.setSize(to);
-               else break;
-       }
-}
-
-
-/******************************************************************************
 * zStr::getText       - gets text at a given offset
 *
 * ENT:

Modified: trunk/src/modules/common/zverse.cpp
===================================================================
--- trunk/src/modules/common/zverse.cpp 2008-07-21 11:28:48 UTC (rev 2186)
+++ trunk/src/modules/common/zverse.cpp 2008-07-22 11:00:16 UTC (rev 2187)
@@ -237,7 +237,7 @@
               compressor->Buf(0, &len);
               cacheBuf = (char *)calloc(len + 1, 1);
               memcpy(cacheBuf, compressor->Buf(), len);
-
+               cacheBufSize = strlen(cacheBuf);  // TODO: can we just use len?
               cacheTestament = testmt;
               cacheBufIdx = ulBuffNum;
       }
@@ -256,7 +256,7 @@

 void zVerse::zReadText(char testmt, long start, unsigned short size,
SWBuf &inBuf) {
       inBuf = "";
-       if ( (size > 0) && cacheBuf && ((unsigned)start <
strlen(cacheBuf)) ){ //TODO: optimize this, remove strlen
+       if ((size > 0) && cacheBuf && ((unsigned)start < cacheBufSize)) {
               inBuf.setFillByte(0);
               inBuf.setSize(size+1);
               strncpy(inBuf.getRawData(), &(cacheBuf[start]), size);
@@ -476,63 +476,4 @@
 }


-/******************************************************************************
- * zVerse::preptext    - Prepares the text before returning it to external
- *                             objects
- *
- * ENT:        buf     - buffer where text is stored and where to
store the prep'd
- *                     text.
- */
-
-void zVerse::prepText(SWBuf &buf) {
-       unsigned int to, from;
-       char space = 0, cr = 0, realdata = 0, nlcnt = 0;
-       char *rawBuf = buf.getRawData();
-       for (to = from = 0; rawBuf[from]; from++) {
-               switch (rawBuf[from]) {
-               case 10:
-                       if (!realdata)
-                               continue;
-                       space = (cr) ? 0 : 1;
-                       cr = 0;
-                       nlcnt++;
-                       if (nlcnt > 1) {
-//                             *to++ = nl;
-                               rawBuf[to++] = 10;
-//                             *to++ = nl[1];
-//                             nlcnt = 0;
-                       }
-                       continue;
-               case 13:
-                       if (!realdata)
-                               continue;
-//                     *to++ = nl[0];
-                       rawBuf[to++] = 10;
-                       space = 0;
-                       cr = 1;
-                       continue;
-               }
-               realdata = 1;
-               nlcnt = 0;
-               if (space) {
-                       space = 0;
-                       if (rawBuf[from] != ' ') {
-                               rawBuf[to++] = ' ';
-                               from--;
-                               continue;
-                       }
-               }
-               rawBuf[to++] = rawBuf[from];
-       }
-       buf.setSize(to);
-
-       while (to > 1) {                        // remove trailing excess
-               to--;
-               if ((rawBuf[to] == 10) || (rawBuf[to] == ' '))
-                       buf.setSize(to);
-               else break;
-       }
-}
-
-
 SWORD_NAMESPACE_END

Modified: trunk/src/modules/filters/osisplain.cpp
===================================================================
--- trunk/src/modules/filters/osisplain.cpp     2008-07-21 11:28:48
UTC (rev 2186)
+++ trunk/src/modules/filters/osisplain.cpp     2008-07-22 11:00:16
UTC (rev 2187)
@@ -1,19 +1,25 @@
-/***************************************************************************
-                     osisplain.cpp  -  OSIS to Plaintext filter
-                             -------------------
-    begin                : 2003-02-15
-    copyright            : 2003 by CrossWire Bible Society
- ***************************************************************************/
+/******************************************************************************
+ *  osisplain.cpp      - An SWFilter
+ *                             impl that provides stripping of OSIS tags
+ *
+ * $Id$
+ *
+ * Copyright 2001 CrossWire Bible Society (http://www.crosswire.org)
+ *     CrossWire Bible Society
+ *     P. O. Box 2528
+ *     Tempe, AZ  85280-2528
+ *
+ * This program is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License as published by the
+ * Free Software Foundation version 2.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * General Public License for more details.
+ *
+ */

-/***************************************************************************
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- ***************************************************************************/
-
 #include <stdlib.h>
 #include <osisplain.h>
 #include <ctype.h>
@@ -22,6 +28,17 @@

 SWORD_NAMESPACE_START

+namespace {
+class MyUserData : public BasicFilterUserData {
+public:
+       SWBuf w;
+       XMLTag tag;
+       VerseKey *vk;
+       char testament;
+       MyUserData(const SWModule *module, const SWKey *key) :
BasicFilterUserData(module, key) {}
+};
+}
+
 OSISPlain::OSISPlain() {
       setTokenStart("<");
       setTokenEnd(">");
@@ -45,13 +62,18 @@
          addTokenSubstitute("/lg", "\n");
 }

+BasicFilterUserData *OSISPlain::createUserData(const SWModule
*module, const SWKey *key) {
+       MyUserData *u = new MyUserData(module, key);
+       u->vk = SWDYNAMIC_CAST(VerseKey, u->key);
+       u->testament = (u->vk) ? u->vk->Testament() : 2;        // default to NT
+       return u;
+}

+
 bool OSISPlain::handleToken(SWBuf &buf, const char *token,
BasicFilterUserData *userData) {
          // manually process if it wasn't a simple substitution
       if (!substituteToken(buf, token)) {
               MyUserData *u = (MyUserData *)userData;
-               VerseKey *vk = SWDYNAMIC_CAST(VerseKey, u->key);
-               char testament = (vk) ? vk ->Testament() : 2;   // default to NT
               if (((*token == 'w') && (token[1] == ' ')) ||
                   ((*token == '/') && (token[1] == 'w') && (!token[2]))) {
                                u->tag = token;
@@ -99,7 +121,7 @@
                                               val++;
                                       }
                                       else {
-                                               gh = (testament>1) ? 'G' : 'H';
+                                               gh = (u->testament>1)
? 'G' : 'H';
                                       }
                                       if ((!strcmp(val, "3588")) &&
(lastText.length() < 1))
                                               show = false;

Modified: trunk/src/modules/genbook/rawgenbook/rawgenbook.cpp
===================================================================
--- trunk/src/modules/genbook/rawgenbook/rawgenbook.cpp 2008-07-21
11:28:48 UTC (rev 2186)
+++ trunk/src/modules/genbook/rawgenbook/rawgenbook.cpp 2008-07-22
11:00:16 UTC (rev 2187)
@@ -125,7 +125,7 @@
               rawFilter(entryBuf, key);

 //                if (!isUnicode())
-                       RawStr::prepText(entryBuf);
+                       SWModule::prepText(entryBuf);
       }

       if (freeKey) // free our key if we created a VerseKey

Modified: trunk/src/modules/swmodule.cpp
===================================================================
--- trunk/src/modules/swmodule.cpp      2008-07-21 11:28:48 UTC (rev 2186)
+++ trunk/src/modules/swmodule.cpp      2008-07-22 11:00:16 UTC (rev 2187)
@@ -1279,4 +1279,63 @@
 void SWModule::linkEntry(const SWKey*) {
 }

+
+/******************************************************************************
+ * SWModule::prepText  - Prepares the text before returning it to external
+ *                                     objects
+ *
+ * ENT:        buf     - buffer where text is stored and where to
store the prep'd
+ *                             text.
+ */
+
+void SWModule::prepText(SWBuf &buf) {
+       unsigned int to, from;
+       char space = 0, cr = 0, realdata = 0, nlcnt = 0;
+       char *rawBuf = buf.getRawData();
+       for (to = from = 0; rawBuf[from]; from++) {
+               switch (rawBuf[from]) {
+               case 10:
+                       if (!realdata)
+                               continue;
+                       space = (cr) ? 0 : 1;
+                       cr = 0;
+                       nlcnt++;
+                       if (nlcnt > 1) {
+//                             *to++ = nl;
+                               rawBuf[to++] = 10;
+//                             *to++ = nl[1];
+//                             nlcnt = 0;
+                       }
+                       continue;
+               case 13:
+                       if (!realdata)
+                               continue;
+//                     *to++ = nl[0];
+                       rawBuf[to++] = 10;
+                       space = 0;
+                       cr = 1;
+                       continue;
+               }
+               realdata = 1;
+               nlcnt = 0;
+               if (space) {
+                       space = 0;
+                       if (rawBuf[from] != ' ') {
+                               rawBuf[to++] = ' ';
+                               from--;
+                               continue;
+                       }
+               }
+               rawBuf[to++] = rawBuf[from];
+       }
+       buf.setSize(to);
+
+       while (to > 1) {                        // remove trailing excess
+               to--;
+               if ((rawBuf[to] == 10) || (rawBuf[to] == ' '))
+                       buf.setSize(to);
+               else break;
+       }
+}
+
 SWORD_NAMESPACE_END

Modified: trunk/src/modules/texts/ztext/ztext.cpp
===================================================================
--- trunk/src/modules/texts/ztext/ztext.cpp     2008-07-21 11:28:48
UTC (rev 2186)
+++ trunk/src/modules/texts/ztext/ztext.cpp     2008-07-22 11:00:16
UTC (rev 2187)
@@ -68,8 +68,8 @@
       entrySize = size;        // support getEntrySize call

       entryBuf = "";
+
       zReadText(key.Testament(), start, size, entryBuf);
-
       rawFilter(entryBuf, &key);

 //     if (!isUnicode())

Modified: trunk/usrinst.sh
===================================================================
--- trunk/usrinst.sh    2008-07-21 11:28:48 UTC (rev 2186)
+++ trunk/usrinst.sh    2008-07-22 11:00:16 UTC (rev 2187)
@@ -5,7 +5,7 @@
 OPTIONS="--without-conf $OPTIONS"
 OPTIONS="--sysconfdir=/etc $OPTIONS"
 #OPTIONS="--with-vcl $OPTIONS"
-OPTIONS="--enable-debug $OPTIONS"
+#OPTIONS="--enable-debug $OPTIONS"
 #OPTIONS="--enable-profile $OPTIONS"
 OPTIONS="--with-icu $OPTIONS"
 #OPTIONS="--without-clucene $OPTIONS"


_______________________________________________
sword-cvs mailing list
sword-cvs at crosswire.org
http://www.crosswire.org/mailman/listinfo/sword-cvs




More information about the Pkg-crosswire-devel mailing list