Blame | Last modification | View Log | Download | RSS feed
#ifndef NODEGC_H#define NODEGC_H#if 1/*We use the address of a global variable as a marker/signature thatindicates we created the value of _private.*/extern int R_XML_MemoryMgrMarker;extern int R_XML_NoMemoryMgmt;#define R_MEMORY_MANAGER_MARKER R_XML_MemoryMgrMarker#define IS_NOT_OUR_DOC_TO_TOUCH(doc) (doc->_private == NULL || (doc->_private && doc->_private == &R_XML_NoMemoryMgmt) || ((int*)doc->_private)[1] != R_MEMORY_MANAGER_MARKER)#define IS_NOT_OUR_NODE_TO_TOUCH(node) ((node->_private == NULL) || (node->doc && node->doc->_private && node->doc->_private == &R_XML_NoMemoryMgmt) || ((int*)node->_private)[1] != R_MEMORY_MANAGER_MARKER)#else/* Not used. */#define IS_NOT_OUR_DOC_TO_TOUCH(doc) (doc && doc->name && strcmp((doc)->name, " fake node libxslt") == 0)#define IS_NOT_OUR_NODE_TO_TOUCH(node) (node && (node)->doc && IS_NOT_OUR_DOC_TO_TOUCH((node)->doc))#endifvoid decrementNodeRefCount(SEXP rnode);void initDocRefCounter(xmlDocPtr doc);void decrementNodeRefCount(SEXP rnode);#endif