annotate Modules/cStringIO.c @ 24042:63fbbed10714 legacy-trunk

Simplify HTTPSConnection constructor. See discussion in SF bug 458463.
author Jeremy Hylton <jeremy@alum.mit.edu>
date Fri, 28 Jun 2002 23:38:14 +0000
parents ed1ba37a46b7
children f66b3a3509c7
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"
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
5
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
6 PyDoc_STRVAR(cStringIO_module_documentation,
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
7 "A simple fast partial StringIO replacement.\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
8 "\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
9 "This module provides a simple useful replacement for\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
10 "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
11 "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
12 "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
13 "pickle module.\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
14 "\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
15 "Usage:\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
16 "\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
17 " from cStringIO import StringIO\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
18 "\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
19 " an_output_stream=StringIO()\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
20 " an_output_stream.write(some_stuff)\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
21 " ...\n"
22218
5440e4b17aff backport jhylton's checkin of
Michael W. Hudson <mwh@python.net>
parents: 21313
diff changeset
22 " value=an_output_stream.getvalue()\n"
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
23 "\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
24 " an_input_stream=StringIO(a_string)\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
25 " spam=an_input_stream.readline()\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
26 " spam=an_input_stream.read(5)\n"
9521
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
27 " an_input_stream.seek(0) # OK, start over\n"
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
28 " spam=an_input_stream.read() # and read it all\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
29 " \n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
30 "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
31 "go for it. :-) \n"
5991
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
32 "\n"
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
33 "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
34
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
35 #define UNLESS(E) if (!(E))
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
36
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
37
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
38 /* 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
39
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
40 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
41 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
42 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
43 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
44 */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
45
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
46 typedef struct {
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
47 PyObject_HEAD
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
48 char *buf;
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
49 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
50 } IOobject;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
51
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
52 #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
53
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
54 /* Declarations for objects of type StringO */
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
55
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
56 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
57 PyObject_HEAD
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
58 char *buf;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
59 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
60
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
61 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
62 } Oobject;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
63
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
64 /* 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
65
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
66 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
67 PyObject_HEAD
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
68 char *buf;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
69 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
70 /* 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
71 the buffer alive during the lifetime of the Iobject. */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
72 PyObject *pbuf;
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
73 } Iobject;
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
74
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
75 /* IOobject (common) methods */
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
76
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
77 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
78
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
79 static int
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
80 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
81 UNLESS (self->buf) {
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
82 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
83 "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
84 return 0;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
85 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
86 return 1;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
87 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
88
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
89 static PyObject *
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
90 IO_flush(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
91
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
92 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
93 UNLESS (PyArg_ParseTuple(args, ":flush")) return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
94
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
95 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
96 return Py_None;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
97 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
98
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
99 PyDoc_STRVAR(IO_getval__doc__,
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
100 "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
101 "\n"
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
102 "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
103 "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
104
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
105 static PyObject *
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
106 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
107 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
108 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
109 ((IOobject*)self)->pos);
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
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
112 static PyObject *
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
113 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
114 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
115 int s;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
116
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
117 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
118 UNLESS (PyArg_ParseTuple(args,"|O:getval",&use_pos)) return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
119
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
120 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
121 s=self->pos;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
122 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
123 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
124 else
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
125 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
126 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
127 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
128
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
129 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
130
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
131 static PyObject *
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
132 IO_isatty(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
133
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
134 UNLESS (PyArg_ParseTuple(args, ":isatty")) return NULL;
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 return PyInt_FromLong(0);
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
137 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
138
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
139 PyDoc_STRVAR(IO_read__doc__,
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
140 "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
141
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
142 static int
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
143 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
144 int l;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
145
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
146 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
147 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
148 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
149 n = l;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
150 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
151 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
152
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
153 *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
154 ((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
155 return n;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
156 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
157
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
158 static PyObject *
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
159 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
160 int n = -1;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
161 char *output;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
162
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
163 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
164
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
165 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
166
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
167 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
168 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
169
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
170 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
171
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
172 static int
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
173 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
174 char *n, *s;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
175 int l;
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 (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
178
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
179 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
180 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
181 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
182 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
183
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
184 *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
185 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
186 ((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
187 return l;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
188 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
189
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
190 static PyObject *
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
191 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
192 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
193 char *output;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
194
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
195 UNLESS (PyArg_ParseTuple(args, "|i:readline", &m)) return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
196
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
197 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
198 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
199 m = n - m;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
200 n -= m;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
201 self->pos -= m;
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 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
204 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
205
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
206 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
207
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
208 static PyObject *
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
209 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
210 int n;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
211 char *output;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
212 PyObject *result, *line;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
213 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
214
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
215 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
216
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
217 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
218 if (!result)
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
219 return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
220
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
221 while (1){
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
222 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
223 goto err;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
224 if (n == 0)
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
225 break;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
226 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
227 if (!line)
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
228 goto err;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
229 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
230 Py_DECREF (line);
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
231 length += n;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
232 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
233 break;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
234 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
235 return result;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
236 err:
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
237 Py_DECREF(result);
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
238 return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
239 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
240
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
241 PyDoc_STRVAR(IO_reset__doc__,
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
242 "reset() -- Reset the file position to the beginning");
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
243
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
244 static PyObject *
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
245 IO_reset(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
246
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
247 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
248 UNLESS (PyArg_ParseTuple(args, ":reset")) return NULL;
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 self->pos = 0;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
251
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
252 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
253 return Py_None;
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_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
257
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
258 static PyObject *
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
259 IO_tell(IOobject *self, PyObject *args) {
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
260
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
261 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
262 UNLESS (PyArg_ParseTuple(args, ":tell")) 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 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
265 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
266
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
267 PyDoc_STRVAR(IO_truncate__doc__,
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
268 "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
269
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
270 static PyObject *
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
271 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
272 int pos = -1;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
273
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
274 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
275 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
276 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
277
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
278 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
279
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
280 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
281 return Py_None;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
282 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
283
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
284
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
285
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
286
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
287 /* Read-write object methods */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
288
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
289 PyDoc_STRVAR(O_seek__doc__,
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
290 "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
291 "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
292
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
293 static PyObject *
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
294 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
295 int position, mode = 0;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
296
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
297 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
298 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
299 return NULL;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
300
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
301 if (mode == 2) {
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
302 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
303 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
304 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
305 position += self->pos;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
306 }
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
307
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
308 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
309 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
310 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
311 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
312 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
313 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
314 return PyErr_NoMemory();
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
315 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
316 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
317 else if (position < 0) position=0;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
318
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
319 self->pos=position;
14679
08823099ae62 Implement readlines function. Closes Bug #110686.
Martin v. Löwis <martin@v.loewis.de>
parents: 13817
diff changeset
320
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
321 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
322
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
323 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
324 return Py_None;
14679
08823099ae62 Implement readlines function. Closes Bug #110686.
Martin v. Löwis <martin@v.loewis.de>
parents: 13817
diff changeset
325 }
08823099ae62 Implement readlines function. Closes Bug #110686.
Martin v. Löwis <martin@v.loewis.de>
parents: 13817
diff changeset
326
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
327 PyDoc_STRVAR(O_write__doc__,
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
328 "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
329 "\n\nNote (hack:) writing None resets the buffer");
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
330
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
331
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
332 static int
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
333 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
334 int newl;
21294
24a6c3fd0e58 O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents: 20060
diff changeset
335 Oobject *oself;
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
336
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
337 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
338 oself = (Oobject *)self;
4906
fce781b127b9 Jim's latest version.
Guido van Rossum <guido@python.org>
parents: 4598
diff changeset
339
21294
24a6c3fd0e58 O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents: 20060
diff changeset
340 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
341 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
342 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
343 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
344 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
345 UNLESS (oself->buf =
24a6c3fd0e58 O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents: 20060
diff changeset
346 (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
347 (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
348 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
349 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
350 return -1;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
351 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
352 }
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
353
21294
24a6c3fd0e58 O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents: 20060
diff changeset
354 memcpy(oself->buf+oself->pos,c,l);
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
355
21294
24a6c3fd0e58 O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents: 20060
diff changeset
356 oself->pos += l;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
357
21294
24a6c3fd0e58 O_cwrite(): rewrote for clarity, replacing all the (Oobject *)self
Guido van Rossum <guido@python.org>
parents: 20060
diff changeset
358 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
359 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
360 }
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
361
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
362 return l;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
363 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
364
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
365 static PyObject *
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
366 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
367 char *c;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
368 int l;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
369
23301
5732a9cc91c7 See discussion at SF bug 547537.
Guido van Rossum <guido@python.org>
parents: 22805
diff changeset
370 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
371
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
372 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
373
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
374 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
375 return Py_None;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
376 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
377
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
378 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
379
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
380 static PyObject *
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
381 O_close(Oobject *self, PyObject *args) {
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
382
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
383 UNLESS (PyArg_ParseTuple(args, ":close")) return NULL;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
384
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
385 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
386 self->buf = NULL;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
387
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
388 self->pos = self->string_size = self->buf_size = 0;
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 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
391 return Py_None;
4598
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
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
394
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
395 PyDoc_STRVAR(O_writelines__doc__,
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
396 "writelines(sequence_of_strings): write each string");
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
397 static PyObject *
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
398 O_writelines(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
399 PyObject *tmp = 0;
16546
60a2e99c863b In O_writelines: Replace use of string.joinfields with "".join.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 15059
diff changeset
400 static PyObject *joiner = 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 UNLESS (PyArg_ParseTuple(args, "O:writelines", &args)) return NULL;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
403
16546
60a2e99c863b In O_writelines: Replace use of string.joinfields with "".join.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 15059
diff changeset
404 if (!joiner) {
60a2e99c863b In O_writelines: Replace use of string.joinfields with "".join.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 15059
diff changeset
405 PyObject *empty_string = PyString_FromString("");
60a2e99c863b In O_writelines: Replace use of string.joinfields with "".join.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 15059
diff changeset
406 if (empty_string == NULL)
60a2e99c863b In O_writelines: Replace use of string.joinfields with "".join.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 15059
diff changeset
407 return NULL;
60a2e99c863b In O_writelines: Replace use of string.joinfields with "".join.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 15059
diff changeset
408 joiner = PyObject_GetAttrString(empty_string, "join");
60a2e99c863b In O_writelines: Replace use of string.joinfields with "".join.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 15059
diff changeset
409 Py_DECREF(empty_string);
60a2e99c863b In O_writelines: Replace use of string.joinfields with "".join.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 15059
diff changeset
410 if (joiner == NULL)
60a2e99c863b In O_writelines: Replace use of string.joinfields with "".join.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 15059
diff changeset
411 return NULL;
60a2e99c863b In O_writelines: Replace use of string.joinfields with "".join.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 15059
diff changeset
412 }
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
413
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
414 if (PyObject_Size(args) < 0) return NULL;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
415
16546
60a2e99c863b In O_writelines: Replace use of string.joinfields with "".join.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 15059
diff changeset
416 tmp = PyObject_CallFunction(joiner, "O", args);
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
417 UNLESS (tmp) return NULL;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
418
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
419 args = Py_BuildValue("(O)", tmp);
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
420 Py_DECREF(tmp);
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
421 UNLESS (args) return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
422
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
423 tmp = O_write(self, args);
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
424 Py_DECREF(args);
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
425 return tmp;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
426 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
427
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
428 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
429 /* Common methods: */
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
430 {"flush", (PyCFunction)IO_flush, METH_VARARGS, IO_flush__doc__},
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
431 {"getvalue", (PyCFunction)IO_getval, METH_VARARGS, IO_getval__doc__},
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
432 {"isatty", (PyCFunction)IO_isatty, METH_VARARGS, IO_isatty__doc__},
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
433 {"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
434 {"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
435 {"readlines", (PyCFunction)IO_readlines,METH_VARARGS, IO_readlines__doc__},
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
436 {"reset", (PyCFunction)IO_reset, METH_VARARGS, IO_reset__doc__},
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
437 {"tell", (PyCFunction)IO_tell, METH_VARARGS, IO_tell__doc__},
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
438 {"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
439
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
440 /* Read-write StringIO specific methods: */
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
441 {"close", (PyCFunction)O_close, METH_VARARGS, O_close__doc__},
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
442 {"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
443 {"write", (PyCFunction)O_write, METH_VARARGS, O_write__doc__},
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
444 {"writelines", (PyCFunction)O_writelines, METH_VARARGS, O_writelines__doc__},
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
445 {NULL, NULL} /* sentinel */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
446 };
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
447
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
448 static void
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
449 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
450 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
451 free(self->buf);
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
452 PyObject_Del(self);
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
453 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
454
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
455 static PyObject *
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
456 O_getattr(Oobject *self, char *name) {
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
457 if (strcmp(name, "softspace") == 0) {
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
458 return PyInt_FromLong(self->softspace);
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
459 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
460 return Py_FindMethod(O_methods, (PyObject *)self, name);
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
461 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
462
5315
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
463 static int
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
464 O_setattr(Oobject *self, char *name, PyObject *value) {
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
465 long x;
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
466 if (strcmp(name, "softspace") != 0) {
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
467 PyErr_SetString(PyExc_AttributeError, name);
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
468 return -1;
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
469 }
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
470 x = PyInt_AsLong(value);
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
471 if (x < 0 && PyErr_Occurred())
5315
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
472 return -1;
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
473 self->softspace = x;
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
474 return 0;
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
475 }
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
476
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
477 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
478
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
479 static PyTypeObject Otype = {
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
480 PyObject_HEAD_INIT(NULL)
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
481 0, /*ob_size*/
21313
91dd223829c6 Patch supplied by Burton Radons for his own SF bug #487390: Modifying
Guido van Rossum <guido@python.org>
parents: 21294
diff changeset
482 "cStringIO.StringO", /*tp_name*/
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
483 sizeof(Oobject), /*tp_basicsize*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
484 0, /*tp_itemsize*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
485 /* methods */
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
486 (destructor)O_dealloc, /*tp_dealloc*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
487 (printfunc)0, /*tp_print*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
488 (getattrfunc)O_getattr, /*tp_getattr*/
5315
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
489 (setattrfunc)O_setattr, /*tp_setattr*/
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
490 (cmpfunc)0, /*tp_compare*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
491 (reprfunc)0, /*tp_repr*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
492 0, /*tp_as_number*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
493 0, /*tp_as_sequence*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
494 0, /*tp_as_mapping*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
495 (hashfunc)0, /*tp_hash*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
496 (ternaryfunc)0, /*tp_call*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
497 (reprfunc)0, /*tp_str*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
498
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
499 /* Space for future expansion */
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
500 0L,0L,0L,0L,
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
501 Otype__doc__ /* Documentation string */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
502 };
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
503
5991
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
504 static PyObject *
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
505 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
506 Oobject *self;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
507
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
508 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
509 if (self == NULL)
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
510 return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
511 self->pos=0;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
512 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
513 self->softspace = 0;
5991
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
514
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
515 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
516 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
517 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
518 return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
519 }
5991
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
520
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
521 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
522 return (PyObject*)self;
5991
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
523 }
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
524
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
525 /* End of code for StringO objects */
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
526 /* -------------------------------------------------------- */
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
527
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
528 static PyObject *
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
529 I_close(Iobject *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
530
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
531 UNLESS (PyArg_ParseTuple(args, ":close")) return NULL;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
532
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
533 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
534 self->pbuf = NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
535 self->buf = NULL;
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
536
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
537 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
538
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
539 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
540 return Py_None;
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
541 }
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
542
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
543 static PyObject *
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
544 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
545 int position, mode = 0;
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
546
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
547 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
548 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
549 return 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 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
552 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
553
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
554 if (position < 0) position=0;
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
555
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
556 self->pos=position;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
557
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
558 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
559 return Py_None;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
560 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
561
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
562 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
563 /* Common methods: */
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
564 {"flush", (PyCFunction)IO_flush, METH_VARARGS, IO_flush__doc__},
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
565 {"getvalue", (PyCFunction)IO_getval, METH_VARARGS, IO_getval__doc__},
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
566 {"isatty", (PyCFunction)IO_isatty, METH_VARARGS, IO_isatty__doc__},
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
567 {"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
568 {"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
569 {"readlines", (PyCFunction)IO_readlines,METH_VARARGS, IO_readlines__doc__},
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
570 {"reset", (PyCFunction)IO_reset, METH_VARARGS, IO_reset__doc__},
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
571 {"tell", (PyCFunction)IO_tell, METH_VARARGS, IO_tell__doc__},
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
572 {"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
573
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
574 /* Read-only StringIO specific methods: */
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
575 {"close", (PyCFunction)I_close, METH_VARARGS, O_close__doc__},
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
576 {"seek", (PyCFunction)I_seek, METH_VARARGS, O_seek__doc__},
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
577 {NULL, NULL}
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
578 };
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
579
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
580 static void
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
581 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
582 Py_XDECREF(self->pbuf);
12576
1c7c2dd1beb1 Vladimir Marangozov's long-awaited malloc restructuring.
Guido van Rossum <guido@python.org>
parents: 12385
diff changeset
583 PyObject_Del(self);
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
584 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
585
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
586 static PyObject *
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
587 I_getattr(Iobject *self, char *name) {
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
588 return Py_FindMethod(I_methods, (PyObject *)self, name);
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
589 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
590
20033
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
591 static PyObject *
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
592 I_getiter(Iobject *self)
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
593 {
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
594 PyObject *myreadline = PyObject_GetAttrString((PyObject*)self,
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
595 "readline");
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
596 PyObject *emptystring = PyString_FromString("");
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
597 PyObject *iter = NULL;
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
598 if (!myreadline || !emptystring)
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
599 goto finally;
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
600
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
601 iter = PyCallIter_New(myreadline, emptystring);
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
602 finally:
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
603 Py_XDECREF(myreadline);
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
604 Py_XDECREF(emptystring);
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
605 return iter;
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
606 }
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
607
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
608
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
609 PyDoc_STRVAR(Itype__doc__,
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
610 "Simple type for treating strings as input file streams");
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
611
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
612 static PyTypeObject Itype = {
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
613 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
614 0, /*ob_size*/
21313
91dd223829c6 Patch supplied by Burton Radons for his own SF bug #487390: Modifying
Guido van Rossum <guido@python.org>
parents: 21294
diff changeset
615 "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
616 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
617 0, /*tp_itemsize*/
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
618 /* methods */
20033
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
619 (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
620 (printfunc)0, /*tp_print*/
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
621 (getattrfunc)I_getattr, /*tp_getattr*/
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
622 (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
623 (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
624 (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
625 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
626 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
627 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
628 (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
629 (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
630 (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
631 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
632 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
633 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
634 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
635 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
636 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
637 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
638 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
639 0, /* tp_weaklistoffset */
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
640 (getiterfunc)I_getiter, /* tp_iter */
104b5c9b88ea I_getiter(): Function for the tp_iter slot of Itype so that
Barry Warsaw <barry@python.org>
parents: 16546
diff changeset
641 0, /* tp_iternext */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
642 };
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
643
5991
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
644 static PyObject *
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
645 newIobject(PyObject *s) {
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
646 Iobject *self;
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
647 char *buf;
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
648 int size;
12385
627226df9f01 raise TypeError when bad argument passed to cStringIO.StringIO
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 11882
diff changeset
649
20060
ccec02bfe9a0 StringIO patch #462596: let's [c]StringIO accept read buffers on
Marc-André Lemburg <mal@egenix.com>
parents: 20033
diff changeset
650 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
651 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
652 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
653 return NULL;
627226df9f01 raise TypeError when bad argument passed to cStringIO.StringIO
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 11882
diff changeset
654 }
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
655 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
656 Py_INCREF(s);
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
657 self->buf=buf;
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
658 self->string_size=size;
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
659 self->pbuf=s;
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
660 self->pos=0;
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
661
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
662 return (PyObject*)self;
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
663 }
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
664
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
665 /* End of code for StringI objects */
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
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
668
23832
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
669 PyDoc_STRVAR(IO_StringIO__doc__,
ed1ba37a46b7 Patch #568124: Add doc string macros.
Martin v. Löwis <martin@v.loewis.de>
parents: 23301
diff changeset
670 "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
671
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
672 static PyObject *
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
673 IO_StringIO(PyObject *self, PyObject *args) {
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
674 PyObject *s=0;
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
675
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
676 if (!PyArg_ParseTuple(args, "|O:StringIO", &s)) return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
677
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
678 if (s) return newIobject(s);
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
679 return newOobject(128);
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
680 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
681
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
682 /* List of methods defined in the module */
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 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
685 {"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
686 METH_VARARGS, IO_StringIO__doc__},
4906
fce781b127b9 Jim's latest version.
Guido van Rossum <guido@python.org>
parents: 4598
diff changeset
687 {NULL, NULL} /* sentinel */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
688 };
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
689
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
690
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
691 /* Initialization function for the module (*must* be called initcStringIO) */
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
692
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
693 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
694 IO_cread,
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
695 IO_creadline,
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
696 O_cwrite,
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
697 IO_cgetval,
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
698 newOobject,
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
699 newIobject,
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
700 &Itype,
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
701 &Otype,
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
702 };
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
703
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
704 #ifndef DL_EXPORT /* declarations for DLL import/export */
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
705 #define DL_EXPORT(RTYPE) RTYPE
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
706 #endif
9588
38023a425e48 Add DL_EXPORT() to all modules that could possibly be used
Guido van Rossum <guido@python.org>
parents: 9521
diff changeset
707 DL_EXPORT(void)
13690
c09c0171474f ANSIfy some more forward declarations.
Thomas Wouters <thomas@python.org>
parents: 13620
diff changeset
708 initcStringIO(void) {
6227
613f976a57b4 #Plug small memory leaks in constructors.
Guido van Rossum <guido@python.org>
parents: 6215
diff changeset
709 PyObject *m, *d, *v;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
710
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
711
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
712 /* Create the module and add the functions */
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
713 m = Py_InitModule4("cStringIO", IO_methods,
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
714 cStringIO_module_documentation,
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
715 (PyObject*)NULL,PYTHON_API_VERSION);
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
716
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
717 /* Add some symbolic constants to the module */
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
718 d = PyModule_GetDict(m);
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
719
4906
fce781b127b9 Jim's latest version.
Guido van Rossum <guido@python.org>
parents: 4598
diff changeset
720 /* Export C API */
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
721 Itype.ob_type=&PyType_Type;
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
722 Otype.ob_type=&PyType_Type;
6227
613f976a57b4 #Plug small memory leaks in constructors.
Guido van Rossum <guido@python.org>
parents: 6215
diff changeset
723 PyDict_SetItemString(d,"cStringIO_CAPI",
613f976a57b4 #Plug small memory leaks in constructors.
Guido van Rossum <guido@python.org>
parents: 6215
diff changeset
724 v = PyCObject_FromVoidPtr(&CAPI,NULL));
613f976a57b4 #Plug small memory leaks in constructors.
Guido van Rossum <guido@python.org>
parents: 6215
diff changeset
725 Py_XDECREF(v);
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
726
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
727 /* Export Types */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
728 PyDict_SetItemString(d,"InputType", (PyObject*)&Itype);
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
729 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
730
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
731 /* 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
732 if (0) PycString_IMPORT;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
733 }