diff options
Diffstat (limited to 'bindings/swig/markupcallback.h')
-rwxr-xr-x | bindings/swig/markupcallback.h | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/bindings/swig/markupcallback.h b/bindings/swig/markupcallback.h new file mode 100755 index 0000000..4898b1b --- /dev/null +++ b/bindings/swig/markupcallback.h @@ -0,0 +1,46 @@ +#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); + } + } +}; |