mirror of
https://gitlab.gnome.org/GNOME/libxml2.git
synced 2025-10-18 16:08:59 +03:00
xpointer: Remove support for XPointer locations
The latest spec for what it essentially an XPath extension seems to be this working draft from 2002: https://www.w3.org/TR/xptr-xpointer/ The xpointer() scheme is listed as "being reviewed" in the XPointer registry since at least 2006. libxml2 seems to be the only modern software that tries to implement this spec, but the code has many bugs and quality issues. If you configure --with-legacy, old symbols are retained for ABI compatibility.
This commit is contained in:
103
python/types.c
103
python/types.c
@@ -558,109 +558,6 @@ libxml_xmlXPathObjectPtrWrap(xmlXPathObjectPtr obj)
|
||||
case XPATH_STRING:
|
||||
ret = PY_IMPORT_STRING((char *) obj->stringval);
|
||||
break;
|
||||
#ifdef LIBXML_XPTR_LOCS_ENABLED
|
||||
case XPATH_POINT:
|
||||
{
|
||||
PyObject *node;
|
||||
PyObject *indexIntoNode;
|
||||
PyObject *tuple;
|
||||
|
||||
node = libxml_xmlNodePtrWrap(obj->user);
|
||||
indexIntoNode = PY_IMPORT_INT((long) obj->index);
|
||||
|
||||
tuple = PyTuple_New(2);
|
||||
PyTuple_SetItem(tuple, 0, node);
|
||||
PyTuple_SetItem(tuple, 1, indexIntoNode);
|
||||
|
||||
ret = tuple;
|
||||
break;
|
||||
}
|
||||
case XPATH_RANGE:
|
||||
{
|
||||
unsigned short bCollapsedRange;
|
||||
|
||||
bCollapsedRange = ( (obj->user2 == NULL) ||
|
||||
((obj->user2 == obj->user) && (obj->index == obj->index2)) );
|
||||
if ( bCollapsedRange ) {
|
||||
PyObject *node;
|
||||
PyObject *indexIntoNode;
|
||||
PyObject *tuple;
|
||||
PyObject *list;
|
||||
|
||||
list = PyList_New(1);
|
||||
|
||||
node = libxml_xmlNodePtrWrap(obj->user);
|
||||
indexIntoNode = PY_IMPORT_INT((long) obj->index);
|
||||
|
||||
tuple = PyTuple_New(2);
|
||||
PyTuple_SetItem(tuple, 0, node);
|
||||
PyTuple_SetItem(tuple, 1, indexIntoNode);
|
||||
|
||||
PyList_SetItem(list, 0, tuple);
|
||||
|
||||
ret = list;
|
||||
} else {
|
||||
PyObject *node;
|
||||
PyObject *indexIntoNode;
|
||||
PyObject *tuple;
|
||||
PyObject *list;
|
||||
|
||||
list = PyList_New(2);
|
||||
|
||||
node = libxml_xmlNodePtrWrap(obj->user);
|
||||
indexIntoNode = PY_IMPORT_INT((long) obj->index);
|
||||
|
||||
tuple = PyTuple_New(2);
|
||||
PyTuple_SetItem(tuple, 0, node);
|
||||
PyTuple_SetItem(tuple, 1, indexIntoNode);
|
||||
|
||||
PyList_SetItem(list, 0, tuple);
|
||||
|
||||
node = libxml_xmlNodePtrWrap(obj->user2);
|
||||
indexIntoNode = PY_IMPORT_INT((long) obj->index2);
|
||||
|
||||
tuple = PyTuple_New(2);
|
||||
PyTuple_SetItem(tuple, 0, node);
|
||||
PyTuple_SetItem(tuple, 1, indexIntoNode);
|
||||
|
||||
PyList_SetItem(list, 1, tuple);
|
||||
|
||||
ret = list;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case XPATH_LOCATIONSET:
|
||||
{
|
||||
xmlLocationSetPtr set;
|
||||
|
||||
set = obj->user;
|
||||
if ( set && set->locNr > 0 ) {
|
||||
int i;
|
||||
PyObject *list;
|
||||
|
||||
list = PyList_New(set->locNr);
|
||||
|
||||
for (i=0; i<set->locNr; i++) {
|
||||
xmlXPathObjectPtr setobj;
|
||||
PyObject *pyobj;
|
||||
|
||||
setobj = set->locTab[i]; /*xmlXPathObjectPtr setobj*/
|
||||
|
||||
pyobj = libxml_xmlXPathObjectPtrWrap(setobj);
|
||||
/* xmlXPathFreeObject(setobj) is called */
|
||||
set->locTab[i] = NULL;
|
||||
|
||||
PyList_SetItem(list, i, pyobj);
|
||||
}
|
||||
set->locNr = 0;
|
||||
ret = list;
|
||||
} else {
|
||||
Py_INCREF(Py_None);
|
||||
ret = Py_None;
|
||||
}
|
||||
break;
|
||||
}
|
||||
#endif /* LIBXML_XPTR_LOCS_ENABLED */
|
||||
default:
|
||||
Py_INCREF(Py_None);
|
||||
ret = Py_None;
|
||||
|
Reference in New Issue
Block a user