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

📄 types.c

📁 xml开源解析代码.版本为libxml2-2.6.29,可支持GB3212.网络消息发送XML时很有用.
💻 C
📖 第 1 页 / 共 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 = PyInt_FromLong((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 = PyInt_FromLong((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;        }        default:#ifdef DEBUG            printf("Unable to convert XPath object type %d\n", obj->type);#endif            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 PyInt_Check(obj) {        ret = xmlXPathNewFloat((double) PyInt_AS_LONG(obj));#ifdef PyBool_Check    } else if PyBool_Check (obj) {        if (obj == Py_True) {          ret = xmlXPathNewBoolean(1);        }        else {          ret = xmlXPathNewBoolean(0);        }#endif    } 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)) {#ifdef DEBUG                printf("Got a CObject\n");#endif                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 {#ifdef DEBUG                printf("Unknown object in Python return list\n");#endif            }            if (cur != NULL) {                xmlXPathNodeSetAdd(set, cur);            }        }        ret = xmlXPathWrapNodeSet(set);    } else {#ifdef DEBUG        printf("Unable to convert Python Object to XPath");#endif    }    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 + -