diff options
Diffstat (limited to 'src/modules/lexdict/rawld/rawld.cpp')
-rw-r--r-- | src/modules/lexdict/rawld/rawld.cpp | 84 |
1 files changed, 27 insertions, 57 deletions
diff --git a/src/modules/lexdict/rawld/rawld.cpp b/src/modules/lexdict/rawld/rawld.cpp index b22c28b..6fccc68 100644 --- a/src/modules/lexdict/rawld/rawld.cpp +++ b/src/modules/lexdict/rawld/rawld.cpp @@ -14,11 +14,11 @@ #include <unistd.h> #endif -#include <string.h> #include <utilfuns.h> #include <rawstr.h> #include <rawld.h> +SWORD_NAMESPACE_START /****************************************************************************** * RawLD Constructor - Initializes data for instance of RawLD @@ -88,15 +88,11 @@ char RawLD::getEntry(long away) strongsPad(buf); - *entrybuf = 0; - if (!(retval = findoffset(buf, &start, &size, away))) { + if (!(retval = findOffset(buf, &start, &size, away))) { + readText(start, &size, &idxbuf, entryBuf); + rawFilter(entryBuf, 0); // hack, decipher + rawFilter(entryBuf, key); entrySize = size; // support getEntrySize call - if (entrybuf) - delete [] entrybuf; - entrybuf = new char [ ++size * FILTERPAD ]; - idxbuf = new char [ size * FILTERPAD ]; - - gettext(start, size + 1, idxbuf, entrybuf); if (!key->Persist()) // If we have our own key *key = idxbuf; // reset it to entry index buffer @@ -104,8 +100,7 @@ char RawLD::getEntry(long away) delete [] idxbuf; } else { - entrybuf = new char [ 5 ]; - *entrybuf = 0; + entryBuf = ""; } delete [] buf; @@ -114,82 +109,55 @@ char RawLD::getEntry(long away) /****************************************************************************** - * RawLD::operator char * - Returns the correct entry when char * cast + * RawLD::getRawEntry - Returns the correct entry when char * cast * is requested * * RET: string buffer with entry */ -char *RawLD::getRawEntry() { - if (!getEntry() && !isUnicode()) { - preptext(entrybuf); +SWBuf &RawLD::getRawEntryBuf() { + + char ret = getEntry(); + if (!ret) { +// if (!isUnicode()) + prepText(entryBuf); } + else error = ret; - return entrybuf; + return entryBuf; } /****************************************************************************** - * RawLD::operator += - Increments module key a number of entries + * RawLD::increment - Increments module key a number of entries * * ENT: increment - Number of entries to jump forward * * RET: *this */ -SWModule &RawLD::operator +=(int increment) -{ +void RawLD::increment(int steps) { char tmperror; if (key->Traversable()) { - *key += increment; + *key += steps; error = key->Error(); - increment = 0; + steps = 0; } - tmperror = (getEntry(increment)) ? KEYERR_OUTOFBOUNDS : 0; + tmperror = (getEntry(steps)) ? KEYERR_OUTOFBOUNDS : 0; error = (error)?error:tmperror; *key = entkeytxt; - return *this; -} - - -/****************************************************************************** - * RawLD::operator =(SW_POSITION) - Positions this key if applicable - */ - -SWModule &RawLD::operator =(SW_POSITION p) -{ - if (!key->Traversable()) { - switch (p) { - case POS_TOP: - *key = ""; - break; - case POS_BOTTOM: - *key = "zzzzzzzzz"; - break; - } - } - else *key = p; - return *this; } -SWModule &RawLD::setentry(const char *inbuf, long len) { - settext(*key, inbuf, len); - - return *this; -} - -SWModule &RawLD::operator <<(const char *inbuf) { - return setentry(inbuf, 0); +void RawLD::setEntry(const char *inbuf, long len) { + doSetText(*key, inbuf, len); } -SWModule &RawLD::operator <<(const SWKey *inkey) { - linkentry(*key, *inkey); - - return *this; +void RawLD::linkEntry(const SWKey *inkey) { + doLinkEntry(*key, *inkey); } @@ -200,5 +168,7 @@ SWModule &RawLD::operator <<(const SWKey *inkey) { */ void RawLD::deleteEntry() { - settext(*key, ""); + doSetText(*key, ""); } + +SWORD_NAMESPACE_END |