summaryrefslogtreecommitdiff
path: root/bindings/swig/package/markupcallback.h
blob: 4898b1b13392959db1a003f06718693799f0262b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
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);
		}	   
	}
};