⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 types.c

📁 libxml,在UNIX/LINUX下非常重要的一个库,为XML相关应用提供方便.目前上载的是最新版本,若要取得最新版本,请参考里面的readme.
💻 C
📖 第 1 页 / 共 2 页
字号:
	}        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 + -