Mercurial > cpython-lru_cache-weakref
annotate Modules/cStringIO.c @ 42492:86fd39c2c676 legacy-trunk
Revert the fix for #1548891, it broke backwards compatibility with arbitrary read buffers.
Fixes #1730114.
| author | Georg Brandl <georg@python.org> |
|---|---|
| date | Wed, 08 Aug 2007 13:03:41 +0000 |
| parents | 6620a510e9a9 |
| children | 3f6be12b9534 |
| rev | line source |
|---|---|
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
1 |
|
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
2 #include "Python.h" |
|
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
3 #include "import.h" |
|
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
4 #include "cStringIO.h" |
|
28772
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
5 #include "structmember.h" |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
6 |
|
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
7 PyDoc_STRVAR(cStringIO_module_documentation, |
| 4598 | 8 "A simple fast partial StringIO replacement.\n" |
| 9 "\n" | |
| 10 "This module provides a simple useful replacement for\n" | |
| 11 "the StringIO module that is written in C. It does not provide the\n" | |
|
12959
2513cd74147c
Fixed docstring typo, reported by Skip Montanaro <skip@mojam.com>.
Fred Drake <fdrake@acm.org>
parents:
12576
diff
changeset
|
12 "full generality of StringIO, but it provides enough for most\n" |
|
13620
5b727ab37092
Spelling fixes supplied by Rob W. W. Hooft. All these are fixes in either
Thomas Wouters <thomas@python.org>
parents:
13576
diff
changeset
|
13 "applications and is especially useful in conjunction with the\n" |
| 4598 | 14 "pickle module.\n" |
| 15 "\n" | |
| 16 "Usage:\n" | |
| 17 "\n" | |
| 18 " from cStringIO import StringIO\n" | |
| 19 "\n" | |
| 20 " an_output_stream=StringIO()\n" | |
| 21 " an_output_stream.write(some_stuff)\n" | |
| 22 " ...\n" | |
|
22218
5440e4b17aff
backport jhylton's checkin of
Michael W. Hudson <mwh@python.net>
parents:
21313
diff
changeset
|
23 " value=an_output_stream.getvalue()\n" |
| 4598 | 24 "\n" |
| 25 " an_input_stream=StringIO(a_string)\n" | |
| 26 " spam=an_input_stream.readline()\n" | |
| 27 " spam=an_input_stream.read(5)\n" | |
|
9521
0f27257fb6cf
New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents:
8741
diff
changeset
|
28 " an_input_stream.seek(0) # OK, start over\n" |
| 4598 | 29 " spam=an_input_stream.read() # and read it all\n" |
| 30 " \n" | |
| 31 "If someone else wants to provide a more complete implementation,\n" | |
| 32 "go for it. :-) \n" | |
|
5991
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
33 "\n" |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
34 "cStringIO.c,v 1.29 1999/06/15 14:10:27 jim Exp\n"); |
| 4598 | 35 |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
36 /* Declaration for file-like objects that manage data as strings |
| 4598 | 37 |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
38 The IOobject type should be though of as a common base type for |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
39 Iobjects, which provide input (read-only) StringIO objects and |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
40 Oobjects, which provide read-write objects. Most of the methods |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
41 depend only on common data. |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
42 */ |
| 4598 | 43 |
| 44 typedef struct { | |
| 45 PyObject_HEAD | |
| 46 char *buf; | |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
47 Py_ssize_t pos, string_size; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
48 } IOobject; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
49 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
50 #define IOOOBJECT(O) ((IOobject*)(O)) |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
51 |
|
30125
4b46d5449d49
shit - just change the visible name, not the comments - strictly speaking,
Skip Montanaro <skip@pobox.com>
parents:
30124
diff
changeset
|
52 /* Declarations for objects of type StringO */ |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
53 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
54 typedef struct { /* Subtype of IOobject */ |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
55 PyObject_HEAD |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
56 char *buf; |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
57 Py_ssize_t pos, string_size; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
58 |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
59 Py_ssize_t buf_size; |
|
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
60 int softspace; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
61 } Oobject; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
62 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
63 /* Declarations for objects of type StringI */ |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
64 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
65 typedef struct { /* Subtype of IOobject */ |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
66 PyObject_HEAD |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
67 char *buf; |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
68 Py_ssize_t pos, string_size; |
|
20060
ccec02bfe9a0
StringIO patch #462596: let's [c]StringIO accept read buffers on
Marc-André Lemburg <mal@egenix.com>
parents:
20033
diff
changeset
|
69 /* We store a reference to the object here in order to keep |
|
ccec02bfe9a0
StringIO patch #462596: let's [c]StringIO accept read buffers on
Marc-André Lemburg <mal@egenix.com>
parents:
20033
diff
changeset
|
70 the buffer alive during the lifetime of the Iobject. */ |
| 4598 | 71 PyObject *pbuf; |
| 72 } Iobject; | |
| 73 | |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
74 /* IOobject (common) methods */ |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
75 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
76 PyDoc_STRVAR(IO_flush__doc__, "flush(): does nothing."); |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
77 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
78 static int |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
79 IO__opencheck(IOobject *self) { |
| 36790 | 80 if (!self->buf) { |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
81 PyErr_SetString(PyExc_ValueError, |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
82 "I/O operation on closed file"); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
83 return 0; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
84 } |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
85 return 1; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
86 } |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
87 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
88 static PyObject * |
|
30096
06016d5d81d7
SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents:
28772
diff
changeset
|
89 IO_get_closed(IOobject *self, void *closure) |
|
06016d5d81d7
SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents:
28772
diff
changeset
|
90 { |
|
06016d5d81d7
SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents:
28772
diff
changeset
|
91 PyObject *result = Py_False; |
|
06016d5d81d7
SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents:
28772
diff
changeset
|
92 |
|
06016d5d81d7
SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents:
28772
diff
changeset
|
93 if (self->buf == NULL) |
|
06016d5d81d7
SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents:
28772
diff
changeset
|
94 result = Py_True; |
|
06016d5d81d7
SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents:
28772
diff
changeset
|
95 Py_INCREF(result); |
|
06016d5d81d7
SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents:
28772
diff
changeset
|
96 return result; |
|
06016d5d81d7
SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents:
28772
diff
changeset
|
97 } |
|
06016d5d81d7
SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents:
28772
diff
changeset
|
98 |
|
06016d5d81d7
SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents:
28772
diff
changeset
|
99 static PyGetSetDef file_getsetlist[] = { |
|
06016d5d81d7
SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents:
28772
diff
changeset
|
100 {"closed", (getter)IO_get_closed, NULL, "True if the file is closed"}, |
|
06016d5d81d7
SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents:
28772
diff
changeset
|
101 {0}, |
|
06016d5d81d7
SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents:
28772
diff
changeset
|
102 }; |
|
06016d5d81d7
SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents:
28772
diff
changeset
|
103 |
|
06016d5d81d7
SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents:
28772
diff
changeset
|
104 static PyObject * |
|
27044
23280a64288e
SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents:
25087
diff
changeset
|
105 IO_flush(IOobject *self, PyObject *unused) { |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
106 |
| 36790 | 107 if (!IO__opencheck(self)) return NULL; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
108 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
109 Py_INCREF(Py_None); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
110 return Py_None; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
111 } |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
112 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
113 PyDoc_STRVAR(IO_getval__doc__, |
|
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
114 "getvalue([use_pos]) -- Get the string value." |
|
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
115 "\n" |
|
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
116 "If use_pos is specified and is a true value, then the string returned\n" |
|
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
117 "will include only the text up to the current file position.\n"); |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
118 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
119 static PyObject * |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
120 IO_cgetval(PyObject *self) { |
| 36790 | 121 if (!IO__opencheck(IOOOBJECT(self))) return NULL; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
122 return PyString_FromStringAndSize(((IOobject*)self)->buf, |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
123 ((IOobject*)self)->pos); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
124 } |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
125 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
126 static PyObject * |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
127 IO_getval(IOobject *self, PyObject *args) { |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
128 PyObject *use_pos=Py_None; |
|
36518
9f3f87e920a6
Use Py_ssize_t for counts and sizes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36501
diff
changeset
|
129 Py_ssize_t s; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
130 |
| 36790 | 131 if (!IO__opencheck(self)) return NULL; |
| 132 if (!PyArg_UnpackTuple(args,"getval", 0, 1,&use_pos)) return NULL; | |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
133 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
134 if (PyObject_IsTrue(use_pos)) { |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
135 s=self->pos; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
136 if (s > self->string_size) s=self->string_size; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
137 } |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
138 else |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
139 s=self->string_size; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
140 return PyString_FromStringAndSize(self->buf, s); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
141 } |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
142 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
143 PyDoc_STRVAR(IO_isatty__doc__, "isatty(): always returns 0"); |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
144 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
145 static PyObject * |
|
27044
23280a64288e
SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents:
25087
diff
changeset
|
146 IO_isatty(IOobject *self, PyObject *unused) { |
|
37005
6738f7b282f6
SF patch #1359365: cStringIO.StringIO.isatty() will raise a ValueError
Walter Dörwald <walter@livinglogic.de>
parents:
36877
diff
changeset
|
147 if (!IO__opencheck(self)) return NULL; |
|
6738f7b282f6
SF patch #1359365: cStringIO.StringIO.isatty() will raise a ValueError
Walter Dörwald <walter@livinglogic.de>
parents:
36877
diff
changeset
|
148 Py_INCREF(Py_False); |
|
25087
9a178adb4e2d
SF bug 601775 - some int results that should be bool.
Guido van Rossum <guido@python.org>
parents:
24471
diff
changeset
|
149 return Py_False; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
150 } |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
151 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
152 PyDoc_STRVAR(IO_read__doc__, |
|
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
153 "read([s]) -- Read s characters, or the rest of the string"); |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
154 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
155 static int |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
156 IO_cread(PyObject *self, char **output, Py_ssize_t n) { |
|
36518
9f3f87e920a6
Use Py_ssize_t for counts and sizes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36501
diff
changeset
|
157 Py_ssize_t l; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
158 |
| 36790 | 159 if (!IO__opencheck(IOOOBJECT(self))) return -1; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
160 l = ((IOobject*)self)->string_size - ((IOobject*)self)->pos; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
161 if (n < 0 || n > l) { |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
162 n = l; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
163 if (n < 0) n=0; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
164 } |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
165 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
166 *output=((IOobject*)self)->buf + ((IOobject*)self)->pos; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
167 ((IOobject*)self)->pos += n; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
168 return n; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
169 } |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
170 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
171 static PyObject * |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
172 IO_read(IOobject *self, PyObject *args) { |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
173 Py_ssize_t n = -1; |
|
36782
2b659268a73a
Silence gcc (4.0.x) warning about use of uninitialized value.
Thomas Wouters <thomas@python.org>
parents:
36518
diff
changeset
|
174 char *output = NULL; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
175 |
| 36790 | 176 if (!PyArg_ParseTuple(args, "|n:read", &n)) return NULL; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
177 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
178 if ( (n=IO_cread((PyObject*)self,&output,n)) < 0) return NULL; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
179 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
180 return PyString_FromStringAndSize(output, n); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
181 } |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
182 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
183 PyDoc_STRVAR(IO_readline__doc__, "readline() -- Read one line"); |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
184 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
185 static int |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
186 IO_creadline(PyObject *self, char **output) { |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
187 char *n, *s; |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
188 Py_ssize_t l; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
189 |
| 36790 | 190 if (!IO__opencheck(IOOOBJECT(self))) return -1; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
191 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
192 for (n = ((IOobject*)self)->buf + ((IOobject*)self)->pos, |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
193 s = ((IOobject*)self)->buf + ((IOobject*)self)->string_size; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
194 n < s && *n != '\n'; n++); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
195 if (n < s) n++; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
196 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
197 *output=((IOobject*)self)->buf + ((IOobject*)self)->pos; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
198 l = n - ((IOobject*)self)->buf - ((IOobject*)self)->pos; |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
199 assert(((IOobject*)self)->pos + l < INT_MAX); |
|
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
200 ((IOobject*)self)->pos += (int)l; |
|
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
201 return (int)l; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
202 } |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
203 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
204 static PyObject * |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
205 IO_readline(IOobject *self, PyObject *args) { |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
206 int n, m=-1; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
207 char *output; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
208 |
|
28772
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
209 if (args) |
| 36790 | 210 if (!PyArg_ParseTuple(args, "|i:readline", &m)) return NULL; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
211 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
212 if( (n=IO_creadline((PyObject*)self,&output)) < 0) return NULL; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
213 if (m >= 0 && m < n) { |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
214 m = n - m; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
215 n -= m; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
216 self->pos -= m; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
217 } |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
218 return PyString_FromStringAndSize(output, n); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
219 } |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
220 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
221 PyDoc_STRVAR(IO_readlines__doc__, "readlines() -- Read all lines"); |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
222 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
223 static PyObject * |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
224 IO_readlines(IOobject *self, PyObject *args) { |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
225 int n; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
226 char *output; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
227 PyObject *result, *line; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
228 int hint = 0, length = 0; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
229 |
| 36790 | 230 if (!PyArg_ParseTuple(args, "|i:readlines", &hint)) return NULL; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
231 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
232 result = PyList_New(0); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
233 if (!result) |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
234 return NULL; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
235 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
236 while (1){ |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
237 if ( (n = IO_creadline((PyObject*)self,&output)) < 0) |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
238 goto err; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
239 if (n == 0) |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
240 break; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
241 line = PyString_FromStringAndSize (output, n); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
242 if (!line) |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
243 goto err; |
|
35623
774bf9a38b2a
Patches #1298449 and #1298499: Add some missing checks for error
Michael W. Hudson <mwh@python.net>
parents:
33213
diff
changeset
|
244 if (PyList_Append (result, line) == -1) { |
|
774bf9a38b2a
Patches #1298449 and #1298499: Add some missing checks for error
Michael W. Hudson <mwh@python.net>
parents:
33213
diff
changeset
|
245 Py_DECREF (line); |
|
774bf9a38b2a
Patches #1298449 and #1298499: Add some missing checks for error
Michael W. Hudson <mwh@python.net>
parents:
33213
diff
changeset
|
246 goto err; |
|
774bf9a38b2a
Patches #1298449 and #1298499: Add some missing checks for error
Michael W. Hudson <mwh@python.net>
parents:
33213
diff
changeset
|
247 } |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
248 Py_DECREF (line); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
249 length += n; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
250 if (hint > 0 && length >= hint) |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
251 break; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
252 } |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
253 return result; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
254 err: |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
255 Py_DECREF(result); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
256 return NULL; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
257 } |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
258 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
259 PyDoc_STRVAR(IO_reset__doc__, |
|
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
260 "reset() -- Reset the file position to the beginning"); |
| 4598 | 261 |
| 262 static PyObject * | |
|
27044
23280a64288e
SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents:
25087
diff
changeset
|
263 IO_reset(IOobject *self, PyObject *unused) { |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
264 |
| 36790 | 265 if (!IO__opencheck(self)) return NULL; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
266 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
267 self->pos = 0; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
268 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
269 Py_INCREF(Py_None); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
270 return Py_None; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
271 } |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
272 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
273 PyDoc_STRVAR(IO_tell__doc__, "tell() -- get the current position."); |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
274 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
275 static PyObject * |
|
27044
23280a64288e
SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents:
25087
diff
changeset
|
276 IO_tell(IOobject *self, PyObject *unused) { |
| 4598 | 277 |
| 36790 | 278 if (!IO__opencheck(self)) return NULL; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
279 |
|
36518
9f3f87e920a6
Use Py_ssize_t for counts and sizes.
Martin v. Löwis <martin@v.loewis.de>
parents:
36501
diff
changeset
|
280 return PyInt_FromSsize_t(self->pos); |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
281 } |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
282 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
283 PyDoc_STRVAR(IO_truncate__doc__, |
|
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
284 "truncate(): truncate the file at the current position."); |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
285 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
286 static PyObject * |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
287 IO_truncate(IOobject *self, PyObject *args) { |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
288 Py_ssize_t pos = -1; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
289 |
| 36790 | 290 if (!IO__opencheck(self)) return NULL; |
| 291 if (!PyArg_ParseTuple(args, "|n:truncate", &pos)) return NULL; | |
|
40358
0fdc2b8211f9
Make cStringIO.truncate raise IOError for negative
Martin v. Löwis <martin@v.loewis.de>
parents:
40143
diff
changeset
|
292 |
|
0fdc2b8211f9
Make cStringIO.truncate raise IOError for negative
Martin v. Löwis <martin@v.loewis.de>
parents:
40143
diff
changeset
|
293 if (PyTuple_Size(args) == 0) { |
|
0fdc2b8211f9
Make cStringIO.truncate raise IOError for negative
Martin v. Löwis <martin@v.loewis.de>
parents:
40143
diff
changeset
|
294 /* No argument passed, truncate to current position */ |
|
0fdc2b8211f9
Make cStringIO.truncate raise IOError for negative
Martin v. Löwis <martin@v.loewis.de>
parents:
40143
diff
changeset
|
295 pos = self->pos; |
|
0fdc2b8211f9
Make cStringIO.truncate raise IOError for negative
Martin v. Löwis <martin@v.loewis.de>
parents:
40143
diff
changeset
|
296 } |
|
0fdc2b8211f9
Make cStringIO.truncate raise IOError for negative
Martin v. Löwis <martin@v.loewis.de>
parents:
40143
diff
changeset
|
297 |
|
0fdc2b8211f9
Make cStringIO.truncate raise IOError for negative
Martin v. Löwis <martin@v.loewis.de>
parents:
40143
diff
changeset
|
298 if (pos < 0) { |
|
0fdc2b8211f9
Make cStringIO.truncate raise IOError for negative
Martin v. Löwis <martin@v.loewis.de>
parents:
40143
diff
changeset
|
299 errno = EINVAL; |
|
0fdc2b8211f9
Make cStringIO.truncate raise IOError for negative
Martin v. Löwis <martin@v.loewis.de>
parents:
40143
diff
changeset
|
300 PyErr_SetFromErrno(PyExc_IOError); |
|
0fdc2b8211f9
Make cStringIO.truncate raise IOError for negative
Martin v. Löwis <martin@v.loewis.de>
parents:
40143
diff
changeset
|
301 return NULL; |
|
0fdc2b8211f9
Make cStringIO.truncate raise IOError for negative
Martin v. Löwis <martin@v.loewis.de>
parents:
40143
diff
changeset
|
302 } |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
303 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
304 if (self->string_size > pos) self->string_size = pos; |
|
33213
db1bafa9b656
Patch 1012740: cStringIO's truncate doesn't
Tim Peters <tim.peters@gmail.com>
parents:
32423
diff
changeset
|
305 self->pos = self->string_size; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
306 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
307 Py_INCREF(Py_None); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
308 return Py_None; |
| 4598 | 309 } |
| 310 | |
|
28772
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
311 static PyObject * |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
312 IO_iternext(Iobject *self) |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
313 { |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
314 PyObject *next; |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
315 next = IO_readline((IOobject *)self, NULL); |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
316 if (!next) |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
317 return NULL; |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
318 if (!PyString_GET_SIZE(next)) { |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
319 Py_DECREF(next); |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
320 PyErr_SetNone(PyExc_StopIteration); |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
321 return NULL; |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
322 } |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
323 return next; |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
324 } |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
325 |
| 4598 | 326 |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
327 |
| 4598 | 328 |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
329 /* Read-write object methods */ |
| 4598 | 330 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
331 PyDoc_STRVAR(O_seek__doc__, |
| 4598 | 332 "seek(position) -- set the current position\n" |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
333 "seek(position, mode) -- mode 0: absolute; 1: relative; 2: relative to EOF"); |
| 4598 | 334 |
| 335 static PyObject * | |
|
5280
e8f8cf358054
Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents:
4957
diff
changeset
|
336 O_seek(Oobject *self, PyObject *args) { |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
337 Py_ssize_t position; |
|
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
338 int mode = 0; |
| 4598 | 339 |
| 36790 | 340 if (!IO__opencheck(IOOOBJECT(self))) return NULL; |
| 341 if (!PyArg_ParseTuple(args, "n|i:seek", &position, &mode)) | |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
342 return NULL; |
| 4598 | 343 |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
344 if (mode == 2) { |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
345 position += self->string_size; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
346 } |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
347 else if (mode == 1) { |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
348 position += self->pos; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
349 } |
| 4598 | 350 |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
351 if (position > self->buf_size) { |
|
41525
b68272449df4
Merge change 54909 from release25-maint: Fix several minor issues discovered using code analysis in VisualStudio 2005 Team Edition
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
40358
diff
changeset
|
352 char *newbuf; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
353 self->buf_size*=2; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
354 if (self->buf_size <= position) self->buf_size=position+1; |
|
41525
b68272449df4
Merge change 54909 from release25-maint: Fix several minor issues discovered using code analysis in VisualStudio 2005 Team Edition
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
40358
diff
changeset
|
355 newbuf = (char*) realloc(self->buf,self->buf_size); |
|
b68272449df4
Merge change 54909 from release25-maint: Fix several minor issues discovered using code analysis in VisualStudio 2005 Team Edition
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
40358
diff
changeset
|
356 if (!newbuf) { |
|
b68272449df4
Merge change 54909 from release25-maint: Fix several minor issues discovered using code analysis in VisualStudio 2005 Team Edition
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
40358
diff
changeset
|
357 free(self->buf); |
|
b68272449df4
Merge change 54909 from release25-maint: Fix several minor issues discovered using code analysis in VisualStudio 2005 Team Edition
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
40358
diff
changeset
|
358 self->buf = 0; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
359 self->buf_size=self->pos=0; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
360 return PyErr_NoMemory(); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
361 } |
|
41525
b68272449df4
Merge change 54909 from release25-maint: Fix several minor issues discovered using code analysis in VisualStudio 2005 Team Edition
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
40358
diff
changeset
|
362 self->buf = newbuf; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
363 } |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
364 else if (position < 0) position=0; |
| 4598 | 365 |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
366 self->pos=position; |
|
14679
08823099ae62
Implement readlines function. Closes Bug #110686.
Martin v. Löwis <martin@v.loewis.de>
parents:
13817
diff
changeset
|
367 |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
368 while (--position >= self->string_size) self->buf[position]=0; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
369 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
370 Py_INCREF(Py_None); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
371 return Py_None; |
|
14679
08823099ae62
Implement readlines function. Closes Bug #110686.
Martin v. Löwis <martin@v.loewis.de>
parents:
13817
diff
changeset
|
372 } |
|
08823099ae62
Implement readlines function. Closes Bug #110686.
Martin v. Löwis <martin@v.loewis.de>
parents:
13817
diff
changeset
|
373 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
374 PyDoc_STRVAR(O_write__doc__, |
| 4598 | 375 "write(s) -- Write a string to the file" |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
376 "\n\nNote (hack:) writing None resets the buffer"); |
| 4598 | 377 |
| 378 | |
| 379 static int | |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
380 O_cwrite(PyObject *self, const char *c, Py_ssize_t l) { |
|
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
381 Py_ssize_t newl; |
|
21294
24a6c3fd0e58
O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents:
20060
diff
changeset
|
382 Oobject *oself; |
|
41525
b68272449df4
Merge change 54909 from release25-maint: Fix several minor issues discovered using code analysis in VisualStudio 2005 Team Edition
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
40358
diff
changeset
|
383 char *newbuf; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
384 |
| 36790 | 385 if (!IO__opencheck(IOOOBJECT(self))) return -1; |
|
21294
24a6c3fd0e58
O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents:
20060
diff
changeset
|
386 oself = (Oobject *)self; |
| 4906 | 387 |
|
21294
24a6c3fd0e58
O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents:
20060
diff
changeset
|
388 newl = oself->pos+l; |
|
24a6c3fd0e58
O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents:
20060
diff
changeset
|
389 if (newl >= oself->buf_size) { |
|
24a6c3fd0e58
O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents:
20060
diff
changeset
|
390 oself->buf_size *= 2; |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
391 if (oself->buf_size <= newl) { |
|
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
392 assert(newl + 1 < INT_MAX); |
|
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
393 oself->buf_size = (int)(newl+1); |
|
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
394 } |
|
41525
b68272449df4
Merge change 54909 from release25-maint: Fix several minor issues discovered using code analysis in VisualStudio 2005 Team Edition
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
40358
diff
changeset
|
395 newbuf = (char*)realloc(oself->buf, oself->buf_size); |
|
b68272449df4
Merge change 54909 from release25-maint: Fix several minor issues discovered using code analysis in VisualStudio 2005 Team Edition
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
40358
diff
changeset
|
396 if (!newbuf) { |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
397 PyErr_SetString(PyExc_MemoryError,"out of memory"); |
|
41525
b68272449df4
Merge change 54909 from release25-maint: Fix several minor issues discovered using code analysis in VisualStudio 2005 Team Edition
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
40358
diff
changeset
|
398 free(oself->buf); |
|
b68272449df4
Merge change 54909 from release25-maint: Fix several minor issues discovered using code analysis in VisualStudio 2005 Team Edition
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
40358
diff
changeset
|
399 oself->buf = 0; |
|
21294
24a6c3fd0e58
O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents:
20060
diff
changeset
|
400 oself->buf_size = oself->pos = 0; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
401 return -1; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
402 } |
|
41525
b68272449df4
Merge change 54909 from release25-maint: Fix several minor issues discovered using code analysis in VisualStudio 2005 Team Edition
Kristján Valur Jónsson <kristjan@ccpgames.com>
parents:
40358
diff
changeset
|
403 oself->buf = newbuf; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
404 } |
| 4598 | 405 |
|
21294
24a6c3fd0e58
O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents:
20060
diff
changeset
|
406 memcpy(oself->buf+oself->pos,c,l); |
| 4598 | 407 |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
408 assert(oself->pos + l < INT_MAX); |
|
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
409 oself->pos += (int)l; |
| 4598 | 410 |
|
21294
24a6c3fd0e58
O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents:
20060
diff
changeset
|
411 if (oself->string_size < oself->pos) { |
|
24a6c3fd0e58
O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents:
20060
diff
changeset
|
412 oself->string_size = oself->pos; |
|
24a6c3fd0e58
O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents:
20060
diff
changeset
|
413 } |
| 4598 | 414 |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
415 return (int)l; |
| 4598 | 416 } |
| 417 | |
| 418 static PyObject * | |
|
5280
e8f8cf358054
Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents:
4957
diff
changeset
|
419 O_write(Oobject *self, PyObject *args) { |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
420 char *c; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
421 int l; |
| 4598 | 422 |
| 36790 | 423 if (!PyArg_ParseTuple(args, "t#:write", &c, &l)) return NULL; |
|
5991
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
424 |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
425 if (O_cwrite((PyObject*)self,c,l) < 0) return NULL; |
| 4598 | 426 |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
427 Py_INCREF(Py_None); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
428 return Py_None; |
| 4598 | 429 } |
| 430 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
431 PyDoc_STRVAR(O_close__doc__, "close(): explicitly release resources held."); |
| 4598 | 432 |
| 433 static PyObject * | |
|
27044
23280a64288e
SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents:
25087
diff
changeset
|
434 O_close(Oobject *self, PyObject *unused) { |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
435 if (self->buf != NULL) free(self->buf); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
436 self->buf = NULL; |
| 4598 | 437 |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
438 self->pos = self->string_size = self->buf_size = 0; |
| 4598 | 439 |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
440 Py_INCREF(Py_None); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
441 return Py_None; |
| 4598 | 442 } |
| 443 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
444 PyDoc_STRVAR(O_writelines__doc__, |
|
31626
1543afab1b67
SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents:
31593
diff
changeset
|
445 "writelines(sequence_of_strings) -> None. Write the strings to the file.\n" |
|
1543afab1b67
SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents:
31593
diff
changeset
|
446 "\n" |
|
1543afab1b67
SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents:
31593
diff
changeset
|
447 "Note that newlines are not added. The sequence can be any iterable object\n" |
|
1543afab1b67
SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents:
31593
diff
changeset
|
448 "producing strings. This is equivalent to calling write() for each string."); |
| 4598 | 449 static PyObject * |
|
5280
e8f8cf358054
Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents:
4957
diff
changeset
|
450 O_writelines(Oobject *self, PyObject *args) { |
|
31626
1543afab1b67
SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents:
31593
diff
changeset
|
451 PyObject *it, *s; |
|
1543afab1b67
SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents:
31593
diff
changeset
|
452 |
|
1543afab1b67
SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents:
31593
diff
changeset
|
453 it = PyObject_GetIter(args); |
|
1543afab1b67
SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents:
31593
diff
changeset
|
454 if (it == NULL) |
|
1543afab1b67
SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents:
31593
diff
changeset
|
455 return NULL; |
|
1543afab1b67
SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents:
31593
diff
changeset
|
456 while ((s = PyIter_Next(it)) != NULL) { |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
457 Py_ssize_t n; |
|
31626
1543afab1b67
SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents:
31593
diff
changeset
|
458 char *c; |
|
1543afab1b67
SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents:
31593
diff
changeset
|
459 if (PyString_AsStringAndSize(s, &c, &n) == -1) { |
|
1543afab1b67
SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents:
31593
diff
changeset
|
460 Py_DECREF(it); |
|
1543afab1b67
SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents:
31593
diff
changeset
|
461 Py_DECREF(s); |
|
16546
60a2e99c863b
In O_writelines: Replace use of string.joinfields with "".join.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
15059
diff
changeset
|
462 return NULL; |
|
31626
1543afab1b67
SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents:
31593
diff
changeset
|
463 } |
|
1543afab1b67
SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents:
31593
diff
changeset
|
464 if (O_cwrite((PyObject *)self, c, n) == -1) { |
|
1543afab1b67
SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents:
31593
diff
changeset
|
465 Py_DECREF(it); |
|
1543afab1b67
SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents:
31593
diff
changeset
|
466 Py_DECREF(s); |
|
16546
60a2e99c863b
In O_writelines: Replace use of string.joinfields with "".join.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
15059
diff
changeset
|
467 return NULL; |
|
35623
774bf9a38b2a
Patches #1298449 and #1298499: Add some missing checks for error
Michael W. Hudson <mwh@python.net>
parents:
33213
diff
changeset
|
468 } |
|
774bf9a38b2a
Patches #1298449 and #1298499: Add some missing checks for error
Michael W. Hudson <mwh@python.net>
parents:
33213
diff
changeset
|
469 Py_DECREF(s); |
|
774bf9a38b2a
Patches #1298449 and #1298499: Add some missing checks for error
Michael W. Hudson <mwh@python.net>
parents:
33213
diff
changeset
|
470 } |
|
774bf9a38b2a
Patches #1298449 and #1298499: Add some missing checks for error
Michael W. Hudson <mwh@python.net>
parents:
33213
diff
changeset
|
471 |
|
774bf9a38b2a
Patches #1298449 and #1298499: Add some missing checks for error
Michael W. Hudson <mwh@python.net>
parents:
33213
diff
changeset
|
472 Py_DECREF(it); |
|
774bf9a38b2a
Patches #1298449 and #1298499: Add some missing checks for error
Michael W. Hudson <mwh@python.net>
parents:
33213
diff
changeset
|
473 |
|
774bf9a38b2a
Patches #1298449 and #1298499: Add some missing checks for error
Michael W. Hudson <mwh@python.net>
parents:
33213
diff
changeset
|
474 /* See if PyIter_Next failed */ |
|
774bf9a38b2a
Patches #1298449 and #1298499: Add some missing checks for error
Michael W. Hudson <mwh@python.net>
parents:
33213
diff
changeset
|
475 if (PyErr_Occurred()) |
|
774bf9a38b2a
Patches #1298449 and #1298499: Add some missing checks for error
Michael W. Hudson <mwh@python.net>
parents:
33213
diff
changeset
|
476 return NULL; |
|
774bf9a38b2a
Patches #1298449 and #1298499: Add some missing checks for error
Michael W. Hudson <mwh@python.net>
parents:
33213
diff
changeset
|
477 |
|
774bf9a38b2a
Patches #1298449 and #1298499: Add some missing checks for error
Michael W. Hudson <mwh@python.net>
parents:
33213
diff
changeset
|
478 Py_RETURN_NONE; |
| 4598 | 479 } |
| 480 static struct PyMethodDef O_methods[] = { | |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
481 /* Common methods: */ |
|
27044
23280a64288e
SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents:
25087
diff
changeset
|
482 {"flush", (PyCFunction)IO_flush, METH_NOARGS, IO_flush__doc__}, |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
483 {"getvalue", (PyCFunction)IO_getval, METH_VARARGS, IO_getval__doc__}, |
|
27044
23280a64288e
SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents:
25087
diff
changeset
|
484 {"isatty", (PyCFunction)IO_isatty, METH_NOARGS, IO_isatty__doc__}, |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
485 {"read", (PyCFunction)IO_read, METH_VARARGS, IO_read__doc__}, |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
486 {"readline", (PyCFunction)IO_readline, METH_VARARGS, IO_readline__doc__}, |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
487 {"readlines", (PyCFunction)IO_readlines,METH_VARARGS, IO_readlines__doc__}, |
|
27044
23280a64288e
SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents:
25087
diff
changeset
|
488 {"reset", (PyCFunction)IO_reset, METH_NOARGS, IO_reset__doc__}, |
|
23280a64288e
SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents:
25087
diff
changeset
|
489 {"tell", (PyCFunction)IO_tell, METH_NOARGS, IO_tell__doc__}, |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
490 {"truncate", (PyCFunction)IO_truncate, METH_VARARGS, IO_truncate__doc__}, |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
491 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
492 /* Read-write StringIO specific methods: */ |
|
27044
23280a64288e
SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents:
25087
diff
changeset
|
493 {"close", (PyCFunction)O_close, METH_NOARGS, O_close__doc__}, |
| 9642 | 494 {"seek", (PyCFunction)O_seek, METH_VARARGS, O_seek__doc__}, |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
495 {"write", (PyCFunction)O_write, METH_VARARGS, O_write__doc__}, |
|
27044
23280a64288e
SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents:
25087
diff
changeset
|
496 {"writelines", (PyCFunction)O_writelines, METH_O, O_writelines__doc__}, |
| 9642 | 497 {NULL, NULL} /* sentinel */ |
| 4598 | 498 }; |
| 499 | |
|
28772
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
500 static PyMemberDef O_memberlist[] = { |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
501 {"softspace", T_INT, offsetof(Oobject, softspace), 0, |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
502 "flag indicating that a space needs to be printed; used by print"}, |
|
30096
06016d5d81d7
SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents:
28772
diff
changeset
|
503 /* getattr(f, "closed") is implemented without this table */ |
|
28772
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
504 {NULL} /* Sentinel */ |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
505 }; |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
506 |
| 4598 | 507 static void |
|
5280
e8f8cf358054
Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents:
4957
diff
changeset
|
508 O_dealloc(Oobject *self) { |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
509 if (self->buf != NULL) |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
510 free(self->buf); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
511 PyObject_Del(self); |
| 4598 | 512 } |
| 513 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
514 PyDoc_STRVAR(Otype__doc__, "Simple type for output to strings."); |
| 4598 | 515 |
| 516 static PyTypeObject Otype = { | |
|
42333
6620a510e9a9
PEP 3123: Provide forward compatibility with Python 3.0, while keeping
Martin v. Löwis <martin@v.loewis.de>
parents:
41525
diff
changeset
|
517 PyVarObject_HEAD_INIT(NULL, 0) |
|
30126
6842ceb39a14
reverting to 2.41 version (distinct tp_names) - will add verbiage to the
Skip Montanaro <skip@pobox.com>
parents:
30125
diff
changeset
|
518 "cStringIO.StringO", /*tp_name*/ |
|
5280
e8f8cf358054
Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents:
4957
diff
changeset
|
519 sizeof(Oobject), /*tp_basicsize*/ |
|
28772
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
520 0, /*tp_itemsize*/ |
|
5280
e8f8cf358054
Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents:
4957
diff
changeset
|
521 /* methods */ |
|
e8f8cf358054
Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents:
4957
diff
changeset
|
522 (destructor)O_dealloc, /*tp_dealloc*/ |
|
37305
5e1b6f553763
Remove unnecessary casts from type object initializers.
Georg Brandl <georg@python.org>
parents:
37005
diff
changeset
|
523 0, /*tp_print*/ |
|
28772
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
524 0, /*tp_getattr */ |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
525 0, /*tp_setattr */ |
|
37305
5e1b6f553763
Remove unnecessary casts from type object initializers.
Georg Brandl <georg@python.org>
parents:
37005
diff
changeset
|
526 0, /*tp_compare*/ |
|
5e1b6f553763
Remove unnecessary casts from type object initializers.
Georg Brandl <georg@python.org>
parents:
37005
diff
changeset
|
527 0, /*tp_repr*/ |
|
28772
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
528 0, /*tp_as_number*/ |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
529 0, /*tp_as_sequence*/ |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
530 0, /*tp_as_mapping*/ |
|
37305
5e1b6f553763
Remove unnecessary casts from type object initializers.
Georg Brandl <georg@python.org>
parents:
37005
diff
changeset
|
531 0, /*tp_hash*/ |
|
5e1b6f553763
Remove unnecessary casts from type object initializers.
Georg Brandl <georg@python.org>
parents:
37005
diff
changeset
|
532 0 , /*tp_call*/ |
|
5e1b6f553763
Remove unnecessary casts from type object initializers.
Georg Brandl <georg@python.org>
parents:
37005
diff
changeset
|
533 0, /*tp_str*/ |
|
28772
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
534 0, /*tp_getattro */ |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
535 0, /*tp_setattro */ |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
536 0, /*tp_as_buffer */ |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
537 Py_TPFLAGS_DEFAULT, /*tp_flags*/ |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
538 Otype__doc__, /*tp_doc */ |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
539 0, /*tp_traverse */ |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
540 0, /*tp_clear */ |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
541 0, /*tp_richcompare */ |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
542 0, /*tp_weaklistoffset */ |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
543 PyObject_SelfIter, /*tp_iter */ |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
544 (iternextfunc)IO_iternext, /*tp_iternext */ |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
545 O_methods, /*tp_methods */ |
|
30096
06016d5d81d7
SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents:
28772
diff
changeset
|
546 O_memberlist, /*tp_members */ |
|
06016d5d81d7
SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents:
28772
diff
changeset
|
547 file_getsetlist, /*tp_getset */ |
| 4598 | 548 }; |
| 549 | |
|
5991
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
550 static PyObject * |
|
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
551 newOobject(int size) { |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
552 Oobject *self; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
553 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
554 self = PyObject_New(Oobject, &Otype); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
555 if (self == NULL) |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
556 return NULL; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
557 self->pos=0; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
558 self->string_size = 0; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
559 self->softspace = 0; |
|
5991
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
560 |
| 36790 | 561 self->buf = (char *)malloc(size); |
| 562 if (!self->buf) { | |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
563 PyErr_SetString(PyExc_MemoryError,"out of memory"); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
564 self->buf_size = 0; |
|
36877
e9a7a2784e17
SF #1444030: Fix several potential defects found by Coverity.
Hye-Shik Chang <hyeshik@gmail.com>
parents:
36790
diff
changeset
|
565 Py_DECREF(self); |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
566 return NULL; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
567 } |
|
5991
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
568 |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
569 self->buf_size=size; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
570 return (PyObject*)self; |
|
5991
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
571 } |
|
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
572 |
|
30125
4b46d5449d49
shit - just change the visible name, not the comments - strictly speaking,
Skip Montanaro <skip@pobox.com>
parents:
30124
diff
changeset
|
573 /* End of code for StringO objects */ |
| 4598 | 574 /* -------------------------------------------------------- */ |
| 575 | |
| 576 static PyObject * | |
|
27044
23280a64288e
SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents:
25087
diff
changeset
|
577 I_close(Iobject *self, PyObject *unused) { |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
578 Py_XDECREF(self->pbuf); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
579 self->pbuf = NULL; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
580 self->buf = NULL; |
| 9642 | 581 |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
582 self->pos = self->string_size = 0; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
583 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
584 Py_INCREF(Py_None); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
585 return Py_None; |
| 9642 | 586 } |
| 587 | |
| 588 static PyObject * | |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
589 I_seek(Iobject *self, PyObject *args) { |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
590 Py_ssize_t position; |
|
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
591 int mode = 0; |
| 9642 | 592 |
| 36790 | 593 if (!IO__opencheck(IOOOBJECT(self))) return NULL; |
| 594 if (!PyArg_ParseTuple(args, "n|i:seek", &position, &mode)) | |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
595 return NULL; |
| 9642 | 596 |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
597 if (mode == 2) position += self->string_size; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
598 else if (mode == 1) position += self->pos; |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
599 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
600 if (position < 0) position=0; |
| 9642 | 601 |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
602 self->pos=position; |
| 4598 | 603 |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
604 Py_INCREF(Py_None); |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
605 return Py_None; |
| 4598 | 606 } |
| 607 | |
| 608 static struct PyMethodDef I_methods[] = { | |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
609 /* Common methods: */ |
|
27044
23280a64288e
SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents:
25087
diff
changeset
|
610 {"flush", (PyCFunction)IO_flush, METH_NOARGS, IO_flush__doc__}, |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
611 {"getvalue", (PyCFunction)IO_getval, METH_VARARGS, IO_getval__doc__}, |
|
27044
23280a64288e
SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents:
25087
diff
changeset
|
612 {"isatty", (PyCFunction)IO_isatty, METH_NOARGS, IO_isatty__doc__}, |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
613 {"read", (PyCFunction)IO_read, METH_VARARGS, IO_read__doc__}, |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
614 {"readline", (PyCFunction)IO_readline, METH_VARARGS, IO_readline__doc__}, |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
615 {"readlines", (PyCFunction)IO_readlines,METH_VARARGS, IO_readlines__doc__}, |
|
27044
23280a64288e
SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents:
25087
diff
changeset
|
616 {"reset", (PyCFunction)IO_reset, METH_NOARGS, IO_reset__doc__}, |
|
23280a64288e
SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents:
25087
diff
changeset
|
617 {"tell", (PyCFunction)IO_tell, METH_NOARGS, IO_tell__doc__}, |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
618 {"truncate", (PyCFunction)IO_truncate, METH_VARARGS, IO_truncate__doc__}, |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
619 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
620 /* Read-only StringIO specific methods: */ |
|
27044
23280a64288e
SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents:
25087
diff
changeset
|
621 {"close", (PyCFunction)I_close, METH_NOARGS, O_close__doc__}, |
| 9642 | 622 {"seek", (PyCFunction)I_seek, METH_VARARGS, O_seek__doc__}, |
| 623 {NULL, NULL} | |
| 4598 | 624 }; |
| 625 | |
| 626 static void | |
|
5280
e8f8cf358054
Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents:
4957
diff
changeset
|
627 I_dealloc(Iobject *self) { |
|
6215
eb7a01b86f93
Fix the bug Jeremy was experiencing: both the close() and the
Guido van Rossum <guido@python.org>
parents:
5991
diff
changeset
|
628 Py_XDECREF(self->pbuf); |
|
12576
1c7c2dd1beb1
Vladimir Marangozov's long-awaited malloc restructuring.
Guido van Rossum <guido@python.org>
parents:
12385
diff
changeset
|
629 PyObject_Del(self); |
| 4598 | 630 } |
| 631 | |
|
20033
104b5c9b88ea
I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents:
16546
diff
changeset
|
632 |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
633 PyDoc_STRVAR(Itype__doc__, |
|
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
634 "Simple type for treating strings as input file streams"); |
| 4598 | 635 |
| 636 static PyTypeObject Itype = { | |
|
42333
6620a510e9a9
PEP 3123: Provide forward compatibility with Python 3.0, while keeping
Martin v. Löwis <martin@v.loewis.de>
parents:
41525
diff
changeset
|
637 PyVarObject_HEAD_INIT(NULL, 0) |
|
30126
6842ceb39a14
reverting to 2.41 version (distinct tp_names) - will add verbiage to the
Skip Montanaro <skip@pobox.com>
parents:
30125
diff
changeset
|
638 "cStringIO.StringI", /*tp_name*/ |
|
20033
104b5c9b88ea
I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents:
16546
diff
changeset
|
639 sizeof(Iobject), /*tp_basicsize*/ |
|
104b5c9b88ea
I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents:
16546
diff
changeset
|
640 0, /*tp_itemsize*/ |
|
5280
e8f8cf358054
Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents:
4957
diff
changeset
|
641 /* methods */ |
|
20033
104b5c9b88ea
I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents:
16546
diff
changeset
|
642 (destructor)I_dealloc, /*tp_dealloc*/ |
|
37305
5e1b6f553763
Remove unnecessary casts from type object initializers.
Georg Brandl <georg@python.org>
parents:
37005
diff
changeset
|
643 0, /*tp_print*/ |
|
28772
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
644 0, /* tp_getattr */ |
|
37305
5e1b6f553763
Remove unnecessary casts from type object initializers.
Georg Brandl <georg@python.org>
parents:
37005
diff
changeset
|
645 0, /*tp_setattr*/ |
|
5e1b6f553763
Remove unnecessary casts from type object initializers.
Georg Brandl <georg@python.org>
parents:
37005
diff
changeset
|
646 0, /*tp_compare*/ |
|
5e1b6f553763
Remove unnecessary casts from type object initializers.
Georg Brandl <georg@python.org>
parents:
37005
diff
changeset
|
647 0, /*tp_repr*/ |
|
20033
104b5c9b88ea
I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents:
16546
diff
changeset
|
648 0, /*tp_as_number*/ |
|
104b5c9b88ea
I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents:
16546
diff
changeset
|
649 0, /*tp_as_sequence*/ |
|
104b5c9b88ea
I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents:
16546
diff
changeset
|
650 0, /*tp_as_mapping*/ |
|
37305
5e1b6f553763
Remove unnecessary casts from type object initializers.
Georg Brandl <georg@python.org>
parents:
37005
diff
changeset
|
651 0, /*tp_hash*/ |
|
5e1b6f553763
Remove unnecessary casts from type object initializers.
Georg Brandl <georg@python.org>
parents:
37005
diff
changeset
|
652 0, /*tp_call*/ |
|
5e1b6f553763
Remove unnecessary casts from type object initializers.
Georg Brandl <georg@python.org>
parents:
37005
diff
changeset
|
653 0, /*tp_str*/ |
|
20033
104b5c9b88ea
I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents:
16546
diff
changeset
|
654 0, /* tp_getattro */ |
|
104b5c9b88ea
I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents:
16546
diff
changeset
|
655 0, /* tp_setattro */ |
|
104b5c9b88ea
I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents:
16546
diff
changeset
|
656 0, /* tp_as_buffer */ |
|
104b5c9b88ea
I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents:
16546
diff
changeset
|
657 Py_TPFLAGS_DEFAULT, /* tp_flags */ |
|
104b5c9b88ea
I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents:
16546
diff
changeset
|
658 Itype__doc__, /* tp_doc */ |
|
104b5c9b88ea
I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents:
16546
diff
changeset
|
659 0, /* tp_traverse */ |
|
104b5c9b88ea
I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents:
16546
diff
changeset
|
660 0, /* tp_clear */ |
|
104b5c9b88ea
I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents:
16546
diff
changeset
|
661 0, /* tp_richcompare */ |
|
104b5c9b88ea
I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents:
16546
diff
changeset
|
662 0, /* tp_weaklistoffset */ |
|
28772
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
663 PyObject_SelfIter, /* tp_iter */ |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
664 (iternextfunc)IO_iternext, /* tp_iternext */ |
|
30096
06016d5d81d7
SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents:
28772
diff
changeset
|
665 I_methods, /* tp_methods */ |
|
06016d5d81d7
SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents:
28772
diff
changeset
|
666 0, /* tp_members */ |
|
06016d5d81d7
SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents:
28772
diff
changeset
|
667 file_getsetlist, /* tp_getset */ |
| 4598 | 668 }; |
| 669 | |
|
5991
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
670 static PyObject * |
|
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
671 newIobject(PyObject *s) { |
|
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
672 Iobject *self; |
|
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
673 char *buf; |
|
36501
7fdc639bc5b4
Merge ssize_t branch.
Martin v. Löwis <martin@v.loewis.de>
parents:
36324
diff
changeset
|
674 Py_ssize_t size; |
|
12385
627226df9f01
raise TypeError when bad argument passed to cStringIO.StringIO
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
11882
diff
changeset
|
675 |
|
42492
86fd39c2c676
Revert the fix for #1548891, it broke backwards compatibility with arbitrary read buffers.
Georg Brandl <georg@python.org>
parents:
42333
diff
changeset
|
676 if (PyObject_AsReadBuffer(s, (const char **)&buf, &size)) { |
|
86fd39c2c676
Revert the fix for #1548891, it broke backwards compatibility with arbitrary read buffers.
Georg Brandl <georg@python.org>
parents:
42333
diff
changeset
|
677 PyErr_Format(PyExc_TypeError, "expected read buffer, %.200s found", |
|
86fd39c2c676
Revert the fix for #1548891, it broke backwards compatibility with arbitrary read buffers.
Georg Brandl <georg@python.org>
parents:
42333
diff
changeset
|
678 s->ob_type->tp_name); |
|
86fd39c2c676
Revert the fix for #1548891, it broke backwards compatibility with arbitrary read buffers.
Georg Brandl <georg@python.org>
parents:
42333
diff
changeset
|
679 return NULL; |
|
86fd39c2c676
Revert the fix for #1548891, it broke backwards compatibility with arbitrary read buffers.
Georg Brandl <georg@python.org>
parents:
42333
diff
changeset
|
680 } |
|
40099
647598c1a9d9
Bug #1548891: The cStringIO.StringIO() constructor now encodes unicode
Georg Brandl <georg@python.org>
parents:
37305
diff
changeset
|
681 |
| 36790 | 682 self = PyObject_New(Iobject, &Itype); |
| 683 if (!self) return NULL; | |
|
5991
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
684 Py_INCREF(s); |
|
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
685 self->buf=buf; |
|
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
686 self->string_size=size; |
|
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
687 self->pbuf=s; |
|
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
688 self->pos=0; |
|
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
689 |
|
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
690 return (PyObject*)self; |
|
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
691 } |
|
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
692 |
| 4598 | 693 /* End of code for StringI objects */ |
| 694 /* -------------------------------------------------------- */ | |
| 695 | |
| 696 | |
|
23832
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
697 PyDoc_STRVAR(IO_StringIO__doc__, |
|
ed1ba37a46b7
Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents:
23301
diff
changeset
|
698 "StringIO([s]) -- Return a StringIO-like stream for reading or writing"); |
| 4598 | 699 |
| 700 static PyObject * | |
|
5280
e8f8cf358054
Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents:
4957
diff
changeset
|
701 IO_StringIO(PyObject *self, PyObject *args) { |
| 4598 | 702 PyObject *s=0; |
| 703 | |
|
27044
23280a64288e
SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents:
25087
diff
changeset
|
704 if (!PyArg_UnpackTuple(args, "StringIO", 0, 1, &s)) return NULL; |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
705 |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
706 if (s) return newIobject(s); |
|
5280
e8f8cf358054
Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents:
4957
diff
changeset
|
707 return newOobject(128); |
| 4598 | 708 } |
| 709 | |
| 710 /* List of methods defined in the module */ | |
| 711 | |
| 712 static struct PyMethodDef IO_methods[] = { | |
|
13817
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13690
diff
changeset
|
713 {"StringIO", (PyCFunction)IO_StringIO, |
|
3c0f75a2198f
Use METH_VARARGS instead of numeric constant 1 in method def. tables
Andrew M. Kuchling <amk@amk.ca>
parents:
13690
diff
changeset
|
714 METH_VARARGS, IO_StringIO__doc__}, |
| 4906 | 715 {NULL, NULL} /* sentinel */ |
| 4598 | 716 }; |
| 717 | |
| 718 | |
| 719 /* Initialization function for the module (*must* be called initcStringIO) */ | |
| 720 | |
|
5280
e8f8cf358054
Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents:
4957
diff
changeset
|
721 static struct PycStringIO_CAPI CAPI = { |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
722 IO_cread, |
|
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
723 IO_creadline, |
|
5280
e8f8cf358054
Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents:
4957
diff
changeset
|
724 O_cwrite, |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
725 IO_cgetval, |
|
5280
e8f8cf358054
Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents:
4957
diff
changeset
|
726 newOobject, |
|
e8f8cf358054
Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents:
4957
diff
changeset
|
727 newIobject, |
|
e8f8cf358054
Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents:
4957
diff
changeset
|
728 &Itype, |
|
e8f8cf358054
Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents:
4957
diff
changeset
|
729 &Otype, |
|
e8f8cf358054
Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents:
4957
diff
changeset
|
730 }; |
|
e8f8cf358054
Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents:
4957
diff
changeset
|
731 |
|
24471
f66b3a3509c7
Excise DL_EXPORT/DL_IMPORT from Modules/*. Required adding a prototype
Mark Hammond <mhammond@skippinet.com.au>
parents:
23832
diff
changeset
|
732 #ifndef PyMODINIT_FUNC /* declarations for DLL import/export */ |
|
f66b3a3509c7
Excise DL_EXPORT/DL_IMPORT from Modules/*. Required adding a prototype
Mark Hammond <mhammond@skippinet.com.au>
parents:
23832
diff
changeset
|
733 #define PyMODINIT_FUNC void |
| 9642 | 734 #endif |
|
24471
f66b3a3509c7
Excise DL_EXPORT/DL_IMPORT from Modules/*. Required adding a prototype
Mark Hammond <mhammond@skippinet.com.au>
parents:
23832
diff
changeset
|
735 PyMODINIT_FUNC |
|
13690
c09c0171474f
ANSIfy some more forward declarations.
Thomas Wouters <thomas@python.org>
parents:
13620
diff
changeset
|
736 initcStringIO(void) { |
|
6227
613f976a57b4
#Plug small memory leaks in constructors.
Guido van Rossum <guido@python.org>
parents:
6215
diff
changeset
|
737 PyObject *m, *d, *v; |
| 4598 | 738 |
|
5280
e8f8cf358054
Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents:
4957
diff
changeset
|
739 |
| 4598 | 740 /* Create the module and add the functions */ |
| 741 m = Py_InitModule4("cStringIO", IO_methods, | |
| 742 cStringIO_module_documentation, | |
| 743 (PyObject*)NULL,PYTHON_API_VERSION); | |
|
36324
1af7f719ed28
Check return result from Py_InitModule*(). This API can fail.
Neal Norwitz <nnorwitz@gmail.com>
parents:
35999
diff
changeset
|
744 if (m == NULL) return; |
| 4598 | 745 |
| 746 /* Add some symbolic constants to the module */ | |
| 747 d = PyModule_GetDict(m); | |
| 748 | |
| 4906 | 749 /* Export C API */ |
|
42333
6620a510e9a9
PEP 3123: Provide forward compatibility with Python 3.0, while keeping
Martin v. Löwis <martin@v.loewis.de>
parents:
41525
diff
changeset
|
750 Py_Type(&Itype)=&PyType_Type; |
|
6620a510e9a9
PEP 3123: Provide forward compatibility with Python 3.0, while keeping
Martin v. Löwis <martin@v.loewis.de>
parents:
41525
diff
changeset
|
751 Py_Type(&Otype)=&PyType_Type; |
|
28772
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
752 if (PyType_Ready(&Otype) < 0) return; |
|
0ea5991f6edb
SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents:
27044
diff
changeset
|
753 if (PyType_Ready(&Itype) < 0) return; |
|
6227
613f976a57b4
#Plug small memory leaks in constructors.
Guido van Rossum <guido@python.org>
parents:
6215
diff
changeset
|
754 PyDict_SetItemString(d,"cStringIO_CAPI", |
|
613f976a57b4
#Plug small memory leaks in constructors.
Guido van Rossum <guido@python.org>
parents:
6215
diff
changeset
|
755 v = PyCObject_FromVoidPtr(&CAPI,NULL)); |
|
613f976a57b4
#Plug small memory leaks in constructors.
Guido van Rossum <guido@python.org>
parents:
6215
diff
changeset
|
756 Py_XDECREF(v); |
|
5280
e8f8cf358054
Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents:
4957
diff
changeset
|
757 |
|
e8f8cf358054
Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents:
4957
diff
changeset
|
758 /* Export Types */ |
| 4598 | 759 PyDict_SetItemString(d,"InputType", (PyObject*)&Itype); |
| 760 PyDict_SetItemString(d,"OutputType", (PyObject*)&Otype); | |
|
5991
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
761 |
|
a5737dd96979
cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents:
5315
diff
changeset
|
762 /* Maybe make certain warnings go away */ |
|
15059
acb88607b4bd
Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents:
14679
diff
changeset
|
763 if (0) PycString_IMPORT; |
| 4598 | 764 } |
