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