/home/.cpanm/work/1759492321.34808/XML-LibXML-2.0210
/* $Id: Devel.xs 20 2011-10-11 02:05:01Z jo $ * * This is free software, you may use it and distribute it under the same terms as * Perl itself. * * Copyright 2011 Joachim Zobel * * This module gives external access to the functions needed to create * and use XML::LibXML::Nodes from C functions. These functions are made * accessible from Perl to have cleaner dependencies. * The idea is to pass xmlNode * pointers (as typemapped void *) to and * from Perl and call the functions that turns them to and from * XML::LibXML::Nodes there. * * Be aware that using this module gives you the ability to easily create * segfaults and memory leaks. */ #include "EXTERN.h" #include "perl.h" #include "XSUB.h" #include "ppport.h" #include <stdlib.h> /* XML::LibXML stuff */ #include <libxml/xmlmemory.h> #include "perl-libxml-mm.h" #undef NDEBUG #include <assert.h> static void * xmlMemMallocAtomic(size_t size) { return xmlMallocAtomicLoc(size, "none", 0); } static int debug_memory() { return xmlGcMemSetup( xmlMemFree, xmlMemMalloc, xmlMemMallocAtomic, xmlMemRealloc, xmlMemStrdup); } MODULE = XML::LibXML::Devel PACKAGE = XML::LibXML::Devel PROTOTYPES: DISABLE BOOT: if (getenv("DEBUG_MEMORY")) { debug_memory(); } SV* node_to_perl( n, o = NULL ) void * n void * o PREINIT: xmlNode *node = n; xmlNode *owner = o; CODE: RETVAL = PmmNodeToSv(node , owner?owner->_private:NULL ); OUTPUT: RETVAL void * node_from_perl( sv ) SV *sv PREINIT: xmlNode *n = PmmSvNodeExt(sv, 0); CODE: RETVAL = n; OUTPUT: RETVAL void refcnt_inc( n ) void *n PREINIT: xmlNode *node = n; CODE: PmmREFCNT_inc(((ProxyNode *)(node->_private))); int refcnt_dec( n ) void *n PREINIT: xmlNode *node = n; CODE: RETVAL = PmmREFCNT_dec(((ProxyNode *)(node->_private))); OUTPUT: RETVAL int refcnt( n ) void *n PREINIT: xmlNode *node = n; CODE: RETVAL = PmmREFCNT(((ProxyNode *)(node->_private))); OUTPUT: RETVAL int fix_owner( n, p ) void * n void * p PREINIT: xmlNode *node = n; xmlNode *parent = p; CODE: RETVAL = PmmFixOwner(node->_private , parent->_private); OUTPUT: RETVAL int mem_used() CODE: RETVAL = xmlMemUsed(); OUTPUT: RETVAL
.
Edit
..
Edit
Av_CharPtrPtr.c
Edit
Av_CharPtrPtr.h
Edit
Av_CharPtrPtr.o
Edit
Changes
Edit
Devel.c
Edit
Devel.o
Edit
Devel.xs
Edit
HACKING.txt
Edit
LICENSE
Edit
LibXML.bs
Edit
LibXML.c
Edit
LibXML.o
Edit
LibXML.pm
Edit
LibXML.pod
Edit
LibXML.xs
Edit
MANIFEST
Edit
META.json
Edit
META.yml
Edit
MYMETA.json
Edit
MYMETA.yml
Edit
Makefile
Edit
Makefile.PL
Edit
README
Edit
TODO
Edit
blib
Edit
debian
Edit
docs
Edit
dom.c
Edit
dom.h
Edit
dom.o
Edit
example
Edit
lib
Edit
perl-libxml-mm.c
Edit
perl-libxml-mm.h
Edit
perl-libxml-mm.o
Edit
perl-libxml-sax.c
Edit
perl-libxml-sax.h
Edit
perl-libxml-sax.o
Edit
pm_to_blib
Edit
ppport.h
Edit
scripts
Edit
t
Edit
test
Edit
typemap
Edit
xpath.c
Edit
xpath.h
Edit
xpath.o
Edit
xpathcontext.h
Edit