diff options
author | Roberto C. Sanchez <roberto@connexer.com> | 2014-03-29 10:53:59 -0400 |
---|---|---|
committer | Roberto C. Sanchez <roberto@connexer.com> | 2014-03-29 10:53:59 -0400 |
commit | 03134fa5f6f25d92724ce4c183f9bbe12a9e37dc (patch) | |
tree | 847326a4de82f0241ac87cbbc427a1b92a696a02 /include/swobject.h | |
parent | d7469385b05b9510338407fa123e9ad090f80af6 (diff) |
Imported Upstream version 1.5.11
Diffstat (limited to 'include/swobject.h')
-rw-r--r-- | include/swobject.h | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/include/swobject.h b/include/swobject.h new file mode 100644 index 0000000..6f60a57 --- /dev/null +++ b/include/swobject.h @@ -0,0 +1,65 @@ +/****************************************************************************** +* swobject.h - definition for SWObject used as lowest base class for many +* SWORD objects +* +* $Id: swobject.h 1790 2005-05-03 03:49:04Z scribe $ +* +* Copyright 2005 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 SWOBJECT_H +#define SWOBJECT_H + +#include <defs.h> + +SWORD_NAMESPACE_START +#define SWDYNAMIC_CAST(className, object) (className *)((object)?((object->getClass()->isAssignableFrom(#className))?object:0):0) + +/** +* Class used for SWDYNAMIC_CAST to save the inheritance order. +*/ +class SWDLLEXPORT SWClass { +private: + const char **descends; + +public: + SWClass(const char **descends) { + this->descends = descends; + } + + bool isAssignableFrom(const char *className) const; +}; + +/** Base class for major Sword classes. +* SWObject is the base class for major Sword classes like SWKey. +* It is used because dynamic_cast is not available on all plattforms supported +* by Sword. Use SWDYNAMIC_CAST(classname, object) instead of dynamic_cast<classname>(object). +*/ +class SWObject { +protected: + SWClass * myclass; + +public: + /** Use this to get the class definition and inheritance order. + * @return The class definition of this object + */ + const SWClass *getClass () const { + return myclass; + } +}; + +SWORD_NAMESPACE_END +#endif |