diff options
author | Fred Drake <fdrake@acm.org> | 2000-07-12 04:49:00 (GMT) |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 2000-07-12 04:49:00 (GMT) |
commit | 0582df98d3fe7dff7d5fcb06adc391b2fa2bb44d (patch) | |
tree | 7fcc8220641d83d34030061736ac3f4283b1212b /Modules | |
parent | cc1be2401e49dc278347002761e32582eb140bed (diff) | |
download | cpython-0582df98d3fe7dff7d5fcb06adc391b2fa2bb44d.zip cpython-0582df98d3fe7dff7d5fcb06adc391b2fa2bb44d.tar.gz cpython-0582df98d3fe7dff7d5fcb06adc391b2fa2bb44d.tar.bz2 |
Convert coding style to be internally consistent and similar to the
rest of the Python C code: space between "if", "for" and "(", no space
between "(", ")" and function call parameters, etc.
Diffstat (limited to 'Modules')
-rw-r--r-- | Modules/pyexpat.c | 1076 |
1 files changed, 531 insertions, 545 deletions
diff --git a/Modules/pyexpat.c b/Modules/pyexpat.c index 05bb703..c72b738 100644 --- a/Modules/pyexpat.c +++ b/Modules/pyexpat.c @@ -22,22 +22,22 @@ redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. */ #define VERSION "1.9" -enum HandlerTypes{ - StartElement, - EndElement, - ProcessingInstruction, - CharacterData, - UnparsedEntityDecl, - NotationDecl, - StartNamespaceDecl, - EndNamespaceDecl, - Comment, - StartCdataSection, - EndCdataSection, - Default, - DefaultHandlerExpand, - NotStandalone, - ExternalEntityRef +enum HandlerTypes { + StartElement, + EndElement, + ProcessingInstruction, + CharacterData, + UnparsedEntityDecl, + NotationDecl, + StartNamespaceDecl, + EndNamespaceDecl, + Comment, + StartCdataSection, + EndCdataSection, + Default, + DefaultHandlerExpand, + NotStandalone, + ExternalEntityRef }; static PyObject *ErrorObject; @@ -47,12 +47,12 @@ static PyObject *ErrorObject; /* Declarations for objects of type xmlparser */ typedef struct { - PyObject_HEAD + PyObject_HEAD - XML_Parser itself; - int returns_unicode; /* True if Unicode strings are returned; - if false, UTF-8 strings are returned */ - PyObject **handlers; + XML_Parser itself; + int returns_unicode; /* True if Unicode strings are returned; + if false, UTF-8 strings are returned */ + PyObject **handlers; } xmlparseobject; staticforward PyTypeObject Xmlparsetype; @@ -61,112 +61,126 @@ typedef void (*xmlhandlersetter)( XML_Parser *self, void *meth ); typedef void* xmlhandler; struct HandlerInfo { - const char *name; - xmlhandlersetter setter; - xmlhandler handler; + const char *name; + xmlhandlersetter setter; + xmlhandler handler; }; staticforward struct HandlerInfo handler_info[64]; /* Convert an array of attributes and their values into a Python dict */ -static PyObject *conv_atts_using_string(XML_Char **atts) +static PyObject * +conv_atts_using_string(XML_Char **atts) { - PyObject *attrs_obj = NULL; - XML_Char **attrs_p, **attrs_k = NULL; - int attrs_len; - PyObject *rv; - - if ((attrs_obj = PyDict_New()) == NULL) - goto finally; - for (attrs_len = 0, attrs_p = atts; - *attrs_p; - attrs_p++, attrs_len++) { - if (attrs_len % 2) { - rv = PyString_FromString(*attrs_p); - if (! rv) { - Py_DECREF(attrs_obj); - attrs_obj = NULL; - goto finally; - } - if (PyDict_SetItemString(attrs_obj, - (char*)*attrs_k, rv) < 0) { - Py_DECREF(attrs_obj); - attrs_obj = NULL; - goto finally; - } - Py_DECREF(rv); - } - else - attrs_k = attrs_p; - } - finally: - return attrs_obj; + PyObject *attrs_obj = NULL; + XML_Char **attrs_p, **attrs_k = NULL; + int attrs_len; + PyObject *rv; + + if ((attrs_obj = PyDict_New()) == NULL) + goto finally; + for (attrs_len = 0, attrs_p = atts; + *attrs_p; + attrs_p++, attrs_len++) { + if (attrs_len % 2) { + rv = PyString_FromString(*attrs_p); + if (!rv) { + Py_DECREF(attrs_obj); + attrs_obj = NULL; + goto finally; + } + if (PyDict_SetItemString(attrs_obj, + (char*)*attrs_k, rv) < 0) { + Py_DECREF(attrs_obj); + attrs_obj = NULL; + goto finally; + } + Py_DECREF(rv); + } + else + attrs_k = attrs_p; + } + finally: + return attrs_obj; } #if !(PY_MAJOR_VERSION == 1 && PY_MINOR_VERSION < 6) -static PyObject *conv_atts_using_unicode( XML_Char **atts){ - PyObject *attrs_obj=NULL; - XML_Char **attrs_p, **attrs_k = NULL; - int attrs_len; +static PyObject * +conv_atts_using_unicode(XML_Char **atts) +{ + PyObject *attrs_obj = NULL; + XML_Char **attrs_p, **attrs_k = NULL; + int attrs_len; - if( (attrs_obj = PyDict_New()) == NULL ) + if ((attrs_obj = PyDict_New()) == NULL) + goto finally; + for (attrs_len = 0, attrs_p = atts; + *attrs_p; + attrs_p++, attrs_len++) { + if (attrs_len % 2) { + PyObject *attr_str, *value_str; + const char *p = (const char *) (*attrs_k); + attr_str = PyUnicode_DecodeUTF8(p, strlen(p), "strict"); + if (!attr_str) { + Py_DECREF(attrs_obj); + attrs_obj = NULL; + goto finally; + } + p = (const char *) *attrs_p; + value_str = PyUnicode_DecodeUTF8(p, strlen(p), "strict"); + if (!value_str) { + Py_DECREF(attrs_obj); + Py_DECREF(attr_str); + attrs_obj = NULL; goto finally; - for(attrs_len=0, attrs_p = atts; - *attrs_p; - attrs_p++, attrs_len++) { - if (attrs_len%2) { - PyObject *attr_str, *value_str; - const char *p = (const char *) (*attrs_k); - attr_str=PyUnicode_DecodeUTF8(p, strlen(p), "strict"); - if (! attr_str) { - Py_DECREF(attrs_obj); - attrs_obj=NULL; - goto finally; - } - p = (const char *) *attrs_p; - value_str=PyUnicode_DecodeUTF8(p, strlen(p), "strict"); - if (! value_str) { - Py_DECREF(attrs_obj); - Py_DECREF(attr_str); - attrs_obj=NULL; - goto finally; - } - if (PyDict_SetItem(attrs_obj, attr_str, value_str) < 0) { - Py_DECREF(attrs_obj); - attrs_obj=NULL; - goto finally; - } - Py_DECREF(attr_str); - Py_DECREF(value_str); - } - else attrs_k=attrs_p; + } + if (PyDict_SetItem(attrs_obj, attr_str, value_str) < 0) { + Py_DECREF(attrs_obj); + attrs_obj = NULL; + goto finally; + } + Py_DECREF(attr_str); + Py_DECREF(value_str); } - finally: - return attrs_obj; + else + attrs_k = attrs_p; + } + finally: + return attrs_obj; } /* Convert a string of XML_Chars into a Unicode string. Returns None if str is a null pointer. */ -static PyObject *conv_string_to_unicode( XML_Char *str ) { - /* XXX currently this code assumes that XML_Char is 8-bit, - and hence in UTF-8. */ - /* UTF-8 from Expat, Unicode desired */ - if (str == NULL) {Py_INCREF(Py_None); return Py_None;} - return PyUnicode_DecodeUTF8( (const char *)str, - strlen( (const char *)str ), - "strict" ); +static PyObject * +conv_string_to_unicode(XML_Char *str) +{ + /* XXX currently this code assumes that XML_Char is 8-bit, + and hence in UTF-8. */ + /* UTF-8 from Expat, Unicode desired */ + if (str == NULL) { + Py_INCREF(Py_None); + return Py_None; + } + return PyUnicode_DecodeUTF8((const char *)str, + strlen((const char *)str), + "strict"); } -static PyObject *conv_string_len_to_unicode( const XML_Char *str, int len ) { - /* XXX currently this code assumes that XML_Char is 8-bit, - and hence in UTF-8. */ - /* UTF-8 from Expat, Unicode desired */ - if (str == NULL) {Py_INCREF(Py_None); return Py_None;} - return PyUnicode_DecodeUTF8( (const char *)str, - len, - "strict" ); +static PyObject * +conv_string_len_to_unicode(const XML_Char *str, int len) +{ + /* XXX currently this code assumes that XML_Char is 8-bit, + and hence in UTF-8. */ + /* UTF-8 from Expat, Unicode desired */ + if (str == NULL) { + Py_INCREF(Py_None); + return Py_None; + } + return PyUnicode_DecodeUTF8((const char *)str, + len, + "strict"); } #endif @@ -406,198 +420,180 @@ finally: */ - - /* ---------------------------------------------------------------- */ static char xmlparse_Parse__doc__[] = -"(data [,isfinal]) - Parse XML data" -; +"Parse(data[, isfinal]) +Parse XML data. `isfinal' should be true at end of input."; static PyObject * -xmlparse_Parse( xmlparseobject *self, PyObject *args ) +xmlparse_Parse(xmlparseobject *self, PyObject *args) { - char *s; - int slen; - int isFinal = 0; - int rv; - - if (!PyArg_ParseTuple(args, "s#|i", &s, &slen, &isFinal)) - return NULL; - rv = XML_Parse(self->itself, s, slen, isFinal); - if( PyErr_Occurred() ){ - return NULL; - } - else if (rv == 0) { - PyErr_Format(ErrorObject, "%.200s: line %i, column %i", - XML_ErrorString( XML_GetErrorCode(self->itself) ), - XML_GetErrorLineNumber(self->itself), - XML_GetErrorColumnNumber(self->itself) ); - return NULL; - } + char *s; + int slen; + int isFinal = 0; + int rv; - return Py_BuildValue("i", rv); + if (!PyArg_ParseTuple(args, "s#|i:Parse", &s, &slen, &isFinal)) + return NULL; + rv = XML_Parse(self->itself, s, slen, isFinal); + if (PyErr_Occurred()) { + return NULL; + } + else if (rv == 0) { + PyErr_Format(ErrorObject, "%.200s: line %i, column %i", + XML_ErrorString(XML_GetErrorCode(self->itself)), + XML_GetErrorLineNumber(self->itself), + XML_GetErrorColumnNumber(self->itself)); + return NULL; + } + return PyInt_FromLong(rv); } #define BUF_SIZE 2048 -int readinst(char *buf, int buf_size, PyObject *meth){ - PyObject *arg=NULL; - PyObject *bytes=NULL; - PyObject *str=NULL; - int len = -1; - - UNLESS(bytes = PyInt_FromLong(buf_size)) { - if (!PyErr_Occurred()) - PyErr_SetNone(PyExc_EOFError); - goto finally; - } +static int +readinst(char *buf, int buf_size, PyObject *meth) +{ + PyObject *arg = NULL; + PyObject *bytes = NULL; + PyObject *str = NULL; + int len = -1; - UNLESS(arg) - UNLESS(arg = PyTuple_New(1)) - goto finally; + UNLESS(bytes = PyInt_FromLong(buf_size)) { + if (!PyErr_Occurred()) + PyErr_SetNone(PyExc_EOFError); + goto finally; + } + UNLESS(arg) + UNLESS(arg = PyTuple_New(1)) + goto finally; - if (PyTuple_SetItem(arg, 0, bytes) < 0) - goto finally; + if (PyTuple_SetItem(arg, 0, bytes) < 0) + goto finally; - UNLESS(str = PyObject_CallObject(meth, arg)) - goto finally; + UNLESS(str = PyObject_CallObject(meth, arg)) + goto finally; - /* XXX what to do if it returns a Unicode string? */ - UNLESS(PyString_Check( str )) { - PyErr_Format(PyExc_TypeError, - "read() did not return a string object (type=%.400s)", - str->ob_type->tp_name); - goto finally; - } - - len = PyString_GET_SIZE(str); - if (len > buf_size) { - PyErr_Format(PyExc_ValueError, - "read() returned too much data: " - "%i bytes requested, %i returned", - buf_size, len); - Py_DECREF(str); - goto finally; - } - memcpy(buf, PyString_AsString(str), len); - Py_XDECREF(str); + /* XXX what to do if it returns a Unicode string? */ + UNLESS(PyString_Check( str )) { + PyErr_Format(PyExc_TypeError, + "read() did not return a string object (type=%.400s)", + str->ob_type->tp_name); + goto finally; + } + len = PyString_GET_SIZE(str); + if (len > buf_size) { + PyErr_Format(PyExc_ValueError, + "read() returned too much data: " + "%i bytes requested, %i returned", + buf_size, len); + Py_DECREF(str); + goto finally; + } + memcpy(buf, PyString_AsString(str), len); + Py_XDECREF(str); finally: - Py_XDECREF(arg); - return len; + Py_XDECREF(arg); + return len; } static char xmlparse_ParseFile__doc__[] = -"(file) - Parse XML data" -; +"ParseFile(file) +Parse XML data from file-like object."; static PyObject * -xmlparse_ParseFile( xmlparseobject *self, PyObject *args ) +xmlparse_ParseFile(xmlparseobject *self, PyObject *args) { - int rv=1; - PyObject *f; - FILE *fp; - PyObject *readmethod=NULL; + int rv = 1; + PyObject *f; + FILE *fp; + PyObject *readmethod = NULL; - if (!PyArg_ParseTuple(args, "O", &f)) - return NULL; + if (!PyArg_ParseTuple(args, "O:ParseFile", &f)) + return NULL; - if (PyFile_Check(f)) { - fp = PyFile_AsFile(f); - }else{ - fp = NULL; - UNLESS(readmethod = PyObject_GetAttrString(f, "read")) { - PyErr_Clear(); - PyErr_SetString( PyExc_TypeError, - "argument must have 'read' attribute" ); - return 0; - } - } - - for (;;) { - int bytes_read; - void *buf = XML_GetBuffer(self->itself, BUF_SIZE); - if (buf == NULL) { - PyErr_SetString(PyExc_MemoryError, "out of memory"); - return NULL; - } - - if( fp ){ - bytes_read=fread( buf, sizeof( char ), BUF_SIZE, fp); - if (bytes_read < 0) { - PyErr_SetFromErrno(PyExc_IOError); - return NULL; - } - } else { - bytes_read=readinst( buf, BUF_SIZE, readmethod ); - if (bytes_read < 0) - return NULL; - } - - rv=XML_ParseBuffer(self->itself, bytes_read, bytes_read == 0); - if( PyErr_Occurred() ){ - return NULL; - } - if (!rv || bytes_read == 0) - break; - } + if (PyFile_Check(f)) { + fp = PyFile_AsFile(f); + } + else{ + fp = NULL; + UNLESS(readmethod = PyObject_GetAttrString(f, "read")) { + PyErr_Clear(); + PyErr_SetString(PyExc_TypeError, + "argument must have 'read' attribute"); + return 0; + } + } + for (;;) { + int bytes_read; + void *buf = XML_GetBuffer(self->itself, BUF_SIZE); + if (buf == NULL) + return PyErr_NoMemory(); + + if (fp) { + bytes_read = fread(buf, sizeof(char), BUF_SIZE, fp); + if (bytes_read < 0) { + PyErr_SetFromErrno(PyExc_IOError); + return NULL; + } + } + else { + bytes_read = readinst(buf, BUF_SIZE, readmethod); + if (bytes_read < 0) + return NULL; + } + rv = XML_ParseBuffer(self->itself, bytes_read, bytes_read == 0); + if (PyErr_Occurred()) + return NULL; - return Py_BuildValue("i", rv); + if (!rv || bytes_read == 0) + break; + } + return Py_BuildValue("i", rv); } static char xmlparse_SetBase__doc__[] = -"(base_url) - Base URL string" -; +"SetBase(base_url) +Set the base URL for the parser."; static PyObject * -xmlparse_SetBase( xmlparseobject *self, PyObject *args ){ +xmlparse_SetBase(xmlparseobject *self, PyObject *args) +{ char *base; - if (!PyArg_ParseTuple(args, "s", &base)) + if (!PyArg_ParseTuple(args, "s:SetBase", &base)) return NULL; - if( !XML_SetBase( self->itself, base ) ){ - PyErr_SetNone(PyExc_MemoryError); - return NULL; + if (!XML_SetBase(self->itself, base)) { + return PyErr_NoMemory(); } - Py_INCREF(Py_None); return Py_None; } static char xmlparse_GetBase__doc__[] = -"() - returns base URL string " -; +"GetBase() -> url +Return base URL string for the parser."; static PyObject * -xmlparse_GetBase( xmlparseobject *self, PyObject *args ){ - const XML_Char *base; - PyObject *rc; - - if( PyTuple_Size( args )!=0 ){ - PyArg_ParseTuple(args, "()" ); /* get good error reporting */ +xmlparse_GetBase(xmlparseobject *self, PyObject *args) +{ + if (!PyArg_ParseTuple(args, ":GetBase")) return NULL; - } - base=XML_GetBase( self->itself ); - if( base ){ - rc=Py_BuildValue("s", base); - }else{ - Py_INCREF(Py_None); - rc=Py_None; - } - return rc; + return Py_BuildValue("z", XML_GetBase(self->itself)); } static struct PyMethodDef xmlparse_methods[] = { - {"Parse", (PyCFunction)xmlparse_Parse, - METH_VARARGS, xmlparse_Parse__doc__}, - {"ParseFile", (PyCFunction)xmlparse_ParseFile, - METH_VARARGS, xmlparse_ParseFile__doc__}, - {"SetBase", (PyCFunction)xmlparse_SetBase, - METH_VARARGS, xmlparse_SetBase__doc__}, - {"GetBase", (PyCFunction)xmlparse_GetBase, - METH_VARARGS, xmlparse_GetBase__doc__}, + {"Parse", (PyCFunction)xmlparse_Parse, + METH_VARARGS, xmlparse_Parse__doc__}, + {"ParseFile", (PyCFunction)xmlparse_ParseFile, + METH_VARARGS, xmlparse_ParseFile__doc__}, + {"SetBase", (PyCFunction)xmlparse_SetBase, + METH_VARARGS, xmlparse_SetBase__doc__}, + {"GetBase", (PyCFunction)xmlparse_GetBase, + METH_VARARGS, xmlparse_GetBase__doc__}, {NULL, NULL} /* sentinel */ }; @@ -605,136 +601,135 @@ static struct PyMethodDef xmlparse_methods[] = { static xmlparseobject * -newxmlparseobject( char *encoding, char *namespace_separator){ - int i; - xmlparseobject *self; +newxmlparseobject(char *encoding, char *namespace_separator) +{ + int i; + xmlparseobject *self; #if PY_MAJOR_VERSION == 1 && PY_MINOR_VERSION < 6 - self = PyObject_NEW(xmlparseobject, &Xmlparsetype); - if (self == NULL) - return NULL; + self = PyObject_NEW(xmlparseobject, &Xmlparsetype); + if (self == NULL) + return NULL; - self->returns_unicode = 0; + self->returns_unicode = 0; #else - /* Code for versions 1.6 and later */ - self = PyObject_New(xmlparseobject, &Xmlparsetype); - if (self == NULL) - return NULL; + /* Code for versions 1.6 and later */ + self = PyObject_New(xmlparseobject, &Xmlparsetype); + if (self == NULL) + return NULL; - self->returns_unicode = 1; + self->returns_unicode = 1; #endif - if (namespace_separator) { - self->itself = XML_ParserCreateNS(encoding, - *namespace_separator); - }else{ - self->itself = XML_ParserCreate(encoding); - } - - if( self->itself==NULL ){ - PyErr_SetString(PyExc_RuntimeError, - "XML_ParserCreate failed"); - Py_DECREF(self); - return NULL; - } - - XML_SetUserData(self->itself, (void *)self); - - for( i=0; handler_info[i].name!=NULL;i++); + if (namespace_separator) { + self->itself = XML_ParserCreateNS(encoding, *namespace_separator); + } + else{ + self->itself = XML_ParserCreate(encoding); + } + if (self->itself == NULL) { + PyErr_SetString(PyExc_RuntimeError, + "XML_ParserCreate failed"); + Py_DECREF(self); + return NULL; + } + XML_SetUserData(self->itself, (void *)self); - self->handlers=malloc( sizeof( PyObject *)*i ); + for(i = 0; handler_info[i].name != NULL; i++) + /* do nothing */; - clear_handlers( self ); + self->handlers = malloc(sizeof(PyObject *)*i); + clear_handlers(self); - return self; + return self; } static void -xmlparse_dealloc( xmlparseobject *self ) +xmlparse_dealloc(xmlparseobject *self) { - int i; - if (self->itself) - XML_ParserFree(self->itself); - self->itself = NULL; + int i; + if (self->itself) + XML_ParserFree(self->itself); + self->itself = NULL; - for( i=0; handler_info[i].name!=NULL; i++ ){ - Py_XDECREF( self->handlers[i] ); - } + for (i=0; handler_info[i].name != NULL; i++) { + Py_XDECREF(self->handlers[i]); + } #if PY_MAJOR_VERSION == 1 && PY_MINOR_VERSION < 6 - /* Code for versions before 1.6 */ - free(self); + /* Code for versions before 1.6 */ + free(self); #else - /* Code for versions 1.6 and later */ - PyObject_Del(self); + /* Code for versions 1.6 and later */ + PyObject_Del(self); #endif } -static int handlername2int( const char *name ){ - int i; - for( i=0;handler_info[i].name!=NULL;i++){ - if( strcmp( name, handler_info[i].name )==0 ){ - return i; - } - } - return -1; +static int +handlername2int(const char *name) +{ + int i; + for (i=0; handler_info[i].name != NULL; i++) { + if (strcmp(name, handler_info[i].name) == 0) { + return i; + } + } + return -1; } static PyObject * xmlparse_getattr(xmlparseobject *self, char *name) { - int handlernum; - if (strcmp(name, "ErrorCode") == 0) - return Py_BuildValue("l", - (long)XML_GetErrorCode(self->itself)); - if (strcmp(name, "ErrorLineNumber") == 0) - return Py_BuildValue("l", - (long)XML_GetErrorLineNumber(self->itself)); - if (strcmp(name, "ErrorColumnNumber") == 0) - return Py_BuildValue("l", - (long)XML_GetErrorColumnNumber(self->itself)); - if (strcmp(name, "ErrorByteIndex") == 0) - return Py_BuildValue("l", - XML_GetErrorByteIndex(self->itself)); - if (strcmp(name, "returns_unicode") == 0) - return Py_BuildValue("i", self->returns_unicode); - - handlernum=handlername2int( name ); - - if( handlernum!=-1 && self->handlers[handlernum]!=NULL){ - Py_INCREF( self->handlers[handlernum] ); - return self->handlers[handlernum]; - } - - if (strcmp(name, "__members__") == 0){ - int i; - PyObject *rc=PyList_New(0); - for(i=0; handler_info[i].name!=NULL;i++ ){ - PyList_Append( rc, - PyString_FromString( handler_info[i].name ) ); - } - PyList_Append( rc, PyString_FromString( "ErrorCode" )); - PyList_Append( rc, PyString_FromString( "ErrorLineNumber" )); - PyList_Append( rc, PyString_FromString( "ErrorColumnNumber")); - PyList_Append( rc, PyString_FromString( "ErrorByteIndex" )); - - return rc; - } + int handlernum; + if (strcmp(name, "ErrorCode") == 0) + return Py_BuildValue("l", + (long)XML_GetErrorCode(self->itself)); + if (strcmp(name, "ErrorLineNumber") == 0) + return Py_BuildValue("l", + (long)XML_GetErrorLineNumber(self->itself)); + if (strcmp(name, "ErrorColumnNumber") == 0) + return Py_BuildValue("l", + (long)XML_GetErrorColumnNumber(self->itself)); + if (strcmp(name, "ErrorByteIndex") == 0) + return Py_BuildValue("l", + XML_GetErrorByteIndex(self->itself)); + if (strcmp(name, "returns_unicode") == 0) + return Py_BuildValue("i", self->returns_unicode); + + handlernum = handlername2int(name); + + if (handlernum != -1 && self->handlers[handlernum] != NULL) { + Py_INCREF(self->handlers[handlernum]); + return self->handlers[handlernum]; + } + if (strcmp(name, "__members__") == 0) { + int i; + PyObject *rc = PyList_New(0); + for(i = 0; handler_info[i].name!=NULL; i++) { + PyList_Append(rc, + PyString_FromString(handler_info[i].name)); + } + PyList_Append(rc, PyString_FromString("ErrorCode")); + PyList_Append(rc, PyString_FromString("ErrorLineNumber")); + PyList_Append(rc, PyString_FromString("ErrorColumnNumber")); + PyList_Append(rc, PyString_FromString("ErrorByteIndex")); - return Py_FindMethod(xmlparse_methods, (PyObject *)self, name); + return rc; + } + return Py_FindMethod(xmlparse_methods, (PyObject *)self, name); } -static int sethandler( xmlparseobject *self, const char *name, PyObject* v ){ - int handlernum = handlername2int( name ); - if( handlernum!=-1 ){ - Py_INCREF( v ); - Py_XDECREF( self->handlers[handlernum] ); - self->handlers[handlernum]=v; - handler_info[handlernum].setter( self->itself, - handler_info[handlernum].handler ); - return 1; - } - - return 0; +static int sethandler(xmlparseobject *self, const char *name, PyObject* v) +{ + int handlernum = handlername2int(name); + if (handlernum != -1) { + Py_INCREF(v); + Py_XDECREF(self->handlers[handlernum]); + self->handlers[handlernum] = v; + handler_info[handlernum].setter(self->itself, + handler_info[handlernum].handler); + return 1; + } + return 0; } static int @@ -771,8 +766,7 @@ xmlparse_setattr( xmlparseobject *self, char *name, PyObject *v) } static char Xmlparsetype__doc__[] = -"XML parser" -; +"XML parser"; static PyTypeObject Xmlparsetype = { PyObject_HEAD_INIT(NULL) @@ -804,247 +798,239 @@ static PyTypeObject Xmlparsetype = { static char pyexpat_ParserCreate__doc__[] = -"([encoding, namespace_separator]) - Return a new XML parser object" -; +"ParserCreate([encoding[, namespace_separator]]) -> parser\n\ +Return a new XML parser object."; static PyObject * -pyexpat_ParserCreate(PyObject *notused, PyObject *args, PyObject *kw) { - char *encoding = NULL, *namespace_separator=NULL; +pyexpat_ParserCreate(PyObject *notused, PyObject *args, PyObject *kw) +{ + char *encoding = NULL; + char *namespace_separator = NULL; static char *kwlist[] = {"encoding", "namespace_separator", NULL}; - if (!PyArg_ParseTupleAndKeywords(args, kw, "|zz", kwlist, + if (!PyArg_ParseTupleAndKeywords(args, kw, "|zz:ParserCreate", kwlist, &encoding, &namespace_separator)) return NULL; return (PyObject *)newxmlparseobject(encoding, namespace_separator); } static char pyexpat_ErrorString__doc__[] = -"(errno) Returns string error for given number" -; +"ErrorString(errno) -> string\n\ +Returns string error for given number."; static PyObject * -pyexpat_ErrorString(self, args) - PyObject *self; /* Not used */ - PyObject *args; +pyexpat_ErrorString(PyObject *self, PyObject *args) { - long code; - - if (!PyArg_ParseTuple(args, "l", &code)) - return NULL; - return Py_BuildValue("z", XML_ErrorString((int)code)); + long code = 0; + + if (!PyArg_ParseTuple(args, "l:ErrorString", &code)) + return NULL; + return Py_BuildValue("z", XML_ErrorString((int)code)); } /* List of methods defined in the module */ static struct PyMethodDef pyexpat_methods[] = { - {"ParserCreate", (PyCFunction)pyexpat_ParserCreate, - METH_VARARGS|METH_KEYWORDS, pyexpat_ParserCreate__doc__}, - {"ErrorString", (PyCFunction)pyexpat_ErrorString, - METH_VARARGS, pyexpat_ErrorString__doc__}, + {"ParserCreate", (PyCFunction)pyexpat_ParserCreate, + METH_VARARGS|METH_KEYWORDS, pyexpat_ParserCreate__doc__}, + {"ErrorString", (PyCFunction)pyexpat_ErrorString, + METH_VARARGS, pyexpat_ErrorString__doc__}, - {NULL, (PyCFunction)NULL, 0, NULL} /* sentinel */ + {NULL, (PyCFunction)NULL, 0, NULL} /* sentinel */ }; /* Module docstring */ static char pyexpat_module_documentation[] = -"Python wrapper for Expat parser." -; +"Python wrapper for Expat parser."; /* Initialization function for the module */ void -initpyexpat(){ - PyObject *m, *d; - char *rev = "$Revision$"; - PyObject *errors_module, *errors_dict; - PyObject *sys_modules; - - Xmlparsetype.ob_type = &PyType_Type; - - /* Create the module and add the functions */ - m = Py_InitModule4("pyexpat", pyexpat_methods, - pyexpat_module_documentation, - (PyObject*)NULL, PYTHON_API_VERSION); - - /* Add some symbolic constants to the module */ - d = PyModule_GetDict(m); - ErrorObject = PyString_FromString("pyexpat.error"); - PyDict_SetItemString(d, "error", ErrorObject); - - PyDict_SetItemString(d, "__version__", - PyString_FromStringAndSize(rev+11, - strlen(rev+11)-2)); - - sys_modules = PySys_GetObject("modules"); - errors_module = PyModule_New("pyexpat.errors"); - PyDict_SetItemString(d, "errors", errors_module); - PyDict_SetItemString(sys_modules, "pyexpat.errors", errors_module); - - /* XXX When Expat supports some way of figuring out how it was - compiled, this should check and set native_encoding - appropriately. - */ - PyDict_SetItemString(d, "native_encoding", - PyString_FromString("UTF-8")); - errors_dict = PyModule_GetDict(errors_module); +initpyexpat(void) +{ + PyObject *m, *d; + char *rev = "$Revision$"; + PyObject *errors_module, *errors_dict; + PyObject *sys_modules; + + Xmlparsetype.ob_type = &PyType_Type; + + /* Create the module and add the functions */ + m = Py_InitModule4("pyexpat", pyexpat_methods, + pyexpat_module_documentation, + (PyObject*)NULL, PYTHON_API_VERSION); + + /* Add some symbolic constants to the module */ + d = PyModule_GetDict(m); + ErrorObject = PyString_FromString("pyexpat.error"); + PyDict_SetItemString(d, "error", ErrorObject); + + PyDict_SetItemString(d, "__version__", + PyString_FromStringAndSize(rev+11, + strlen(rev+11)-2)); + + sys_modules = PySys_GetObject("modules"); + errors_module = PyModule_New("pyexpat.errors"); + PyDict_SetItemString(d, "errors", errors_module); + PyDict_SetItemString(sys_modules, "pyexpat.errors", errors_module); + + /* XXX When Expat supports some way of figuring out how it was + compiled, this should check and set native_encoding + appropriately. + */ + PyDict_SetItemString(d, "native_encoding", + PyString_FromString("UTF-8")); + errors_dict = PyModule_GetDict(errors_module); #define MYCONST(name) \ - PyDict_SetItemString(errors_dict, #name, \ - PyString_FromString(XML_ErrorString(name))) - - MYCONST(XML_ERROR_NO_MEMORY); - MYCONST(XML_ERROR_SYNTAX); - MYCONST(XML_ERROR_NO_ELEMENTS); - MYCONST(XML_ERROR_INVALID_TOKEN); - MYCONST(XML_ERROR_UNCLOSED_TOKEN); - MYCONST(XML_ERROR_PARTIAL_CHAR); - MYCONST(XML_ERROR_TAG_MISMATCH); - MYCONST(XML_ERROR_DUPLICATE_ATTRIBUTE); - MYCONST(XML_ERROR_JUNK_AFTER_DOC_ELEMENT); - MYCONST(XML_ERROR_PARAM_ENTITY_REF); - MYCONST(XML_ERROR_UNDEFINED_ENTITY); - MYCONST(XML_ERROR_RECURSIVE_ENTITY_REF); - MYCONST(XML_ERROR_ASYNC_ENTITY); - MYCONST(XML_ERROR_BAD_CHAR_REF); - MYCONST(XML_ERROR_BINARY_ENTITY_REF); - MYCONST(XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF); - MYCONST(XML_ERROR_MISPLACED_XML_PI); - MYCONST(XML_ERROR_UNKNOWN_ENCODING); - MYCONST(XML_ERROR_INCORRECT_ENCODING); - - /* Check for errors */ - if (PyErr_Occurred()) - Py_FatalError("can't initialize module pyexpat"); + PyDict_SetItemString(errors_dict, #name, \ + PyString_FromString(XML_ErrorString(name))) + + MYCONST(XML_ERROR_NO_MEMORY); + MYCONST(XML_ERROR_SYNTAX); + MYCONST(XML_ERROR_NO_ELEMENTS); + MYCONST(XML_ERROR_INVALID_TOKEN); + MYCONST(XML_ERROR_UNCLOSED_TOKEN); + MYCONST(XML_ERROR_PARTIAL_CHAR); + MYCONST(XML_ERROR_TAG_MISMATCH); + MYCONST(XML_ERROR_DUPLICATE_ATTRIBUTE); + MYCONST(XML_ERROR_JUNK_AFTER_DOC_ELEMENT); + MYCONST(XML_ERROR_PARAM_ENTITY_REF); + MYCONST(XML_ERROR_UNDEFINED_ENTITY); + MYCONST(XML_ERROR_RECURSIVE_ENTITY_REF); + MYCONST(XML_ERROR_ASYNC_ENTITY); + MYCONST(XML_ERROR_BAD_CHAR_REF); + MYCONST(XML_ERROR_BINARY_ENTITY_REF); + MYCONST(XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF); + MYCONST(XML_ERROR_MISPLACED_XML_PI); + MYCONST(XML_ERROR_UNKNOWN_ENCODING); + MYCONST(XML_ERROR_INCORRECT_ENCODING); + + /* Check for errors */ + if (PyErr_Occurred()) + Py_FatalError("can't initialize module pyexpat"); } -void clear_handlers( xmlparseobject *self ){ - int i=0; +void clear_handlers(xmlparseobject *self) +{ + int i = 0; - for( i=0;handler_info[i].name!=NULL;i++ ){ - self->handlers[i]=NULL; - handler_info[i].setter( self->itself, NULL ); - } + for (; handler_info[i].name!=NULL; i++) { + self->handlers[i]=NULL; + handler_info[i].setter( self->itself, NULL ); + } } typedef void (*pairsetter)( XML_Parser, void *handler1, void *handler2 ); -void pyxml_UpdatePairedHandlers( xmlparseobject *self, +void pyxml_UpdatePairedHandlers(xmlparseobject *self, int startHandler, int endHandler, - pairsetter setter){ - void *start_handler=NULL; - void *end_handler=NULL; + pairsetter setter) +{ + void *start_handler=NULL; + void *end_handler=NULL; - if( self->handlers[startHandler] && - self->handlers[endHandler]!=Py_None ){ - start_handler=handler_info[startHandler].handler; - } - if( self->handlers[EndElement] && - self->handlers[EndElement] !=Py_None ){ - end_handler=handler_info[endHandler].handler; - } - - setter(self->itself, - start_handler, - end_handler); + if (self->handlers[startHandler] + && self->handlers[endHandler]!=Py_None) { + start_handler=handler_info[startHandler].handler; + } + if (self->handlers[EndElement] + && self->handlers[EndElement] !=Py_None) { + end_handler=handler_info[endHandler].handler; + } + setter(self->itself, start_handler, end_handler); } -void pyxml_SetStartElementHandler( XML_Parser *parser, - void *junk){ - pyxml_UpdatePairedHandlers( - (xmlparseobject *)XML_GetUserData( parser ), - StartElement, EndElement, - (pairsetter)XML_SetElementHandler); +void pyxml_SetStartElementHandler(XML_Parser *parser, void *junk) +{ + pyxml_UpdatePairedHandlers((xmlparseobject *)XML_GetUserData(parser), + StartElement, EndElement, + (pairsetter)XML_SetElementHandler); } -void pyxml_SetEndElementHandler( XML_Parser *parser, - void *junk){ - pyxml_UpdatePairedHandlers( - (xmlparseobject *)XML_GetUserData( parser ), - StartElement, EndElement, - (pairsetter)XML_SetElementHandler); +void pyxml_SetEndElementHandler(XML_Parser *parser, void *junk) +{ + pyxml_UpdatePairedHandlers((xmlparseobject *)XML_GetUserData(parser), + StartElement, EndElement, + (pairsetter)XML_SetElementHandler); } -void pyxml_SetStartNamespaceDeclHandler( XML_Parser *parser, - void *junk){ - pyxml_UpdatePairedHandlers( - (xmlparseobject *)XML_GetUserData( parser ), - StartNamespaceDecl, EndNamespaceDecl, - (pairsetter)XML_SetNamespaceDeclHandler); +void pyxml_SetStartNamespaceDeclHandler(XML_Parser *parser, void *junk) +{ + pyxml_UpdatePairedHandlers((xmlparseobject *)XML_GetUserData(parser), + StartNamespaceDecl, EndNamespaceDecl, + (pairsetter)XML_SetNamespaceDeclHandler); } -void pyxml_SetEndNamespaceDeclHandler( XML_Parser *parser, - void *junk){ - pyxml_UpdatePairedHandlers( - (xmlparseobject *)XML_GetUserData( parser ), - StartNamespaceDecl, EndNamespaceDecl, - (pairsetter)XML_SetNamespaceDeclHandler); +void pyxml_SetEndNamespaceDeclHandler(XML_Parser *parser, void *junk) +{ + pyxml_UpdatePairedHandlers((xmlparseobject *)XML_GetUserData(parser), + StartNamespaceDecl, EndNamespaceDecl, + (pairsetter)XML_SetNamespaceDeclHandler); } -void pyxml_SetStartCdataSection( XML_Parser *parser, - void *junk){ - - pyxml_UpdatePairedHandlers( - (xmlparseobject *)XML_GetUserData( parser ), - StartCdataSection, EndCdataSection, - (pairsetter)XML_SetCdataSectionHandler); +void pyxml_SetStartCdataSection(XML_Parser *parser, void *junk) +{ + pyxml_UpdatePairedHandlers((xmlparseobject *)XML_GetUserData(parser), + StartCdataSection, EndCdataSection, + (pairsetter)XML_SetCdataSectionHandler); } -void pyxml_SetEndCdataSection( XML_Parser *parser, - void *junk){ - pyxml_UpdatePairedHandlers( - (xmlparseobject *)XML_GetUserData( parser ), - StartCdataSection, EndCdataSection, - (pairsetter)XML_SetCdataSectionHandler); +void pyxml_SetEndCdataSection(XML_Parser *parser, void *junk) +{ + pyxml_UpdatePairedHandlers((xmlparseobject *)XML_GetUserData(parser), + StartCdataSection, EndCdataSection, + (pairsetter)XML_SetCdataSectionHandler); } -statichere struct HandlerInfo handler_info[]= -{{"StartElementHandler", - pyxml_SetStartElementHandler, - (xmlhandler)my_StartElementHandler}, -{"EndElementHandler", - pyxml_SetEndElementHandler, - (xmlhandler)my_EndElementHandler}, -{"ProcessingInstructionHandler", - (xmlhandlersetter)XML_SetProcessingInstructionHandler, - (xmlhandler)my_ProcessingInstructionHandler}, -{"CharacterDataHandler", - (xmlhandlersetter)XML_SetCharacterDataHandler, - (xmlhandler)my_CharacterDataHandler}, -{"UnparsedEntityDeclHandler", - (xmlhandlersetter)XML_SetUnparsedEntityDeclHandler, - (xmlhandler)my_UnparsedEntityDeclHandler }, -{"NotationDeclHandler", - (xmlhandlersetter)XML_SetNotationDeclHandler, - (xmlhandler)my_NotationDeclHandler }, -{"StartNamespaceDeclHandler", - pyxml_SetStartNamespaceDeclHandler, - (xmlhandler)my_StartNamespaceDeclHandler }, -{"EndNamespaceDeclHandler", - pyxml_SetEndNamespaceDeclHandler, - (xmlhandler)my_EndNamespaceDeclHandler }, -{"CommentHandler", - (xmlhandlersetter)XML_SetCommentHandler, - (xmlhandler)my_CommentHandler}, -{"StartCdataSectionHandler", - pyxml_SetStartCdataSection, - (xmlhandler)my_StartCdataSectionHandler}, -{"EndCdataSectionHandler", - pyxml_SetEndCdataSection, - (xmlhandler)my_EndCdataSectionHandler}, -{"DefaultHandler", - (xmlhandlersetter)XML_SetDefaultHandler, - (xmlhandler)my_DefaultHandler}, -{"DefaultHandlerExpand", - (xmlhandlersetter)XML_SetDefaultHandlerExpand, - (xmlhandler)my_DefaultHandlerExpandHandler}, -{"NotStandaloneHandler", - (xmlhandlersetter)XML_SetNotStandaloneHandler, - (xmlhandler)my_NotStandaloneHandler}, -{"ExternalEntityRefHandler", - (xmlhandlersetter)XML_SetExternalEntityRefHandler, - (xmlhandler)my_ExternalEntityRefHandler }, - -{NULL, NULL, NULL } /* sentinel */ +statichere struct HandlerInfo handler_info[] = { + {"StartElementHandler", + pyxml_SetStartElementHandler, + (xmlhandler)my_StartElementHandler}, + {"EndElementHandler", + pyxml_SetEndElementHandler, + (xmlhandler)my_EndElementHandler}, + {"ProcessingInstructionHandler", + (xmlhandlersetter)XML_SetProcessingInstructionHandler, + (xmlhandler)my_ProcessingInstructionHandler}, + {"CharacterDataHandler", + (xmlhandlersetter)XML_SetCharacterDataHandler, + (xmlhandler)my_CharacterDataHandler}, + {"UnparsedEntityDeclHandler", + (xmlhandlersetter)XML_SetUnparsedEntityDeclHandler, + (xmlhandler)my_UnparsedEntityDeclHandler }, + {"NotationDeclHandler", + (xmlhandlersetter)XML_SetNotationDeclHandler, + (xmlhandler)my_NotationDeclHandler }, + {"StartNamespaceDeclHandler", + pyxml_SetStartNamespaceDeclHandler, + (xmlhandler)my_StartNamespaceDeclHandler }, + {"EndNamespaceDeclHandler", + pyxml_SetEndNamespaceDeclHandler, + (xmlhandler)my_EndNamespaceDeclHandler }, + {"CommentHandler", + (xmlhandlersetter)XML_SetCommentHandler, + (xmlhandler)my_CommentHandler}, + {"StartCdataSectionHandler", + pyxml_SetStartCdataSection, + (xmlhandler)my_StartCdataSectionHandler}, + {"EndCdataSectionHandler", + pyxml_SetEndCdataSection, + (xmlhandler)my_EndCdataSectionHandler}, + {"DefaultHandler", + (xmlhandlersetter)XML_SetDefaultHandler, + (xmlhandler)my_DefaultHandler}, + {"DefaultHandlerExpand", + (xmlhandlersetter)XML_SetDefaultHandlerExpand, + (xmlhandler)my_DefaultHandlerExpandHandler}, + {"NotStandaloneHandler", + (xmlhandlersetter)XML_SetNotStandaloneHandler, + (xmlhandler)my_NotStandaloneHandler}, + {"ExternalEntityRefHandler", + (xmlhandlersetter)XML_SetExternalEntityRefHandler, + (xmlhandler)my_ExternalEntityRefHandler }, + + {NULL, NULL, NULL} /* sentinel */ }; |