📄 types.c
字号:
} case XPATH_NODESET: if ((obj->nodesetval == NULL) || (obj->nodesetval->nodeNr == 0)) { ret = PyList_New(0); } else { int i; xmlNodePtr node; ret = PyList_New(obj->nodesetval->nodeNr); for (i = 0; i < obj->nodesetval->nodeNr; i++) { node = obj->nodesetval->nodeTab[i]; /* TODO: try to cast directly to the proper node type */ PyList_SetItem(ret, i, libxml_xmlNodePtrWrap(node)); } } break; case XPATH_BOOLEAN: ret = PyInt_FromLong((long) obj->boolval); break; case XPATH_NUMBER: ret = PyFloat_FromDouble(obj->floatval); break; case XPATH_STRING: ret = PyString_FromString((char *) obj->stringval); break; case XPATH_POINT: case XPATH_RANGE: case XPATH_LOCATIONSET: default: printf("Unable to convert XPath object type %d\n", obj->type); Py_INCREF(Py_None); ret = Py_None; } xmlXPathFreeObject(obj); return (ret);}xmlXPathObjectPtrlibxml_xmlXPathObjectPtrConvert(PyObject * obj){ xmlXPathObjectPtr ret = NULL;#ifdef DEBUG printf("libxml_xmlXPathObjectPtrConvert: obj = %p\n", obj);#endif if (obj == NULL) { return (NULL); } if PyFloat_Check (obj) { ret = xmlXPathNewFloat((double) PyFloat_AS_DOUBLE(obj)); } else if PyString_Check (obj) { xmlChar *str; str = xmlStrndup((const xmlChar *) PyString_AS_STRING(obj), PyString_GET_SIZE(obj)); ret = xmlXPathWrapString(str); } else if PyList_Check (obj) { int i; PyObject *node; xmlNodePtr cur; xmlNodeSetPtr set; set = xmlXPathNodeSetCreate(NULL); for (i = 0; i < PyList_Size(obj); i++) { node = PyList_GetItem(obj, i); if ((node == NULL) || (node->ob_type == NULL)) continue; cur = NULL; if (PyCObject_Check(node)) { printf("Got a CObject\n"); cur = PyxmlNode_Get(node); } else if (PyInstance_Check(node)) { PyInstanceObject *inst = (PyInstanceObject *) node; PyObject *name = inst->in_class->cl_name; if PyString_Check (name) { char *type = PyString_AS_STRING(name); PyObject *wrapper; if (!strcmp(type, "xmlNode")) { wrapper = PyObject_GetAttrString(node, (char *) "_o"); if (wrapper != NULL) { cur = PyxmlNode_Get(wrapper); } } } } else { printf("Unknown object in Python return list\n"); } if (cur != NULL) { xmlXPathNodeSetAdd(set, cur); } } ret = xmlXPathWrapNodeSet(set); } else { printf("Unable to convert Python Object to XPath"); } Py_DECREF(obj); return (ret);}PyObject *libxml_xmlValidCtxtPtrWrap(xmlValidCtxtPtr valid){ PyObject *ret; #ifdef DEBUG printf("libxml_xmlValidCtxtPtrWrap: valid = %p\n", valid);#endif if (valid == NULL) { Py_INCREF(Py_None); return (Py_None); } ret = PyCObject_FromVoidPtrAndDesc((void *) valid, (char *) "xmlValidCtxtPtr", NULL); return (ret);}PyObject *libxml_xmlCatalogPtrWrap(xmlCatalogPtr catal){ PyObject *ret;#ifdef DEBUG printf("libxml_xmlNodePtrWrap: catal = %p\n", catal);#endif if (catal == NULL) { Py_INCREF(Py_None); return (Py_None); } ret = PyCObject_FromVoidPtrAndDesc((void *) catal, (char *) "xmlCatalogPtr", NULL); return (ret);}PyObject *libxml_xmlOutputBufferPtrWrap(xmlOutputBufferPtr buffer){ PyObject *ret;#ifdef DEBUG printf("libxml_xmlOutputBufferPtrWrap: buffer = %p\n", buffer);#endif if (buffer == NULL) { Py_INCREF(Py_None); return (Py_None); } ret = PyCObject_FromVoidPtrAndDesc((void *) buffer, (char *) "xmlOutputBufferPtr", NULL); return (ret);}PyObject *libxml_xmlParserInputBufferPtrWrap(xmlParserInputBufferPtr buffer){ PyObject *ret;#ifdef DEBUG printf("libxml_xmlParserInputBufferPtrWrap: buffer = %p\n", buffer);#endif if (buffer == NULL) { Py_INCREF(Py_None); return (Py_None); } ret = PyCObject_FromVoidPtrAndDesc((void *) buffer, (char *) "xmlParserInputBufferPtr", NULL); return (ret);}#ifdef LIBXML_REGEXP_ENABLEDPyObject *libxml_xmlRegexpPtrWrap(xmlRegexpPtr regexp){ PyObject *ret;#ifdef DEBUG printf("libxml_xmlRegexpPtrWrap: regexp = %p\n", regexp);#endif if (regexp == NULL) { Py_INCREF(Py_None); return (Py_None); } ret = PyCObject_FromVoidPtrAndDesc((void *) regexp, (char *) "xmlRegexpPtr", NULL); return (ret);}#endif /* LIBXML_REGEXP_ENABLED */PyObject *libxml_xmlTextReaderPtrWrap(xmlTextReaderPtr reader){ PyObject *ret;#ifdef DEBUG printf("libxml_xmlTextReaderPtrWrap: reader = %p\n", reader);#endif if (reader == NULL) { Py_INCREF(Py_None); return (Py_None); } ret = PyCObject_FromVoidPtrAndDesc((void *) reader, (char *) "xmlTextReaderPtr", NULL); return (ret);}PyObject *libxml_xmlTextReaderLocatorPtrWrap(xmlTextReaderLocatorPtr locator){ PyObject *ret;#ifdef DEBUG printf("libxml_xmlTextReaderLocatorPtrWrap: locator = %p\n", locator);#endif if (locator == NULL) { Py_INCREF(Py_None); return (Py_None); } ret = PyCObject_FromVoidPtrAndDesc((void *) locator, (char *) "xmlTextReaderLocatorPtr", NULL); return (ret);}#ifdef LIBXML_SCHEMAS_ENABLEDPyObject *libxml_xmlRelaxNGPtrWrap(xmlRelaxNGPtr ctxt){ PyObject *ret;#ifdef DEBUG printf("libxml_xmlRelaxNGPtrWrap: ctxt = %p\n", ctxt);#endif if (ctxt == NULL) { Py_INCREF(Py_None); return (Py_None); } ret = PyCObject_FromVoidPtrAndDesc((void *) ctxt, (char *) "xmlRelaxNGPtr", NULL); return (ret);}PyObject *libxml_xmlRelaxNGParserCtxtPtrWrap(xmlRelaxNGParserCtxtPtr ctxt){ PyObject *ret;#ifdef DEBUG printf("libxml_xmlRelaxNGParserCtxtPtrWrap: ctxt = %p\n", ctxt);#endif if (ctxt == NULL) { Py_INCREF(Py_None); return (Py_None); } ret = PyCObject_FromVoidPtrAndDesc((void *) ctxt, (char *) "xmlRelaxNGParserCtxtPtr", NULL); return (ret);}PyObject *libxml_xmlRelaxNGValidCtxtPtrWrap(xmlRelaxNGValidCtxtPtr valid){ PyObject *ret;#ifdef DEBUG printf("libxml_xmlRelaxNGValidCtxtPtrWrap: valid = %p\n", valid);#endif if (valid == NULL) { Py_INCREF(Py_None); return (Py_None); } ret = PyCObject_FromVoidPtrAndDesc((void *) valid, (char *) "xmlRelaxNGValidCtxtPtr", NULL); return (ret);}PyObject *libxml_xmlSchemaPtrWrap(xmlSchemaPtr ctxt){ PyObject *ret;#ifdef DEBUG printf("libxml_xmlSchemaPtrWrap: ctxt = %p\n", ctxt);#endif if (ctxt == NULL) { Py_INCREF(Py_None); return (Py_None); } ret = PyCObject_FromVoidPtrAndDesc((void *) ctxt, (char *) "xmlSchemaPtr", NULL); return (ret);}PyObject *libxml_xmlSchemaParserCtxtPtrWrap(xmlSchemaParserCtxtPtr ctxt){ PyObject *ret;#ifdef DEBUG printf("libxml_xmlSchemaParserCtxtPtrWrap: ctxt = %p\n", ctxt);#endif if (ctxt == NULL) { Py_INCREF(Py_None); return (Py_None); } ret = PyCObject_FromVoidPtrAndDesc((void *) ctxt, (char *) "xmlSchemaParserCtxtPtr", NULL); return (ret);}PyObject *libxml_xmlSchemaValidCtxtPtrWrap(xmlSchemaValidCtxtPtr valid){ PyObject *ret; #ifdef DEBUG printf("libxml_xmlSchemaValidCtxtPtrWrap: valid = %p\n", valid);#endif if (valid == NULL) { Py_INCREF(Py_None); return (Py_None); } ret = PyCObject_FromVoidPtrAndDesc((void *) valid, (char *) "xmlSchemaValidCtxtPtr", NULL); return (ret);}#endif /* LIBXML_SCHEMAS_ENABLED */PyObject *libxml_xmlErrorPtrWrap(xmlErrorPtr error){ PyObject *ret;#ifdef DEBUG printf("libxml_xmlErrorPtrWrap: error = %p\n", error);#endif if (error == NULL) { Py_INCREF(Py_None); return (Py_None); } ret = PyCObject_FromVoidPtrAndDesc((void *) error, (char *) "xmlErrorPtr", NULL); return (ret);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -