libxml-sax 0.7.3 → 0.7.4
raw patch · 4 files changed
+34/−3 lines, 4 files
Files
- cbits/hslibxml-shim.c +25/−0
- cbits/hslibxml-shim.h +3/−0
- lib/Text/XML/LibXML/SAX.hs +4/−1
- libxml-sax.cabal +2/−2
cbits/hslibxml-shim.c view
@@ -4,6 +4,10 @@ #include <string.h> #include <stdio.h> +/* for hslibxml_parse_complete */+#include <libxml/parserInternals.h>++ typedef struct UserData UserData; struct UserData {@@ -52,6 +56,27 @@ hslibxml_free_parser(xmlParserCtxt *ctx) { xmlFreeParserCtxt(ctx);+}++int+hslibxml_parse_complete(xmlParserCtxt *ctx) {+ xmlParserInputPtr input;+ int rc;+ + rc = xmlParseChunk(ctx, NULL, 0, 1);+ + /* Optimization: delete input stream buffers when there's nothing+ * more to be parsed.+ *+ * These buffers can be quite large, so if they are retained until the+ * Haskell garbage collector runs hslibxml_free_parser, then memory+ * use might become very large when parsing many documents in a loop.+ */+ while ((input = inputPop(ctx)) != NULL) {+ xmlFreeInputStream(input);+ }+ + return rc; } int
cbits/hslibxml-shim.h view
@@ -13,6 +13,9 @@ hslibxml_free_parser(xmlParserCtxt *ctx); int+hslibxml_parse_complete(xmlParserCtxt *ctx);++int hslibxml_want_callback(xmlParserCtxt *ctx, void *cb_ctx); internalSubsetSAXFunc
lib/Text/XML/LibXML/SAX.hs view
@@ -132,7 +132,7 @@ -- closed correctly. -- parseComplete :: Parser m -> m ()-parseComplete p = parseImpl p (\h -> cParseChunk h nullPtr 0 1)+parseComplete p = parseImpl p (\h -> cParseComplete h) -- Callbacks {{{ @@ -634,6 +634,9 @@ foreign import ccall safe "libxml/parser.h xmlParseChunk" cParseChunk :: Ptr Context -> CString -> CInt -> CInt -> IO CInt++foreign import ccall safe "hslibxml-shim.h hslibxml_parse_complete"+ cParseComplete :: Ptr Context -> IO CInt foreign import ccall safe "libxml/parser.h xmlStopParser" cStopParser :: Ptr Context -> IO ()
libxml-sax.cabal view
@@ -1,5 +1,5 @@ name: libxml-sax-version: 0.7.3+version: 0.7.4 license: MIT license-file: license.txt author: John Millikin@@ -25,7 +25,7 @@ source-repository this type: bazaar location: https://john-millikin.com/branches/haskell-libxml-sax/0.7/- tag: haskell-libxml-sax_0.7.3+ tag: haskell-libxml-sax_0.7.4 library hs-source-dirs: lib