summaryrefslogtreecommitdiff
path: root/bindings/swig/package/markupcallback.h
diff options
context:
space:
mode:
Diffstat (limited to 'bindings/swig/package/markupcallback.h')
-rwxr-xr-xbindings/swig/package/markupcallback.h47
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
+ &section) {
+ if(!call(module)) {
+ MarkupFilterMgr::AddRenderFilters(module, section);
+ }
+ }
+ };
+
+