diff options
Diffstat (limited to 'include/versekey.h')
-rw-r--r-- | include/versekey.h | 406 |
1 files changed, 0 insertions, 406 deletions
diff --git a/include/versekey.h b/include/versekey.h deleted file mode 100644 index 1cc5bf2..0000000 --- a/include/versekey.h +++ /dev/null @@ -1,406 +0,0 @@ -/****************************************************************************** - * versekey.h - code for class 'versekey'- a standard Biblical verse key - * - * $Id: versekey.h,v 1.30 2003/08/13 05:27:02 scribe Exp $ - * - * Copyright 1998 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. - * - */ - - -#ifndef VERSEKEY_H -#define VERSEKEY_H - -#include <swkey.h> -#include <swmacs.h> -#include <listkey.h> -#include <ctype.h> - -#include <defs.h> - -SWORD_NAMESPACE_START - -#define POS_MAXVERSE ((char)3) -#define POS_MAXCHAPTER ((char)4) -#define POS_MAXBOOK ((char)5) - -#define MAXVERSE SW_POSITION(POS_MAXVERSE) -#define MAXCHAPTER SW_POSITION(POS_MAXCHAPTER) -#define MAXBOOK SW_POSITION(POS_MAXBOOK) - -struct sbook -{ - /**Name of book - */ - const char *name; - - /**Preferred Abbreviation - */ - const char *prefAbbrev; - - /**Maximum chapters in book - */ - unsigned char chapmax; - /** Array[chapmax] of maximum verses in chapters - */ - int *versemax; -}; - -struct abbrev -{ - const char *ab; - int book; -}; - - -class SWLocale; - -/** - * Class VerseKey - * The SWKey implementation used for verse based modules like Bibles or commentaries. - */ -class SWDLLEXPORT VerseKey:public SWKey { - class LocaleCache { - public: - char *name; - unsigned int abbrevsCnt; - SWLocale *locale; - LocaleCache() { - name = 0; - abbrevsCnt = 0; - locale = 0; - } - virtual ~LocaleCache() { - if (name) - delete[]name; - } - }; - - static SWClass classdef; - - static long *offsets[2][2]; - static int offsize[2][2]; - /** number of instantiated VerseKey objects or derivitives - */ - static int instance; - static struct sbook otbooks[]; - static struct sbook ntbooks[]; - static long otbks[]; - static long otcps[]; - static long ntbks[]; - static long ntcps[]; - static int vm[]; - static LocaleCache localeCache; - ListKey internalListKey; - - const struct abbrev *abbrevs; - char *locale; - int abbrevsCnt; - /** The Testament: 0 - Old; 1 - New - */ - signed char testament; - mutable signed char book; - mutable signed int chapter; - mutable signed int verse; - /** flag for auto normalization - */ - char autonorm; - /** flag for headings on/off - */ - char headings; - - int getBookAbbrev(const char *abbr); - void initBounds() const; - /** initialize and allocate books array - */ - void initstatics(); - /** initializes this VerseKey() - */ - void init(); - /** Refresh keytext based on testament|book|chapter|verse - * default auto normalization to true - * default display headings option is false - */ - void freshtext() const; - /** Parse a character array into testament|book|chapter|verse - * - */ - virtual char parse(); - /** Binary search to find the index closest, but less - * than the given value. - * - * @param array long * to array to search - * @param size number of elements in the array - * @param value value to find - * @return the index into the array that is less than but closest to value - */ - int findindex(long *array, int size, long value); - mutable VerseKey *lowerBound, *upperBound; - -public: - static const char builtin_BMAX[2]; - static struct sbook *builtin_books[2]; - static const struct abbrev builtin_abbrevs[]; - const char *BMAX; - struct sbook **books; - - /** - * VerseKey Constructor - initializes Instance of VerseKey - * - * @param ikey text key (will take various forms of 'BOOK CH:VS'. - * See parse() for more detailed information) - */ - VerseKey(const char *ikey = 0); - - /** - * VerseKey Constructor - initializes instance of VerseKey - * - * @param ikey base key (will take various forms of 'BOOK CH:VS'. - * See parse() for more detailed information) - */ - VerseKey(const SWKey * ikey); - - /** VerseKey Constructor - initializes instance of VerseKey - * with boundariess - see also LowerBound() - * and UpperBound() - * @param min the lower boundary of the new VerseKey - * @param max the upper boundary of the new VerseKey - */ - VerseKey(const char *min, const char *max); - - /** VerseKey Copy Constructor - will create a new VerseKey - * based on an existing one - * - * @param k the VerseKey to copy from - */ - VerseKey(const VerseKey &k); - - /** VerseKey Destructor - * Cleans up an instance of VerseKey - */ - virtual ~ VerseKey(); - - /** sets the lower boundary for this VerseKey - * and returns the new boundary - * - * @param lb the new lower boundary for this VerseKey - * @return the lower boundary the key was set to - */ - VerseKey & LowerBound(const char *lb); - - /** sets the upper boundary for this VerseKey - * and returns the new boundary - * @param ub the new upper boundary for this VerseKey - * @return the upper boundary the key was set to - */ - VerseKey & UpperBound(const char *ub); - - /** gets the lower boundary of this VerseKey - * @return the lower boundary of this VerseKey - */ - VerseKey & LowerBound() const; - - /** gets the upper boundary of this VerseKey - * @return the upper boundary of this VerseKey - */ - VerseKey & UpperBound() const; - - /** clears the boundaries of this VerseKey - */ - void ClearBounds(); - - /** Creates a new SWKey based on the current VerseKey - * see also the Copy Constructor - */ - virtual SWKey *clone() const; - - /** refreshes keytext before returning if cast to - * a (char *) is requested - */ - virtual const char *getText() const; - virtual const char *getShortText() const; - virtual void setText(const char *ikey) { SWKey::setText(ikey); parse (); } - virtual void copyFrom(const SWKey & ikey); - - /** Equates this VerseKey to another VerseKey - */ - virtual void copyFrom(const VerseKey & ikey); - - /** Positions this key - * - * @param newpos Position to set to. - * @return *this - */ - virtual void setPosition(SW_POSITION newpos); - - /** Decrements key a number of verses - * - * @param steps Number of verses to jump backward - * @return *this - */ - virtual void decrement(int steps); - - /** Increments key a number of verses - * - * @param steps Number of verses to jump forward - * @return *this - */ - virtual void increment(int steps); - virtual char Traversable() { return 1; } - - virtual const char *getBookName() const; - virtual const char *getBookAbbrev() const; - /** Gets testament - * - * @return value of testament - */ - virtual char Testament() const; - - /** Gets book - * - * @return value of book - */ - virtual char Book() const; - - /** Gets chapter - * - * @return value of chapter - */ - virtual int Chapter() const; - - /** Gets verse - * - * @return value of verse - */ - virtual int Verse() const; - - /** Sets/gets testament - * - * @param itestament value which to set testament - * [MAXPOS(char)] - only get - * @return if unchanged -> value of testament, - * if changed -> previous value of testament - */ - virtual char Testament(char itestament); - - /** Sets/gets book - * - * @param ibook value which to set book - * [MAXPOS(char)] - only get - * @return if unchanged -> value of book, - * if changed -> previous value of book - */ - virtual char Book(char ibook); - - /** Sets/gets chapter - * - * @param ichapter value which to set chapter - * [MAXPOS(int)] - only get - * @return if unchanged -> value of chapter, - * if changed -> previous value of chapter - */ - virtual int Chapter(int ichapter); - - /** Sets/gets verse - * - * @param iverse value which to set verse - * [MAXPOS(int)] - only get - * @return if unchanged -> value of verse, - * if changed -> previous value of verse - */ - virtual int Verse(int iverse); - - /** checks limits and normalizes if necessary (e.g. - * Matthew 29:47 = Mark 2:2). If last verse is - * exceeded, key is set to last Book CH:VS - * - * @return *this - */ - virtual void Normalize(char autocheck = 0); - - /** Sets/gets flag that tells VerseKey to - * automatically normalize itself when modified - * - * @param iautonorm value which to set autonorm - * [MAXPOS(char)] - only get - * @return if unchanged -> value of autonorm, - * if changed -> previous value of autonorm - */ - virtual char AutoNormalize(char iautonorm = MAXPOS (char)); - - /** Sets/gets flag that tells VerseKey to include - * chapter/book/testament/module headings - * - * @param iheadings value which to set headings - * [MAXPOS(char)] - only get - * @return if unchanged -> value of headings, - * if changed -> previous value of headings - */ - virtual char Headings(char iheadings = MAXPOS (char)); - - virtual long NewIndex() const; - - /** Gets index based upon current verse - * - * @return offset - */ - virtual long Index() const; - - /** Sets index based upon current verse - * - * @param iindex value to set index to - * @return offset - */ - virtual long Index(long iindex); - - virtual const char *getOSISRef() const; - - virtual ListKey ParseVerseList(const char *buf, const char *defaultKey = "Genesis 1:1", bool expandRange = false); - virtual const char *getRangeText() const; - /** Compares another SWKey object - * - * @param ikey key to compare with this one - * @return >0 if this VerseKey is greater than compare SWKey, - * <0 if this VerseKey is smaller than compare SWKey, - * 0 if the keys are the same - */ - virtual int compare(const SWKey & ikey); - - /** Compares another VerseKey object - * - * @param ikey key to compare with this one - * @return >0 if this VerseKey is greater than compare VerseKey, - * <0 if this VerseKey is smaller than compare VerseKey, - * 0 if the keys are the same - */ - virtual int _compare(const VerseKey & ikey); - - virtual void setBookAbbrevs(const struct abbrev *bookAbbrevs, unsigned int size = 0 /* default determine size */ ); - virtual void setBooks(const char *iBMAX, struct sbook **ibooks); - virtual void setLocale(const char *name); - virtual const char *getLocale() const { return locale; } - - - - // OPERATORS -------------------------------------------------------------------- - - - SWKEY_OPERATORS - - virtual SWKey & operator = (const VerseKey & ikey) { copyFrom(ikey); return *this; } -}; - -SWORD_NAMESPACE_END -#endif |