mirror of
https://github.com/python/cpython.git
synced 2025-08-04 00:48:58 +00:00
Unknown changes by Jim Fulton.
This commit is contained in:
parent
0a73dd5f35
commit
154417e27b
1 changed files with 140 additions and 199 deletions
|
@ -58,14 +58,24 @@
|
|||
|
||||
|
||||
$Log$
|
||||
Revision 2.3 1997/01/14 17:38:28 bwarsaw
|
||||
Quieted gcc -Wall by removing unused local variables.
|
||||
Revision 2.4 1997/04/09 17:35:33 guido
|
||||
Unknown changes by Jim Fulton.
|
||||
|
||||
Suppressing my urge to reformat according to Python coding standards!
|
||||
:-)
|
||||
Revision 1.16 1997/02/17 22:17:43 jim
|
||||
*** empty log message ***
|
||||
|
||||
Revision 2.2 1997/01/06 22:57:52 guido
|
||||
Jim's latest version.
|
||||
Revision 1.14 1997/01/24 19:56:24 chris
|
||||
undid last change
|
||||
|
||||
Revision 1.13 1997/01/24 19:45:20 chris
|
||||
extra byte in buffer no longer included in buf_size
|
||||
|
||||
Revision 1.12 1997/01/24 19:38:28 chris
|
||||
*** empty log message ***
|
||||
|
||||
Revision 1.11 1997/01/23 20:45:01 jim
|
||||
ANSIfied it.
|
||||
Changed way C API was exported.
|
||||
|
||||
Revision 1.10 1997/01/02 15:19:55 chris
|
||||
checked in to be sure repository is up to date.
|
||||
|
@ -133,21 +143,9 @@ static char cStringIO_module_documentation[] =
|
|||
|
||||
#include "Python.h"
|
||||
#include "import.h"
|
||||
#include "cStringIO.h"
|
||||
|
||||
static PyObject *ErrorObject;
|
||||
|
||||
#ifdef __cplusplus
|
||||
#define ARG(T,N) T N
|
||||
#define ARGDECL(T,N)
|
||||
#else
|
||||
#define ARG(T,N) N
|
||||
#define ARGDECL(T,N) T N;
|
||||
#endif
|
||||
|
||||
#define ASSIGN(V,E) {PyObject *__e; __e=(E); Py_XDECREF(V); (V)=__e;}
|
||||
#define UNLESS(E) if(!(E))
|
||||
#define UNLESS_ASSIGN(V,E) ASSIGN(V,E) UNLESS(V)
|
||||
#define Py_ASSIGN(P,E) if(!PyObject_AssignExpression(&(P),(E))) return NULL
|
||||
|
||||
/* ----------------------------------------------------- */
|
||||
|
||||
|
@ -174,8 +172,6 @@ typedef struct {
|
|||
|
||||
staticforward PyTypeObject Itype;
|
||||
|
||||
|
||||
|
||||
/* ---------------------------------------------------------------- */
|
||||
|
||||
static char O_reset__doc__[] =
|
||||
|
@ -183,10 +179,7 @@ static char O_reset__doc__[] =
|
|||
;
|
||||
|
||||
static PyObject *
|
||||
O_reset(ARG(Oobject*, self), ARG(PyObject*, args))
|
||||
ARGDECL(Oobject*, self)
|
||||
ARGDECL(PyObject*, args)
|
||||
{
|
||||
O_reset(Oobject *self, PyObject *args) {
|
||||
self->pos = 0;
|
||||
|
||||
Py_INCREF(Py_None);
|
||||
|
@ -198,10 +191,7 @@ static char O_tell__doc__[] =
|
|||
"tell() -- get the current position.";
|
||||
|
||||
static PyObject *
|
||||
O_tell(ARG(Oobject*, self), ARG(PyObject*, args))
|
||||
ARGDECL(Oobject*, self)
|
||||
ARGDECL(PyObject*, args)
|
||||
{
|
||||
O_tell(Oobject *self, PyObject *args) {
|
||||
return PyInt_FromLong(self->pos);
|
||||
}
|
||||
|
||||
|
@ -211,10 +201,7 @@ static char O_seek__doc__[] =
|
|||
"seek(position, mode) -- mode 0: absolute; 1: relative; 2: relative to EOF";
|
||||
|
||||
static PyObject *
|
||||
O_seek(ARG(Oobject*, self), ARG(PyObject*, args))
|
||||
ARGDECL(Oobject*, self)
|
||||
ARGDECL(PyObject*, args)
|
||||
{
|
||||
O_seek(Oobject *self, PyObject *args) {
|
||||
int position, mode = 0;
|
||||
|
||||
UNLESS(PyArg_ParseTuple(args, "i|i", &position, &mode))
|
||||
|
@ -243,35 +230,28 @@ static char O_read__doc__[] =
|
|||
;
|
||||
|
||||
static int
|
||||
O_cread(ARG(Oobject*, self), ARG(char**, output), ARG(int, n))
|
||||
ARGDECL(Oobject*, self)
|
||||
ARGDECL(char**, output)
|
||||
ARGDECL(int, n)
|
||||
{
|
||||
O_cread(PyObject *self, char **output, int n) {
|
||||
int l;
|
||||
|
||||
l = self->string_size - self->pos;
|
||||
l = ((Oobject*)self)->string_size - ((Oobject*)self)->pos;
|
||||
if (n < 0 || n > l)
|
||||
{
|
||||
n = l;
|
||||
}
|
||||
|
||||
*output=self->buf + self->pos;
|
||||
self->pos += n;
|
||||
*output=((Oobject*)self)->buf + ((Oobject*)self)->pos;
|
||||
((Oobject*)self)->pos += n;
|
||||
return n;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
O_read(ARG(Oobject*, self), ARG(PyObject*, args))
|
||||
ARGDECL(Oobject*, self)
|
||||
ARGDECL(PyObject*, args)
|
||||
{
|
||||
O_read(Oobject *self, PyObject *args) {
|
||||
int n = -1;
|
||||
char *output;
|
||||
|
||||
UNLESS(PyArg_ParseTuple(args, "|i", &n)) return NULL;
|
||||
|
||||
n=O_cread(self,&output,n);
|
||||
n=O_cread((PyObject*)self,&output,n);
|
||||
|
||||
return PyString_FromStringAndSize(output, n);
|
||||
}
|
||||
|
@ -282,32 +262,27 @@ static char O_readline__doc__[] =
|
|||
;
|
||||
|
||||
static int
|
||||
O_creadline(ARG(Oobject*, self), ARG(char**, output))
|
||||
ARGDECL(Oobject*, self)
|
||||
ARGDECL(char**, output)
|
||||
{
|
||||
O_creadline(PyObject *self, char **output) {
|
||||
char *n, *s;
|
||||
int l;
|
||||
|
||||
for (n = self->buf + self->pos, s = self->buf + self->string_size;
|
||||
for (n = ((Oobject*)self)->buf + ((Oobject*)self)->pos,
|
||||
s = ((Oobject*)self)->buf + ((Oobject*)self)->string_size;
|
||||
n < s && *n != '\n'; n++);
|
||||
if (n < s) n++;
|
||||
|
||||
*output=self->buf + self->pos;
|
||||
l = n - self->buf - self->pos;
|
||||
self->pos += l;
|
||||
*output=((Oobject*)self)->buf + ((Oobject*)self)->pos;
|
||||
l = n - ((Oobject*)self)->buf - ((Oobject*)self)->pos;
|
||||
((Oobject*)self)->pos += l;
|
||||
return l;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
O_readline(ARG(Oobject*, self), ARG(PyObject*, args))
|
||||
ARGDECL(Oobject*, self)
|
||||
ARGDECL(PyObject*, args)
|
||||
{
|
||||
O_readline(Oobject *self, PyObject *args) {
|
||||
int n;
|
||||
char *output;
|
||||
|
||||
n=O_creadline(self,&output);
|
||||
n=O_creadline((PyObject*)self,&output);
|
||||
return PyString_FromStringAndSize(output, n);
|
||||
}
|
||||
|
||||
|
@ -318,43 +293,38 @@ static char O_write__doc__[] =
|
|||
|
||||
|
||||
static int
|
||||
O_cwrite(ARG(Oobject*, self), ARG(char*, c), ARG(int, l))
|
||||
ARGDECL(Oobject*, self)
|
||||
ARGDECL(char*, c)
|
||||
ARGDECL(int, l)
|
||||
{
|
||||
O_cwrite(PyObject *self, char *c, int l) {
|
||||
int newl;
|
||||
|
||||
newl=self->pos+l;
|
||||
if(newl > self->buf_size)
|
||||
newl=((Oobject*)self)->pos+l;
|
||||
if(newl >= ((Oobject*)self)->buf_size)
|
||||
{
|
||||
self->buf_size*=2;
|
||||
if(self->buf_size < newl) self->buf_size=newl;
|
||||
UNLESS(self->buf=(char*)realloc(self->buf, self->buf_size*sizeof(char)))
|
||||
((Oobject*)self)->buf_size*=2;
|
||||
if(((Oobject*)self)->buf_size <= newl) ((Oobject*)self)->buf_size=newl+1;
|
||||
UNLESS(((Oobject*)self)->buf=
|
||||
(char*)realloc(((Oobject*)self)->buf,
|
||||
(((Oobject*)self)->buf_size) *sizeof(char)))
|
||||
{
|
||||
PyErr_SetString(PyExc_MemoryError,"out of memory");
|
||||
self->buf_size=self->pos=0;
|
||||
((Oobject*)self)->buf_size=((Oobject*)self)->pos=0;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
memcpy(self->buf+self->pos,c,l);
|
||||
memcpy(((Oobject*)((Oobject*)self))->buf+((Oobject*)self)->pos,c,l);
|
||||
|
||||
self->pos += l;
|
||||
((Oobject*)self)->pos += l;
|
||||
|
||||
if (self->string_size < self->pos)
|
||||
if (((Oobject*)self)->string_size < ((Oobject*)self)->pos)
|
||||
{
|
||||
self->string_size = self->pos;
|
||||
((Oobject*)self)->string_size = ((Oobject*)self)->pos;
|
||||
}
|
||||
|
||||
return l;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
O_write(ARG(Oobject*, self), ARG(PyObject*, args))
|
||||
ARGDECL(Oobject*, self)
|
||||
ARGDECL(PyObject*, args)
|
||||
{
|
||||
O_write(Oobject *self, PyObject *args) {
|
||||
PyObject *s;
|
||||
char *c;
|
||||
int l;
|
||||
|
@ -362,28 +332,28 @@ O_write(ARG(Oobject*, self), ARG(PyObject*, args))
|
|||
UNLESS(PyArg_Parse(args, "O", &s)) return NULL;
|
||||
UNLESS(-1 != (l=PyString_Size(s))) return NULL;
|
||||
UNLESS(c=PyString_AsString(s)) return NULL;
|
||||
UNLESS(-1 != O_cwrite(self,c,l)) return NULL;
|
||||
UNLESS(-1 != O_cwrite((PyObject*)self,c,l)) return NULL;
|
||||
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
O_getval(ARG(Oobject*, self), ARG(PyObject*, args))
|
||||
ARGDECL(Oobject*, self)
|
||||
ARGDECL(PyObject*, args)
|
||||
{
|
||||
return PyString_FromStringAndSize(self->buf,self->pos);
|
||||
O_getval(Oobject *self, PyObject *args) {
|
||||
return PyString_FromStringAndSize(self->buf, self->pos);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
O_cgetval(PyObject *self) {
|
||||
return PyString_FromStringAndSize(((Oobject*)self)->buf,
|
||||
((Oobject*)self)->pos);
|
||||
}
|
||||
|
||||
static char O_truncate__doc__[] =
|
||||
"truncate(): truncate the file at the current position.";
|
||||
|
||||
static PyObject *
|
||||
O_truncate(ARG(Oobject*, self), ARG(PyObject*, args))
|
||||
ARGDECL(Oobject*, self)
|
||||
ARGDECL(PyObject*, args)
|
||||
{
|
||||
O_truncate(Oobject *self, PyObject *args) {
|
||||
self->string_size = self->pos;
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
|
@ -392,20 +362,14 @@ O_truncate(ARG(Oobject*, self), ARG(PyObject*, args))
|
|||
static char O_isatty__doc__[] = "isatty(): always returns 0";
|
||||
|
||||
static PyObject *
|
||||
O_isatty(ARG(Oobject*, self), ARG(PyObject*, args))
|
||||
ARGDECL(Oobject*, self)
|
||||
ARGDECL(PyObject*, args)
|
||||
{
|
||||
O_isatty(Oobject *self, PyObject *args) {
|
||||
return PyInt_FromLong(0);
|
||||
}
|
||||
|
||||
static char O_close__doc__[] = "close(): explicitly release resources held.";
|
||||
|
||||
static PyObject *
|
||||
O_close(ARG(Oobject*, self), ARG(PyObject*, args))
|
||||
ARGDECL(Oobject*, self)
|
||||
ARGDECL(PyObject*, args)
|
||||
{
|
||||
O_close(Oobject *self, PyObject *args) {
|
||||
free(self->buf);
|
||||
|
||||
self->pos = self->string_size = self->buf_size = 0;
|
||||
|
@ -418,10 +382,7 @@ O_close(ARG(Oobject*, self), ARG(PyObject*, args))
|
|||
static char O_flush__doc__[] = "flush(): does nothing.";
|
||||
|
||||
static PyObject *
|
||||
O_flush(ARG(Oobject*, self), ARG(PyObject*, args))
|
||||
ARGDECL(Oobject*, self)
|
||||
ARGDECL(PyObject*, args)
|
||||
{
|
||||
O_flush(Oobject *self, PyObject *args) {
|
||||
Py_INCREF(Py_None);
|
||||
return Py_None;
|
||||
}
|
||||
|
@ -429,10 +390,7 @@ O_flush(ARG(Oobject*, self), ARG(PyObject*, args))
|
|||
|
||||
static char O_writelines__doc__[] = "blah";
|
||||
static PyObject *
|
||||
O_writelines(ARG(Oobject*, self), ARG(PyObject*, args))
|
||||
ARGDECL(Oobject*, self)
|
||||
ARGDECL(PyObject*, args)
|
||||
{
|
||||
O_writelines(Oobject *self, PyObject *args) {
|
||||
PyObject *string_module = 0;
|
||||
static PyObject *string_joinfields = 0;
|
||||
|
||||
|
@ -467,9 +425,9 @@ O_writelines(ARG(Oobject*, self), ARG(PyObject*, args))
|
|||
}
|
||||
|
||||
static struct PyMethodDef O_methods[] = {
|
||||
{"write", (PyCFunction)O_write, 0, O_write__doc__},
|
||||
{"read", (PyCFunction)O_read, 1, O_read__doc__},
|
||||
{"readline", (PyCFunction)O_readline, 0, O_readline__doc__},
|
||||
{"write", (PyCFunction)O_write, 0, O_write__doc__},
|
||||
{"reset", (PyCFunction)O_reset, 0, O_reset__doc__},
|
||||
{"seek", (PyCFunction)O_seek, 1, O_seek__doc__},
|
||||
{"tell", (PyCFunction)O_tell, 0, O_tell__doc__},
|
||||
|
@ -485,10 +443,8 @@ static struct PyMethodDef O_methods[] = {
|
|||
/* ---------- */
|
||||
|
||||
|
||||
static Oobject *
|
||||
newOobject(ARG(int, size))
|
||||
ARGDECL(int, size)
|
||||
{
|
||||
static PyObject *
|
||||
newOobject(int size) {
|
||||
Oobject *self;
|
||||
|
||||
self = PyObject_NEW(Oobject, &Otype);
|
||||
|
@ -506,23 +462,18 @@ newOobject(ARG(int, size))
|
|||
}
|
||||
|
||||
self->buf_size=size;
|
||||
return self;
|
||||
return (PyObject*)self;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
O_dealloc(ARG(Oobject*, self))
|
||||
ARGDECL(Oobject*, self)
|
||||
{
|
||||
O_dealloc(Oobject *self) {
|
||||
free(self->buf);
|
||||
PyMem_DEL(self);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
O_getattr(ARG(Oobject*, self), ARG(char*, name))
|
||||
ARGDECL(Oobject*, self)
|
||||
ARGDECL(char*, name)
|
||||
{
|
||||
O_getattr(Oobject *self, char *name) {
|
||||
return Py_FindMethod(O_methods, (PyObject *)self, name);
|
||||
}
|
||||
|
||||
|
@ -531,38 +482,35 @@ static char Otype__doc__[] =
|
|||
;
|
||||
|
||||
static PyTypeObject Otype = {
|
||||
PyObject_HEAD_INIT(&PyType_Type)
|
||||
0, /*ob_size*/
|
||||
"StringO", /*tp_name*/
|
||||
sizeof(Oobject), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
/* methods */
|
||||
(destructor)O_dealloc, /*tp_dealloc*/
|
||||
(printfunc)0, /*tp_print*/
|
||||
(getattrfunc)O_getattr, /*tp_getattr*/
|
||||
(setattrfunc)0, /*tp_setattr*/
|
||||
(cmpfunc)0, /*tp_compare*/
|
||||
(reprfunc)0, /*tp_repr*/
|
||||
0, /*tp_as_number*/
|
||||
0, /*tp_as_sequence*/
|
||||
0, /*tp_as_mapping*/
|
||||
(hashfunc)0, /*tp_hash*/
|
||||
(ternaryfunc)0, /*tp_call*/
|
||||
(reprfunc)0, /*tp_str*/
|
||||
|
||||
/* Space for future expansion */
|
||||
0L,0L,0L,0L,
|
||||
Otype__doc__ /* Documentation string */
|
||||
PyObject_HEAD_INIT(NULL)
|
||||
0, /*ob_size*/
|
||||
"StringO", /*tp_name*/
|
||||
sizeof(Oobject), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
/* methods */
|
||||
(destructor)O_dealloc, /*tp_dealloc*/
|
||||
(printfunc)0, /*tp_print*/
|
||||
(getattrfunc)O_getattr, /*tp_getattr*/
|
||||
(setattrfunc)0, /*tp_setattr*/
|
||||
(cmpfunc)0, /*tp_compare*/
|
||||
(reprfunc)0, /*tp_repr*/
|
||||
0, /*tp_as_number*/
|
||||
0, /*tp_as_sequence*/
|
||||
0, /*tp_as_mapping*/
|
||||
(hashfunc)0, /*tp_hash*/
|
||||
(ternaryfunc)0, /*tp_call*/
|
||||
(reprfunc)0, /*tp_str*/
|
||||
|
||||
/* Space for future expansion */
|
||||
0L,0L,0L,0L,
|
||||
Otype__doc__ /* Documentation string */
|
||||
};
|
||||
|
||||
/* End of code for StringO objects */
|
||||
/* -------------------------------------------------------- */
|
||||
|
||||
static PyObject *
|
||||
I_close(ARG(Iobject*, self), ARG(PyObject*, args))
|
||||
ARGDECL(Iobject*, self)
|
||||
ARGDECL(PyObject*, args)
|
||||
{
|
||||
I_close(Iobject *self, PyObject *args) {
|
||||
Py_DECREF(self->pbuf);
|
||||
|
||||
self->pos = self->string_size = 0;
|
||||
|
@ -588,10 +536,8 @@ static struct PyMethodDef I_methods[] = {
|
|||
/* ---------- */
|
||||
|
||||
|
||||
static Iobject *
|
||||
newIobject(ARG(PyObject*, s))
|
||||
ARGDECL(PyObject*, s)
|
||||
{
|
||||
static PyObject *
|
||||
newIobject(PyObject *s) {
|
||||
Iobject *self;
|
||||
char *buf;
|
||||
int size;
|
||||
|
@ -606,23 +552,18 @@ newIobject(ARG(PyObject*, s))
|
|||
self->pos=0;
|
||||
self->closed = 0;
|
||||
|
||||
return self;
|
||||
return (PyObject*)self;
|
||||
}
|
||||
|
||||
|
||||
static void
|
||||
I_dealloc(ARG(Iobject*, self))
|
||||
ARGDECL(Iobject*, self)
|
||||
{
|
||||
I_dealloc(Iobject *self) {
|
||||
Py_DECREF(self->pbuf);
|
||||
PyMem_DEL(self);
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
I_getattr(ARG(Iobject*, self), ARG(char*, name))
|
||||
ARGDECL(Iobject*, self)
|
||||
ARGDECL(char*, name)
|
||||
{
|
||||
I_getattr(Iobject *self, char *name) {
|
||||
return Py_FindMethod(I_methods, (PyObject *)self, name);
|
||||
}
|
||||
|
||||
|
@ -631,28 +572,28 @@ static char Itype__doc__[] =
|
|||
;
|
||||
|
||||
static PyTypeObject Itype = {
|
||||
PyObject_HEAD_INIT(&PyType_Type)
|
||||
0, /*ob_size*/
|
||||
"StringI", /*tp_name*/
|
||||
sizeof(Iobject), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
/* methods */
|
||||
(destructor)I_dealloc, /*tp_dealloc*/
|
||||
(printfunc)0, /*tp_print*/
|
||||
(getattrfunc)I_getattr, /*tp_getattr*/
|
||||
(setattrfunc)0, /*tp_setattr*/
|
||||
(cmpfunc)0, /*tp_compare*/
|
||||
(reprfunc)0, /*tp_repr*/
|
||||
0, /*tp_as_number*/
|
||||
0, /*tp_as_sequence*/
|
||||
0, /*tp_as_mapping*/
|
||||
(hashfunc)0, /*tp_hash*/
|
||||
(ternaryfunc)0, /*tp_call*/
|
||||
(reprfunc)0, /*tp_str*/
|
||||
|
||||
/* Space for future expansion */
|
||||
0L,0L,0L,0L,
|
||||
Itype__doc__ /* Documentation string */
|
||||
PyObject_HEAD_INIT(NULL)
|
||||
0, /*ob_size*/
|
||||
"StringI", /*tp_name*/
|
||||
sizeof(Iobject), /*tp_basicsize*/
|
||||
0, /*tp_itemsize*/
|
||||
/* methods */
|
||||
(destructor)I_dealloc, /*tp_dealloc*/
|
||||
(printfunc)0, /*tp_print*/
|
||||
(getattrfunc)I_getattr, /*tp_getattr*/
|
||||
(setattrfunc)0, /*tp_setattr*/
|
||||
(cmpfunc)0, /*tp_compare*/
|
||||
(reprfunc)0, /*tp_repr*/
|
||||
0, /*tp_as_number*/
|
||||
0, /*tp_as_sequence*/
|
||||
0, /*tp_as_mapping*/
|
||||
(hashfunc)0, /*tp_hash*/
|
||||
(ternaryfunc)0, /*tp_call*/
|
||||
(reprfunc)0, /*tp_str*/
|
||||
|
||||
/* Space for future expansion */
|
||||
0L,0L,0L,0L,
|
||||
Itype__doc__ /* Documentation string */
|
||||
};
|
||||
|
||||
/* End of code for StringI objects */
|
||||
|
@ -664,15 +605,12 @@ static char IO_StringIO__doc__[] =
|
|||
;
|
||||
|
||||
static PyObject *
|
||||
IO_StringIO(ARG(PyObject*, self), ARG(PyObject*, args))
|
||||
ARGDECL(PyObject*, self)
|
||||
ARGDECL(PyObject*, args)
|
||||
{
|
||||
IO_StringIO(PyObject *self, PyObject *args) {
|
||||
PyObject *s=0;
|
||||
|
||||
UNLESS(PyArg_ParseTuple(args, "|O", &s)) return NULL;
|
||||
if(s) return (PyObject *)newIobject(s);
|
||||
return (PyObject *)newOobject(128);
|
||||
if(s) return newIobject(s);
|
||||
return newOobject(128);
|
||||
}
|
||||
|
||||
/* List of methods defined in the module */
|
||||
|
@ -685,11 +623,22 @@ static struct PyMethodDef IO_methods[] = {
|
|||
|
||||
/* Initialization function for the module (*must* be called initcStringIO) */
|
||||
|
||||
static struct PycStringIO_CAPI CAPI = {
|
||||
O_cread,
|
||||
O_creadline,
|
||||
O_cwrite,
|
||||
O_cgetval,
|
||||
newOobject,
|
||||
newIobject,
|
||||
&Itype,
|
||||
&Otype,
|
||||
};
|
||||
|
||||
void
|
||||
initcStringIO()
|
||||
{
|
||||
initcStringIO() {
|
||||
PyObject *m, *d;
|
||||
|
||||
|
||||
/* Create the module and add the functions */
|
||||
m = Py_InitModule4("cStringIO", IO_methods,
|
||||
cStringIO_module_documentation,
|
||||
|
@ -697,25 +646,17 @@ initcStringIO()
|
|||
|
||||
/* Add some symbolic constants to the module */
|
||||
d = PyModule_GetDict(m);
|
||||
ErrorObject = PyString_FromString("cStringIO.error");
|
||||
PyDict_SetItemString(d, "error", ErrorObject);
|
||||
|
||||
#ifdef Py_COBJECT_H
|
||||
/* Export C API */
|
||||
PyDict_SetItemString(d,"cread", PyCObject_FromVoidPtr(O_cread,NULL));
|
||||
PyDict_SetItemString(d,"creadline", PyCObject_FromVoidPtr(O_creadline,NULL));
|
||||
PyDict_SetItemString(d,"cwrite", PyCObject_FromVoidPtr(O_cwrite,NULL));
|
||||
PyDict_SetItemString(d,"cgetvalue", PyCObject_FromVoidPtr(O_getval,NULL));
|
||||
PyDict_SetItemString(d,"NewInput", PyCObject_FromVoidPtr(newIobject,NULL));
|
||||
PyDict_SetItemString(d,"NewOutput", PyCObject_FromVoidPtr(newOobject,NULL));
|
||||
#endif
|
||||
|
||||
Itype.ob_type=&PyType_Type;
|
||||
Otype.ob_type=&PyType_Type;
|
||||
PyDict_SetItemString(d,"cStringIO_CAPI", PyCObject_FromVoidPtr(&CAPI,NULL));
|
||||
|
||||
/* Export Types */
|
||||
PyDict_SetItemString(d,"InputType", (PyObject*)&Itype);
|
||||
PyDict_SetItemString(d,"OutputType", (PyObject*)&Otype);
|
||||
|
||||
|
||||
/* Check for errors */
|
||||
if (PyErr_Occurred())
|
||||
Py_FatalError("can't initialize module cStringIO");
|
||||
if (PyErr_Occurred()) Py_FatalError("can't initialize module cStringIO");
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue