diff options
Diffstat (limited to 'bindings/swig/package/markupcallback.h')
-rwxr-xr-x | bindings/swig/package/markupcallback.h | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/bindings/swig/package/markupcallback.h b/bindings/swig/package/markupcallback.h new file mode 100755 index 0000000..cef01b7 --- /dev/null +++ b/bindings/swig/package/markupcallback.h @@ -0,0 +1,47 @@ +#include <markupfiltmgr.h> +#include <swbuf.h> +#include <defs.h> +using namespace sword; + +class MarkupCallback { +public: + virtual ~MarkupCallback() { ;} + virtual bool run(SWModule* x) {return false;} +}; + + class MyMarkup : public MarkupFilterMgr + { + + private: + MarkupCallback* _callback; + + public: + + MyMarkup(MarkupCallback* callback, char markup = FMT_THML, char encoding = ENC_UTF8): MarkupFilterMgr(markup, encoding), _callback(callback) + {} + virtual ~MyMarkup() { + delCallback(); + } + void delCallback() { + delete _callback; _callback = 0; + } + void setCallback(MarkupCallback *cb) + { + delCallback(); + _callback = cb; + } + bool call(SWModule* x) { + if (_callback) + return _callback->run(x); + return false; + } + protected: + virtual void AddRenderFilters(SWModule *module, ConfigEntMap + §ion) { + if(!call(module)) { + MarkupFilterMgr::AddRenderFilters(module, section); + } + } + }; + + |