[Lxml-checkins] r46651 - lxml/trunk/src/lxml
scoder at codespeak.net
scoder at codespeak.net
Sat Sep 15 21:14:42 CEST 2007
Author: scoder
Date: Sat Sep 15 21:14:42 2007
New Revision: 46651
Modified:
lxml/trunk/src/lxml/docloader.pxi
lxml/trunk/src/lxml/iterparse.pxi
lxml/trunk/src/lxml/parser.pxi
lxml/trunk/src/lxml/xslt.pxi
Log:
rewrite of _ParserContext init code - use functions instead of __init__
Modified: lxml/trunk/src/lxml/docloader.pxi
==============================================================================
--- lxml/trunk/src/lxml/docloader.pxi (original)
+++ lxml/trunk/src/lxml/docloader.pxi Sat Sep 15 21:14:42 2007
@@ -94,14 +94,15 @@
cdef class _ResolverContext(_ExceptionContext):
cdef _ResolverRegistry _resolvers
cdef _TempStore _storage
- def __init__(self, _ResolverRegistry resolvers):
- _ExceptionContext.__init__(self)
- if resolvers is None:
- self._resolvers = _ResolverRegistry()
- else:
- self._resolvers = resolvers
- self._storage = _TempStore()
cdef void clear(self):
_ExceptionContext.clear(self)
self._storage.clear()
+
+cdef _initResolverContext(_ResolverContext context,
+ _ResolverRegistry resolvers):
+ if resolvers is None:
+ context._resolvers = _ResolverRegistry()
+ else:
+ context._resolvers = resolvers
+ context._storage = _TempStore()
Modified: lxml/trunk/src/lxml/iterparse.pxi
==============================================================================
--- lxml/trunk/src/lxml/iterparse.pxi (original)
+++ lxml/trunk/src/lxml/iterparse.pxi Sat Sep 15 21:14:42 2007
@@ -65,7 +65,6 @@
cdef char* _tag_name
def __init__(self):
- _ParserContext.__init__(self)
self._ns_stack = []
self._pop_ns = self._ns_stack.pop
self._node_stack = []
Modified: lxml/trunk/src/lxml/parser.pxi
==============================================================================
--- lxml/trunk/src/lxml/parser.pxi (original)
+++ lxml/trunk/src/lxml/parser.pxi Sat Sep 15 21:14:42 2007
@@ -378,14 +378,11 @@
cdef class _ParserContext(_ResolverContext):
cdef _ErrorLog _error_log
cdef xmlparser.xmlParserCtxt* _c_ctxt
- def __init__(self):
- _ResolverContext.__init__(self, None)
- self._error_log = _ErrorLog()
cdef _ParserContext _copy(self):
cdef _ParserContext context
context = self.__class__()
- context._resolvers = self._resolvers._copy()
+ _initParserContext(context, self._resolvers._copy(), NULL)
return context
cdef void _initParserContext(self, xmlparser.xmlParserCtxt* c_ctxt):
@@ -407,7 +404,15 @@
recover = parser._parse_options & xmlparser.XML_PARSE_RECOVER
return _handleParseResult(self, self._c_ctxt, result,
filename, recover)
-
+
+cdef _initParserContext(_ParserContext context,
+ _ResolverRegistry resolvers,
+ xmlparser.xmlParserCtxt* c_ctxt):
+ _initResolverContext(context, resolvers)
+ if c_ctxt is not NULL:
+ context._initParserContext(c_ctxt)
+ context._error_log = _ErrorLog()
+
cdef int _raiseParseError(xmlparser.xmlParserCtxt* ctxt, filename,
_ErrorLog error_log) except 0:
@@ -509,7 +514,7 @@
python.PyErr_NoMemory()
self._context = self._createContext(target)
- self._context._initParserContext(pctxt)
+ _initParserContext(self._context, None, pctxt)
if remove_comments:
pctxt.sax.comment = NULL
@@ -594,7 +599,7 @@
parser._parse_options = self._parse_options
parser._class_lookup = self._class_lookup
parser._context = self._context._copy()
- parser._parser_ctxt._private = <python.PyObject*>parser._context
+ parser._context._initParserContext(parser._parser_ctxt)
return parser
def copy(self):
Modified: lxml/trunk/src/lxml/xslt.pxi
==============================================================================
--- lxml/trunk/src/lxml/xslt.pxi (original)
+++ lxml/trunk/src/lxml/xslt.pxi Sat Sep 15 21:14:42 2007
@@ -50,17 +50,20 @@
cdef class _XSLTResolverContext(_ResolverContext):
cdef xmlDoc* _c_style_doc
cdef _BaseParser _parser
- def __init__(self, _BaseParser parser not None):
- _ResolverContext.__init__(self, parser.resolvers)
- self._parser = parser
- self._c_style_doc = NULL
cdef _XSLTResolverContext _copy(self):
cdef _XSLTResolverContext context
- context = _XSLTResolverContext(self._parser)
+ context = _XSLTResolverContext()
+ _initXSLTResolverContext(context, self._parser)
context._c_style_doc = self._c_style_doc
return context
+cdef _initXSLTResolverContext(_XSLTResolverContext context,
+ _BaseParser parser):
+ _initResolverContext(context, parser.resolvers)
+ context._parser = parser
+ context._c_style_doc = NULL
+
cdef xmlDoc* _xslt_resolve_stylesheet(char* c_uri, void* context):
cdef xmlDoc* c_doc
c_doc = (<_XSLTResolverContext>context)._c_style_doc
@@ -300,7 +303,8 @@
c_doc.URL = tree.xmlStrdup(_cstr(doc_url_utf))
self._error_log = _ErrorLog()
- self._xslt_resolver_context = _XSLTResolverContext(doc._parser)
+ self._xslt_resolver_context = _XSLTResolverContext()
+ _initXSLTResolverContext(self._xslt_resolver_context, doc._parser)
# keep a copy in case we need to access the stylesheet via 'document()'
self._xslt_resolver_context._c_style_doc = _copyDoc(c_doc, 1)
c_doc._private = <python.PyObject*>self._xslt_resolver_context
More information about the lxml-checkins
mailing list