annotate Modules/cStringIO.c @ 31965:ef34dec004cd legacy-trunk

Stacks based on lists work better and read more clearly when they grow and shrink on the right.
author Raymond Hettinger <python@rcn.com>
date Tue, 04 May 2004 08:21:52 +0000
parents 1543afab1b67
children 64534fb3afcd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 "A simple fast partial StringIO replacement.\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
9 "\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 "This module provides a simple useful replacement for\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
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
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 "pickle module.\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 "\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 "Usage:\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 "\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 " from cStringIO import StringIO\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 "\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 " an_output_stream=StringIO()\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 " an_output_stream.write(some_stuff)\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
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
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 "\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 " an_input_stream=StringIO(a_string)\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 " spam=an_input_stream.readline()\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
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
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 " spam=an_input_stream.read() # and read it all\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 " \n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
31 "If someone else wants to provide a more complete implementation,\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
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
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
35
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
36 #define UNLESS(E) if (!(E))
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
37
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
38
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
39 /* Declaration for file-like objects that manage data as strings
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
40
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
41 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
42 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
43 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
44 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
45 */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
46
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 typedef struct {
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 PyObject_HEAD
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
49 char *buf;
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
50 int 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
51 } IOobject;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
52
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
53 #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
54
30125
4b46d5449d49 shit - just change the visible name, not the comments - strictly speaking,
Skip Montanaro <skip@pobox.com>
parents: 30124
diff changeset
55 /* 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
56
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
57 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
58 PyObject_HEAD
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
59 char *buf;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
60 int pos, string_size;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
61
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
62 int buf_size, softspace;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
63 } Oobject;
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 /* 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
66
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
67 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
68 PyObject_HEAD
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
69 char *buf;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
70 int 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
71 /* 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
72 the buffer alive during the lifetime of the Iobject. */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
73 PyObject *pbuf;
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
74 } Iobject;
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
75
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
76 /* IOobject (common) methods */
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
77
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
78 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
79
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
80 static int
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
81 IO__opencheck(IOobject *self) {
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
82 UNLESS (self->buf) {
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
83 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
84 "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
85 return 0;
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 return 1;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
88 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
89
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
90 static PyObject *
30096
06016d5d81d7 SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents: 28772
diff changeset
91 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
92 {
06016d5d81d7 SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents: 28772
diff changeset
93 PyObject *result = Py_False;
06016d5d81d7 SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents: 28772
diff changeset
94
06016d5d81d7 SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents: 28772
diff changeset
95 if (self->buf == NULL)
06016d5d81d7 SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents: 28772
diff changeset
96 result = Py_True;
06016d5d81d7 SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents: 28772
diff changeset
97 Py_INCREF(result);
06016d5d81d7 SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents: 28772
diff changeset
98 return result;
06016d5d81d7 SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents: 28772
diff changeset
99 }
06016d5d81d7 SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents: 28772
diff changeset
100
06016d5d81d7 SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents: 28772
diff changeset
101 static PyGetSetDef file_getsetlist[] = {
06016d5d81d7 SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents: 28772
diff changeset
102 {"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
103 {0},
06016d5d81d7 SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents: 28772
diff changeset
104 };
06016d5d81d7 SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents: 28772
diff changeset
105
06016d5d81d7 SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents: 28772
diff changeset
106 static PyObject *
27044
23280a64288e SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents: 25087
diff changeset
107 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
108
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
109 UNLESS (IO__opencheck(self)) return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
110
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
111 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
112 return Py_None;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
113 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
114
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
115 PyDoc_STRVAR(IO_getval__doc__,
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
116 "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
117 "\n"
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
118 "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
119 "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
120
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
121 static PyObject *
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
122 IO_cgetval(PyObject *self) {
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
123 UNLESS (IO__opencheck(IOOOBJECT(self))) return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
124 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
125 ((IOobject*)self)->pos);
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
126 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
127
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
128 static PyObject *
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
129 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
130 PyObject *use_pos=Py_None;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
131 int s;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
132
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
133 UNLESS (IO__opencheck(self)) return NULL;
27044
23280a64288e SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents: 25087
diff changeset
134 UNLESS (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
135
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
136 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
137 s=self->pos;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
138 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
139 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
140 else
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
141 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
142 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
143 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
144
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
145 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
146
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
147 static PyObject *
27044
23280a64288e SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents: 25087
diff changeset
148 IO_isatty(IOobject *self, PyObject *unused) {
25087
9a178adb4e2d SF bug 601775 - some int results that should be bool.
Guido van Rossum <guido@python.org>
parents: 24471
diff changeset
149 Py_INCREF(Py_False);
9a178adb4e2d SF bug 601775 - some int results that should be bool.
Guido van Rossum <guido@python.org>
parents: 24471
diff changeset
150 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
151 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
152
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
153 PyDoc_STRVAR(IO_read__doc__,
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
154 "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
155
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
156 static int
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
157 IO_cread(PyObject *self, char **output, int n) {
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
158 int l;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
159
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
160 UNLESS (IO__opencheck(IOOOBJECT(self))) return -1;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
161 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
162 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
163 n = l;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
164 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
165 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
166
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
167 *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
168 ((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
169 return n;
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
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
172 static PyObject *
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
173 IO_read(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
174 int n = -1;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
175 char *output;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
176
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
177 UNLESS (PyArg_ParseTuple(args, "|i:read", &n)) return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
178
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
179 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
180
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
181 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
182 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
183
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
184 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
185
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
186 static int
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
187 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
188 char *n, *s;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
189 int l;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
190
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
191 UNLESS (IO__opencheck(IOOOBJECT(self))) return -1;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
192
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
193 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
194 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
195 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
196 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
197
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
198 *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
199 l = 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
200 ((IOobject*)self)->pos += l;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
201 return l;
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)
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
210 UNLESS (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
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
230 UNLESS (PyArg_ParseTuple(args, "|i:readlines", &hint)) return NULL;
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;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
244 PyList_Append (result, line);
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
245 Py_DECREF (line);
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
246 length += n;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
247 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
248 break;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
249 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
250 return result;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
251 err:
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
252 Py_DECREF(result);
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
253 return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
254 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
255
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
256 PyDoc_STRVAR(IO_reset__doc__,
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
257 "reset() -- Reset the file position to the beginning");
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
258
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
259 static PyObject *
27044
23280a64288e SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents: 25087
diff changeset
260 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
261
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
262 UNLESS (IO__opencheck(self)) return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
263
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
264 self->pos = 0;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
265
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
266 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
267 return Py_None;
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
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
270 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
271
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
272 static PyObject *
27044
23280a64288e SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents: 25087
diff changeset
273 IO_tell(IOobject *self, PyObject *unused) {
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
274
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
275 UNLESS (IO__opencheck(self)) return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
276
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
277 return PyInt_FromLong(self->pos);
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
278 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
279
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
280 PyDoc_STRVAR(IO_truncate__doc__,
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
281 "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
282
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
283 static PyObject *
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
284 IO_truncate(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
285 int pos = -1;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
286
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
287 UNLESS (IO__opencheck(self)) return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
288 UNLESS (PyArg_ParseTuple(args, "|i:truncate", &pos)) return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
289 if (pos < 0) pos = self->pos;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
290
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
291 if (self->string_size > pos) self->string_size = pos;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
292
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
293 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
294 return Py_None;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
295 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
296
28772
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
297 static PyObject *
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
298 IO_iternext(Iobject *self)
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
299 {
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
300 PyObject *next;
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
301 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
302 if (!next)
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
303 return NULL;
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
304 if (!PyString_GET_SIZE(next)) {
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
305 Py_DECREF(next);
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
306 PyErr_SetNone(PyExc_StopIteration);
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
307 return NULL;
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
308 }
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
309 return next;
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
310 }
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
311
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
312
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
313
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
314
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
315 /* Read-write object methods */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
316
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
317 PyDoc_STRVAR(O_seek__doc__,
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
318 "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
319 "seek(position, mode) -- mode 0: absolute; 1: relative; 2: relative to EOF");
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
320
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
321 static PyObject *
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
322 O_seek(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
323 int position, mode = 0;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
324
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
325 UNLESS (IO__opencheck(IOOOBJECT(self))) return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
326 UNLESS (PyArg_ParseTuple(args, "i|i:seek", &position, &mode))
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
327 return NULL;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
328
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
329 if (mode == 2) {
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
330 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
331 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
332 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
333 position += self->pos;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
334 }
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
335
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
336 if (position > self->buf_size) {
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
337 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
338 if (self->buf_size <= position) self->buf_size=position+1;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
339 UNLESS (self->buf=(char*)
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
340 realloc(self->buf,self->buf_size*sizeof(char))) {
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
341 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
342 return PyErr_NoMemory();
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
343 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
344 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
345 else if (position < 0) position=0;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
346
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
347 self->pos=position;
14679
08823099ae62 Implement readlines function. Closes Bug #110686.
Martin v. Löwis <martin@v.loewis.de>
parents: 13817
diff changeset
348
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
349 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
350
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
351 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
352 return Py_None;
14679
08823099ae62 Implement readlines function. Closes Bug #110686.
Martin v. Löwis <martin@v.loewis.de>
parents: 13817
diff changeset
353 }
08823099ae62 Implement readlines function. Closes Bug #110686.
Martin v. Löwis <martin@v.loewis.de>
parents: 13817
diff changeset
354
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
355 PyDoc_STRVAR(O_write__doc__,
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
356 "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
357 "\n\nNote (hack:) writing None resets the buffer");
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
358
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
359
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
360 static int
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
361 O_cwrite(PyObject *self, char *c, int l) {
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
362 int newl;
21294
24a6c3fd0e58 O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents: 20060
diff changeset
363 Oobject *oself;
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
364
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
365 UNLESS (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
366 oself = (Oobject *)self;
4906
fce781b127b9 Jim's latest version.
Guido van Rossum <guido@python.org>
parents: 4598
diff changeset
367
21294
24a6c3fd0e58 O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents: 20060
diff changeset
368 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
369 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
370 oself->buf_size *= 2;
24a6c3fd0e58 O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents: 20060
diff changeset
371 if (oself->buf_size <= newl)
24a6c3fd0e58 O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents: 20060
diff changeset
372 oself->buf_size = newl+1;
24a6c3fd0e58 O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents: 20060
diff changeset
373 UNLESS (oself->buf =
24a6c3fd0e58 O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents: 20060
diff changeset
374 (char*)realloc(oself->buf,
24a6c3fd0e58 O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents: 20060
diff changeset
375 (oself->buf_size) * sizeof(char))) {
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
376 PyErr_SetString(PyExc_MemoryError,"out of memory");
21294
24a6c3fd0e58 O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents: 20060
diff changeset
377 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
378 return -1;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
379 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
380 }
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
381
21294
24a6c3fd0e58 O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents: 20060
diff changeset
382 memcpy(oself->buf+oself->pos,c,l);
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
383
21294
24a6c3fd0e58 O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents: 20060
diff changeset
384 oself->pos += l;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
385
21294
24a6c3fd0e58 O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents: 20060
diff changeset
386 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
387 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
388 }
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
389
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
390 return l;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
391 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
392
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
393 static PyObject *
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
394 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
395 char *c;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
396 int l;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
397
23301
5732a9cc91c7 See discussion at SF bug 547537.
Guido van Rossum <guido@python.org>
parents: 22805
diff changeset
398 UNLESS (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
399
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
400 if (O_cwrite((PyObject*)self,c,l) < 0) return NULL;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
401
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
402 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
403 return Py_None;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
404 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
405
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
406 PyDoc_STRVAR(O_close__doc__, "close(): explicitly release resources held.");
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
407
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
408 static PyObject *
27044
23280a64288e SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents: 25087
diff changeset
409 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
410 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
411 self->buf = NULL;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
412
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
413 self->pos = self->string_size = self->buf_size = 0;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
414
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
415 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
416 return Py_None;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
417 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
418
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
419 PyDoc_STRVAR(O_writelines__doc__,
31626
1543afab1b67 SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents: 31593
diff changeset
420 "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
421 "\n"
1543afab1b67 SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents: 31593
diff changeset
422 "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
423 "producing strings. This is equivalent to calling write() for each string.");
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
424 static PyObject *
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
425 O_writelines(Oobject *self, PyObject *args) {
31626
1543afab1b67 SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents: 31593
diff changeset
426 PyObject *it, *s;
1543afab1b67 SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents: 31593
diff changeset
427
1543afab1b67 SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents: 31593
diff changeset
428 it = PyObject_GetIter(args);
1543afab1b67 SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents: 31593
diff changeset
429 if (it == NULL)
1543afab1b67 SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents: 31593
diff changeset
430 return NULL;
1543afab1b67 SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents: 31593
diff changeset
431 while ((s = PyIter_Next(it)) != NULL) {
1543afab1b67 SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents: 31593
diff changeset
432 int n;
1543afab1b67 SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents: 31593
diff changeset
433 char *c;
1543afab1b67 SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents: 31593
diff changeset
434 if (PyString_AsStringAndSize(s, &c, &n) == -1) {
1543afab1b67 SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents: 31593
diff changeset
435 Py_DECREF(it);
1543afab1b67 SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents: 31593
diff changeset
436 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
437 return NULL;
31626
1543afab1b67 SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents: 31593
diff changeset
438 }
1543afab1b67 SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents: 31593
diff changeset
439 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
440 Py_DECREF(it);
1543afab1b67 SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents: 31593
diff changeset
441 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
442 return NULL;
31626
1543afab1b67 SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents: 31593
diff changeset
443 }
1543afab1b67 SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents: 31593
diff changeset
444 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
445 }
31626
1543afab1b67 SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents: 31593
diff changeset
446 Py_DECREF(it);
1543afab1b67 SF patch #907403: Improvements to cStringIO.writelines()
Raymond Hettinger <python@rcn.com>
parents: 31593
diff changeset
447 Py_RETURN_NONE;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
448 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
449
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
450 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
451 /* Common methods: */
27044
23280a64288e SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents: 25087
diff changeset
452 {"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
453 {"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
454 {"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
455 {"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
456 {"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
457 {"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
458 {"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
459 {"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
460 {"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
461
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
462 /* 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
463 {"close", (PyCFunction)O_close, METH_NOARGS, O_close__doc__},
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
464 {"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
465 {"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
466 {"writelines", (PyCFunction)O_writelines, METH_O, O_writelines__doc__},
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
467 {NULL, NULL} /* sentinel */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
468 };
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
469
28772
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
470 static PyMemberDef O_memberlist[] = {
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
471 {"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
472 "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
473 /* 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
474 {NULL} /* Sentinel */
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
475 };
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
476
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
477 static void
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
478 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
479 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
480 free(self->buf);
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
481 PyObject_Del(self);
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
482 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
483
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
484 PyDoc_STRVAR(Otype__doc__, "Simple type for output to strings.");
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
485
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
486 static PyTypeObject Otype = {
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
487 PyObject_HEAD_INIT(NULL)
28772
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
488 0, /*ob_size*/
30126
6842ceb39a14 reverting to 2.41 version (distinct tp_names) - will add verbiage to the
Skip Montanaro <skip@pobox.com>
parents: 30125
diff changeset
489 "cStringIO.StringO", /*tp_name*/
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
490 sizeof(Oobject), /*tp_basicsize*/
28772
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
491 0, /*tp_itemsize*/
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
492 /* methods */
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
493 (destructor)O_dealloc, /*tp_dealloc*/
28772
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
494 (printfunc)0, /*tp_print*/
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
495 0, /*tp_getattr */
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
496 0, /*tp_setattr */
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
497 (cmpfunc)0, /*tp_compare*/
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
498 (reprfunc)0, /*tp_repr*/
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
499 0, /*tp_as_number*/
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
500 0, /*tp_as_sequence*/
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
501 0, /*tp_as_mapping*/
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
502 (hashfunc)0, /*tp_hash*/
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
503 (ternaryfunc)0, /*tp_call*/
28772
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
504 (reprfunc)0, /*tp_str*/
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
505 0, /*tp_getattro */
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
506 0, /*tp_setattro */
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
507 0, /*tp_as_buffer */
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
508 Py_TPFLAGS_DEFAULT, /*tp_flags*/
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
509 Otype__doc__, /*tp_doc */
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
510 0, /*tp_traverse */
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
511 0, /*tp_clear */
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
512 0, /*tp_richcompare */
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
513 0, /*tp_weaklistoffset */
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
514 PyObject_SelfIter, /*tp_iter */
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
515 (iternextfunc)IO_iternext, /*tp_iternext */
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
516 O_methods, /*tp_methods */
30096
06016d5d81d7 SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents: 28772
diff changeset
517 O_memberlist, /*tp_members */
06016d5d81d7 SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents: 28772
diff changeset
518 file_getsetlist, /*tp_getset */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
519 };
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
520
5991
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
521 static PyObject *
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
522 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
523 Oobject *self;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
524
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
525 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
526 if (self == NULL)
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
527 return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
528 self->pos=0;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
529 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
530 self->softspace = 0;
5991
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
531
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
532 UNLESS (self->buf=malloc(size*sizeof(char))) {
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
533 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
534 self->buf_size = 0;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
535 return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
536 }
5991
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
537
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
538 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
539 return (PyObject*)self;
5991
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
540 }
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
541
30125
4b46d5449d49 shit - just change the visible name, not the comments - strictly speaking,
Skip Montanaro <skip@pobox.com>
parents: 30124
diff changeset
542 /* End of code for StringO objects */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
543 /* -------------------------------------------------------- */
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
544
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
545 static PyObject *
27044
23280a64288e SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents: 25087
diff changeset
546 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
547 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
548 self->pbuf = NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
549 self->buf = NULL;
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
550
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
551 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
552
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
553 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
554 return Py_None;
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
555 }
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
556
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
557 static PyObject *
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
558 I_seek(Iobject *self, PyObject *args) {
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
559 int position, mode = 0;
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
560
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
561 UNLESS (IO__opencheck(IOOOBJECT(self))) return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
562 UNLESS (PyArg_ParseTuple(args, "i|i:seek", &position, &mode))
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
563 return NULL;
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
564
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
565 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
566 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
567
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
568 if (position < 0) position=0;
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
569
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
570 self->pos=position;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
571
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
572 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
573 return Py_None;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
574 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
575
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
576 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
577 /* Common methods: */
27044
23280a64288e SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents: 25087
diff changeset
578 {"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
579 {"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
580 {"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
581 {"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
582 {"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
583 {"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
584 {"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
585 {"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
586 {"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
587
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
588 /* 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
589 {"close", (PyCFunction)I_close, METH_NOARGS, O_close__doc__},
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
590 {"seek", (PyCFunction)I_seek, METH_VARARGS, O_seek__doc__},
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
591 {NULL, NULL}
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
592 };
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
593
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
594 static void
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
595 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
596 Py_XDECREF(self->pbuf);
12576
1c7c2dd1beb1 Vladimir Marangozov's long-awaited malloc restructuring.
Guido van Rossum <guido@python.org>
parents: 12385
diff changeset
597 PyObject_Del(self);
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
598 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
599
20033
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
600
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
601 PyDoc_STRVAR(Itype__doc__,
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
602 "Simple type for treating strings as input file streams");
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
603
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
604 static PyTypeObject Itype = {
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
605 PyObject_HEAD_INIT(NULL)
20033
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
606 0, /*ob_size*/
30126
6842ceb39a14 reverting to 2.41 version (distinct tp_names) - will add verbiage to the
Skip Montanaro <skip@pobox.com>
parents: 30125
diff changeset
607 "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
608 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
609 0, /*tp_itemsize*/
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
610 /* methods */
20033
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
611 (destructor)I_dealloc, /*tp_dealloc*/
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
612 (printfunc)0, /*tp_print*/
28772
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
613 0, /* tp_getattr */
20033
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
614 (setattrfunc)0, /*tp_setattr*/
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
615 (cmpfunc)0, /*tp_compare*/
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
616 (reprfunc)0, /*tp_repr*/
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
617 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
618 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
619 0, /*tp_as_mapping*/
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
620 (hashfunc)0, /*tp_hash*/
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
621 (ternaryfunc)0, /*tp_call*/
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
622 (reprfunc)0, /*tp_str*/
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
623 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
624 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
625 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
626 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
627 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
628 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
629 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
630 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
631 0, /* tp_weaklistoffset */
28772
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
632 PyObject_SelfIter, /* tp_iter */
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
633 (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
634 I_methods, /* tp_methods */
06016d5d81d7 SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents: 28772
diff changeset
635 0, /* tp_members */
06016d5d81d7 SF bug #770485: cStringIO does not set closed attr
Raymond Hettinger <python@rcn.com>
parents: 28772
diff changeset
636 file_getsetlist, /* tp_getset */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
637 };
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
638
5991
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
639 static PyObject *
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
640 newIobject(PyObject *s) {
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
641 Iobject *self;
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
642 char *buf;
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
643 int size;
12385
627226df9f01 raise TypeError when bad argument passed to cStringIO.StringIO
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 11882
diff changeset
644
20060
ccec02bfe9a0 StringIO patch #462596: let's [c]StringIO accept read buffers on
Marc-André Lemburg <mal@egenix.com>
parents: 20033
diff changeset
645 if (PyObject_AsReadBuffer(s, (const void **)&buf, &size)) {
ccec02bfe9a0 StringIO patch #462596: let's [c]StringIO accept read buffers on
Marc-André Lemburg <mal@egenix.com>
parents: 20033
diff changeset
646 PyErr_Format(PyExc_TypeError, "expected read buffer, %.200s found",
12385
627226df9f01 raise TypeError when bad argument passed to cStringIO.StringIO
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 11882
diff changeset
647 s->ob_type->tp_name);
627226df9f01 raise TypeError when bad argument passed to cStringIO.StringIO
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 11882
diff changeset
648 return NULL;
627226df9f01 raise TypeError when bad argument passed to cStringIO.StringIO
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 11882
diff changeset
649 }
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
650 UNLESS (self = PyObject_New(Iobject, &Itype)) return NULL;
5991
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
651 Py_INCREF(s);
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
652 self->buf=buf;
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
653 self->string_size=size;
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
654 self->pbuf=s;
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
655 self->pos=0;
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
656
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
657 return (PyObject*)self;
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
658 }
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
659
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
660 /* End of code for StringI objects */
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
661 /* -------------------------------------------------------- */
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
662
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
663
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
664 PyDoc_STRVAR(IO_StringIO__doc__,
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
665 "StringIO([s]) -- Return a StringIO-like stream for reading or writing");
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
666
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
667 static PyObject *
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
668 IO_StringIO(PyObject *self, PyObject *args) {
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
669 PyObject *s=0;
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
670
27044
23280a64288e SF patch 660559: Use METH_O and METH_NOARGS where possible
Raymond Hettinger <python@rcn.com>
parents: 25087
diff changeset
671 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
672
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
673 if (s) return newIobject(s);
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
674 return newOobject(128);
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
675 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
676
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
677 /* List of methods defined in the module */
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
678
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
679 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
680 {"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
681 METH_VARARGS, IO_StringIO__doc__},
4906
fce781b127b9 Jim's latest version.
Guido van Rossum <guido@python.org>
parents: 4598
diff changeset
682 {NULL, NULL} /* sentinel */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
683 };
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
684
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
685
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
686 /* Initialization function for the module (*must* be called initcStringIO) */
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
687
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
688 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
689 IO_cread,
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
690 IO_creadline,
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
691 O_cwrite,
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
692 IO_cgetval,
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
693 newOobject,
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
694 newIobject,
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
695 &Itype,
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
696 &Otype,
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
697 };
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
698
24471
f66b3a3509c7 Excise DL_EXPORT/DL_IMPORT from Modules/*. Required adding a prototype
Mark Hammond <mhammond@skippinet.com.au>
parents: 23832
diff changeset
699 #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
700 #define PyMODINIT_FUNC void
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
701 #endif
24471
f66b3a3509c7 Excise DL_EXPORT/DL_IMPORT from Modules/*. Required adding a prototype
Mark Hammond <mhammond@skippinet.com.au>
parents: 23832
diff changeset
702 PyMODINIT_FUNC
13690
c09c0171474f ANSIfy some more forward declarations.
Thomas Wouters <thomas@python.org>
parents: 13620
diff changeset
703 initcStringIO(void) {
6227
613f976a57b4 #Plug small memory leaks in constructors.
Guido van Rossum <guido@python.org>
parents: 6215
diff changeset
704 PyObject *m, *d, *v;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
705
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
706
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
707 /* Create the module and add the functions */
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
708 m = Py_InitModule4("cStringIO", IO_methods,
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
709 cStringIO_module_documentation,
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
710 (PyObject*)NULL,PYTHON_API_VERSION);
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
711
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
712 /* Add some symbolic constants to the module */
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
713 d = PyModule_GetDict(m);
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
714
4906
fce781b127b9 Jim's latest version.
Guido van Rossum <guido@python.org>
parents: 4598
diff changeset
715 /* Export C API */
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
716 Itype.ob_type=&PyType_Type;
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
717 Otype.ob_type=&PyType_Type;
28772
0ea5991f6edb SF patch 695710: fix bug 678519: cStringIO self iterator
Raymond Hettinger <python@rcn.com>
parents: 27044
diff changeset
718 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
719 if (PyType_Ready(&Itype) < 0) return;
6227
613f976a57b4 #Plug small memory leaks in constructors.
Guido van Rossum <guido@python.org>
parents: 6215
diff changeset
720 PyDict_SetItemString(d,"cStringIO_CAPI",
613f976a57b4 #Plug small memory leaks in constructors.
Guido van Rossum <guido@python.org>
parents: 6215
diff changeset
721 v = PyCObject_FromVoidPtr(&CAPI,NULL));
613f976a57b4 #Plug small memory leaks in constructors.
Guido van Rossum <guido@python.org>
parents: 6215
diff changeset
722 Py_XDECREF(v);
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
723
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
724 /* Export Types */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
725 PyDict_SetItemString(d,"InputType", (PyObject*)&Itype);
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
726 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
727
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
728 /* 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
729 if (0) PycString_IMPORT;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
730 }