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
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
#
# Both libxml2mod and libxsltmod have a dependancy on libxml2.so
# and they should share the same module, try to convince the python
# loader to work in that mode if feasible
#
import sys
if not hasattr(sys,'getdlopenflags'):
import libxml2mod
import libxsltmod
import libxml2
else:
try:
from dl import RTLD_GLOBAL, RTLD_NOW
except ImportError:
RTLD_GLOBAL = -1
RTLD_NOW = -1
try:
import os
osname = os.uname()[0]
if osname == 'Linux' or osname == 'SunOS':
RTLD_GLOBAL = 0x00100
RTLD_NOW = 0x00002
elif osname == 'Darwin':
RTLD_GLOBAL = 0x8
RTLD_NOW = 0x2
#
# is there a better method ?
#
# else:
# print "libxslt could not guess RTLD_GLOBAL and RTLD_NOW " + \
# "on this platform: %s" % (osname)
except:
pass
# print "libxslt could not guess RTLD_GLOBAL and RTLD_NOW " + \
# "on this platform: %s" % (osname)
except:
RTLD_GLOBAL = -1
RTLD_NOW = -1
if RTLD_GLOBAL != -1 and RTLD_NOW != -1:
try:
flags = sys.getdlopenflags()
sys.setdlopenflags(RTLD_GLOBAL | RTLD_NOW)
try:
import libxml2mod
import libxsltmod
import libxml2
finally:
sys.setdlopenflags(flags)
except:
import libxml2mod
import libxsltmod
import libxml2
else:
import libxml2mod
import libxsltmod
import libxml2
class extensionModule:
def _styleInit(self, style, URI):
return self.styleInit(stylesheet(_obj=style), URI)
def _styleShutdown(self, style, URI, data):
return self.styleShutdown(stylesheet(_obj=style), URI, data)
def _ctxtInit(self, ctxt, URI):
return self.ctxtInit(transformCtxt(_obj=ctxt), URI)
def _ctxtShutdown(self, ctxt, URI, data):
return self.ctxtShutdown(transformCtxt(_obj=ctxt), URI, data)
def styleInit(self, style, URI):
"""Callback function when used in a newly compiled stylesheet,
the return value is passed in subsequent calls"""
pass
def styleShutdown(self, style, URI, data):
"""Callback function when a stylesheet using it is destroyed"""
pass
def ctxtInit(self, ctxt, URI):
"""Callback function when used in a new transformation process,
the return value is passed in subsequent calls"""
pass
def ctxtShutdown(self, ctxt, URI, data):
"""Callback function when a transformation using it finishes"""
pass
def cleanup():
"""Cleanup all libxslt and libxml2 memory allocated"""
libxsltmod.xsltPythonCleanup()
libxml2.cleanupParser()
#
# Everything below this point is automatically generated
#
|