summaryrefslogtreecommitdiff
path: root/src/modules/texts/rawgbf/rawgbf.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/modules/texts/rawgbf/rawgbf.cpp')
-rw-r--r--src/modules/texts/rawgbf/rawgbf.cpp84
1 files changed, 84 insertions, 0 deletions
diff --git a/src/modules/texts/rawgbf/rawgbf.cpp b/src/modules/texts/rawgbf/rawgbf.cpp
new file mode 100644
index 0000000..0866585
--- /dev/null
+++ b/src/modules/texts/rawgbf/rawgbf.cpp
@@ -0,0 +1,84 @@
+/******************************************************************************
+ * rawgbf.cpp - code for class 'RawGBF'- a module that reads raw text files:
+ * ot and nt using indexs ??.bks ??.cps ??.vss
+ */
+
+
+#include <ctype.h>
+#include <stdio.h>
+#include <fcntl.h>
+
+#ifndef __GNUC__
+#include <io.h>
+#else
+#include <unistd.h>
+#endif
+
+#include <string.h>
+#include <utilfuns.h>
+#include <rawverse.h>
+#include <rawgbf.h>
+
+
+/******************************************************************************
+ * RawGBF Constructor - Initializes data for instance of RawGBF
+ *
+ * ENT: iname - Internal name for module
+ * idesc - Name to display to user for module
+ * idisp - Display object to use for displaying
+ */
+
+RawGBF::RawGBF(const char *ipath, const char *iname, const char *idesc, SWDisplay *idisp) : SWText(iname, idesc, idisp), RawVerse(ipath)
+{
+}
+
+
+/******************************************************************************
+ * RawGBF Destructor - Cleans up instance of RawGBF
+ */
+
+RawGBF::~RawGBF()
+{
+}
+
+
+/******************************************************************************
+ * RawGBF::operator char * - Returns the correct verse when char * cast
+ * is requested
+ *
+ * RET: string buffer with verse
+ */
+
+RawGBF::operator char*()
+{
+ long start;
+ unsigned short size;
+ VerseKey *key = 0;
+
+#ifndef _WIN32_WCE
+ try {
+#endif
+ key = SWDYNAMIC_CAST(VerseKey, this->key);
+#ifndef _WIN32_WCE
+ }
+ catch ( ... ) {}
+#endif
+ if (!key)
+ key = new VerseKey(this->key);
+
+
+ findoffset(key->Testament(), key->Index(), &start, &size);
+
+ if (entrybuf)
+ delete [] entrybuf;
+ entrybuf = new char [ size * 3 ]; // extra for conversion to RTF or other.
+
+ gettext(key->Testament(), start, size + 1, entrybuf);
+ preptext(entrybuf);
+ RenderText(entrybuf, size * 3);
+
+ if (key != this->key)
+ delete key;
+
+ return entrybuf;
+}