mirror of
https://gitlab.gnome.org/GNOME/libxslt
synced 2025-04-19 05:42:15 +03:00
130 lines
3.7 KiB
Python
130 lines
3.7 KiB
Python
#
|
|
# Both libxml2mod and libxsltmod have a dependency 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 transformCtxtBase:
|
|
def __init__(self, _obj=None):
|
|
if _obj != None:
|
|
self._o = _obj;
|
|
return
|
|
self._o = None
|
|
def __hash__(self):
|
|
v = libxsltmod.xsltGetTransformContextHashCode(self._o)
|
|
return v
|
|
def __eq__(self, other):
|
|
if other == None:
|
|
return 0
|
|
v = libxsltmod.xsltCompareTransformContextsEqual(self._o, other._o)
|
|
return v
|
|
|
|
class stylesheetBase:
|
|
def __init__(self, _obj=None):
|
|
if _obj != None:
|
|
self._o = _obj;
|
|
return
|
|
self._o = None
|
|
def __hash__(self):
|
|
v = libxsltmod.xsltGetStylesheetHashCode(self._o)
|
|
return v
|
|
def __eq__(self, other):
|
|
if other == None:
|
|
return 0
|
|
v = libxsltmod.xsltCompareStylesheetsEqual(self._o, other._o)
|
|
return v
|
|
|
|
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
|
|
#
|
|
|