mirror of
				https://gitlab.gnome.org/GNOME/libxslt
				synced 2025-11-04 00:53:12 +03:00 
			
		
		
		
	* python/libxsl.py: fixed tab/space inconsistency with patch provided by Andreas Hanke (bug #409193) svn path=/trunk/; revision=1422
		
			
				
	
	
		
			130 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			130 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
#
 | 
						|
# 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 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
 | 
						|
#
 | 
						|
 |