1 | #
|
---|
2 | # Both libxml2mod and libxsltmod have a dependancy on libxml2.so
|
---|
3 | # and they should share the same module, try to convince the python
|
---|
4 | # loader to work in that mode if feasible
|
---|
5 | #
|
---|
6 | import sys
|
---|
7 | if not hasattr(sys,'getdlopenflags'):
|
---|
8 | import libxml2mod
|
---|
9 | import libxsltmod
|
---|
10 | import libxml2
|
---|
11 | else:
|
---|
12 | try:
|
---|
13 | from dl import RTLD_GLOBAL, RTLD_NOW
|
---|
14 | except ImportError:
|
---|
15 | RTLD_GLOBAL = -1
|
---|
16 | RTLD_NOW = -1
|
---|
17 | try:
|
---|
18 | import os
|
---|
19 | osname = os.uname()[0]
|
---|
20 | if osname == 'Linux' or osname == 'SunOS':
|
---|
21 | RTLD_GLOBAL = 0x00100
|
---|
22 | RTLD_NOW = 0x00002
|
---|
23 | elif osname == 'Darwin':
|
---|
24 | RTLD_GLOBAL = 0x8
|
---|
25 | RTLD_NOW = 0x2
|
---|
26 | #
|
---|
27 | # is there a better method ?
|
---|
28 | #
|
---|
29 | # else:
|
---|
30 | # print "libxslt could not guess RTLD_GLOBAL and RTLD_NOW " + \
|
---|
31 | # "on this platform: %s" % (osname)
|
---|
32 | except:
|
---|
33 | pass
|
---|
34 | # print "libxslt could not guess RTLD_GLOBAL and RTLD_NOW " + \
|
---|
35 | # "on this platform: %s" % (osname)
|
---|
36 | except:
|
---|
37 | RTLD_GLOBAL = -1
|
---|
38 | RTLD_NOW = -1
|
---|
39 |
|
---|
40 | if RTLD_GLOBAL != -1 and RTLD_NOW != -1:
|
---|
41 | try:
|
---|
42 | flags = sys.getdlopenflags()
|
---|
43 | sys.setdlopenflags(RTLD_GLOBAL | RTLD_NOW)
|
---|
44 | try:
|
---|
45 | import libxml2mod
|
---|
46 | import libxsltmod
|
---|
47 | import libxml2
|
---|
48 | finally:
|
---|
49 | sys.setdlopenflags(flags)
|
---|
50 | except:
|
---|
51 | import libxml2mod
|
---|
52 | import libxsltmod
|
---|
53 | import libxml2
|
---|
54 | else:
|
---|
55 | import libxml2mod
|
---|
56 | import libxsltmod
|
---|
57 | import libxml2
|
---|
58 |
|
---|
59 |
|
---|
60 | class transformCtxtBase:
|
---|
61 | def __init__(self, _obj=None):
|
---|
62 | if _obj != None:
|
---|
63 | self._o = _obj;
|
---|
64 | return
|
---|
65 | self._o = None
|
---|
66 | def __hash__(self):
|
---|
67 | v = libxsltmod.xsltGetTransformContextHashCode(self._o)
|
---|
68 | return v
|
---|
69 | def __eq__(self, other):
|
---|
70 | if other == None:
|
---|
71 | return 0
|
---|
72 | v = libxsltmod.xsltCompareTransformContextsEqual(self._o, other._o)
|
---|
73 | return v
|
---|
74 |
|
---|
75 | class stylesheetBase:
|
---|
76 | def __init__(self, _obj=None):
|
---|
77 | if _obj != None:
|
---|
78 | self._o = _obj;
|
---|
79 | return
|
---|
80 | self._o = None
|
---|
81 | def __hash__(self):
|
---|
82 | v = libxsltmod.xsltGetStylesheetHashCode(self._o)
|
---|
83 | return v
|
---|
84 | def __eq__(self, other):
|
---|
85 | if other == None:
|
---|
86 | return 0
|
---|
87 | v = libxsltmod.xsltCompareStylesheetsEqual(self._o, other._o)
|
---|
88 | return v
|
---|
89 |
|
---|
90 | class extensionModule:
|
---|
91 | def _styleInit(self, style, URI):
|
---|
92 | return self.styleInit(stylesheet(_obj=style), URI)
|
---|
93 |
|
---|
94 | def _styleShutdown(self, style, URI, data):
|
---|
95 | return self.styleShutdown(stylesheet(_obj=style), URI, data)
|
---|
96 |
|
---|
97 | def _ctxtInit(self, ctxt, URI):
|
---|
98 | return self.ctxtInit(transformCtxt(_obj=ctxt), URI)
|
---|
99 |
|
---|
100 | def _ctxtShutdown(self, ctxt, URI, data):
|
---|
101 | return self.ctxtShutdown(transformCtxt(_obj=ctxt), URI, data)
|
---|
102 |
|
---|
103 | def styleInit(self, style, URI):
|
---|
104 | """Callback function when used in a newly compiled stylesheet,
|
---|
105 | the return value is passed in subsequent calls"""
|
---|
106 | pass
|
---|
107 |
|
---|
108 | def styleShutdown(self, style, URI, data):
|
---|
109 | """Callback function when a stylesheet using it is destroyed"""
|
---|
110 | pass
|
---|
111 |
|
---|
112 | def ctxtInit(self, ctxt, URI):
|
---|
113 | """Callback function when used in a new transformation process,
|
---|
114 | the return value is passed in subsequent calls"""
|
---|
115 | pass
|
---|
116 |
|
---|
117 | def ctxtShutdown(self, ctxt, URI, data):
|
---|
118 | """Callback function when a transformation using it finishes"""
|
---|
119 | pass
|
---|
120 |
|
---|
121 | def cleanup():
|
---|
122 | """Cleanup all libxslt and libxml2 memory allocated"""
|
---|
123 | libxsltmod.xsltPythonCleanup()
|
---|
124 | libxml2.cleanupParser()
|
---|
125 |
|
---|
126 | #
|
---|
127 | # Everything below this point is automatically generated
|
---|
128 | #
|
---|
129 |
|
---|