annotate Modules/cStringIO.c @ 16798:258dcafe2d0b legacy-trunk

Gustavo Niemeyer <niemeyer@conectiva.com>: Fixed recno support (keys are integers rather than strings). Work around DB bug that cause stdin to be closed by rnopen() when the DB file needed to exist but did not (no longer segfaults). This closes SF tracker patch #403445. Also wrapped some long lines and added whitespace around operators -- FLD.
author Fred Drake <fdrake@acm.org>
date Tue, 27 Feb 2001 18:56:46 +0000
parents 60a2e99c863b
children 104b5c9b88ea
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
1 /*
10985
63b530c030c5 New version from Jim: don't call Py_FatalError() when initialization fails.
Guido van Rossum <guido@python.org>
parents: 10119
diff changeset
2 * cStringIO.c,v 1.29 1999/06/15 14:10:27 jim Exp
9521
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
3 *
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
4 * Copyright (c) 1996-1998, Digital Creations, Fredericksburg, VA, USA.
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
5 * All rights reserved.
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
6 *
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
7 * Redistribution and use in source and binary forms, with or without
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
8 * modification, are permitted provided that the following conditions are
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
9 * met:
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
10 *
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
11 * o Redistributions of source code must retain the above copyright
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
12 * notice, this list of conditions, and the disclaimer that follows.
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
13 *
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
14 * o Redistributions in binary form must reproduce the above copyright
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
15 * notice, this list of conditions, and the following disclaimer in
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
16 * the documentation and/or other materials provided with the
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
17 * distribution.
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
18 *
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
19 * o All advertising materials mentioning features or use of this
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
20 * software must display the following acknowledgement:
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
21 *
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
22 * This product includes software developed by Digital Creations
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
23 * and its contributors.
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
24 *
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
25 * o Neither the name of Digital Creations nor the names of its
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
26 * contributors may be used to endorse or promote products derived
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
27 * from this software without specific prior written permission.
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
28 *
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
29 *
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
30 * THIS SOFTWARE IS PROVIDED BY DIGITAL CREATIONS AND CONTRIBUTORS *AS
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
31 * IS* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
32 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
33 * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL DIGITAL
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
34 * CREATIONS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
35 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
36 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
37 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
38 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
39 * TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
40 * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
41 * DAMAGE.
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
42 *
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
43 #
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
44 # If you have questions regarding this software, contact:
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
45 #
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
46 # Digital Creations, L.C.
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
47 # 910 Princess Ann Street
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
48 # Fredericksburge, Virginia 22401
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
49 #
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
50 # info@digicool.com
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
51 #
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
52 # (540) 371-6909
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
53 */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
54 static char cStringIO_module_documentation[] =
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
55 "A simple fast partial StringIO replacement.\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
56 "\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
57 "This module provides a simple useful replacement for\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
58 "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
59 "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
60 "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
61 "pickle module.\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
62 "\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
63 "Usage:\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
64 "\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
65 " from cStringIO import StringIO\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
66 "\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
67 " an_output_stream=StringIO()\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
68 " an_output_stream.write(some_stuff)\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
69 " ...\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
70 " value=an_output_stream.getvalue() # str(an_output_stream) works too!\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
71 "\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
72 " an_input_stream=StringIO(a_string)\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
73 " spam=an_input_stream.readline()\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
74 " spam=an_input_stream.read(5)\n"
9521
0f27257fb6cf New version from Jim Fulton:
Guido van Rossum <guido@python.org>
parents: 8741
diff changeset
75 " an_input_stream.seek(0) # OK, start over\n"
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
76 " spam=an_input_stream.read() # and read it all\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
77 " \n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
78 "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
79 "go for it. :-) \n"
5991
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
80 "\n"
10985
63b530c030c5 New version from Jim: don't call Py_FatalError() when initialization fails.
Guido van Rossum <guido@python.org>
parents: 10119
diff changeset
81 "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
82 ;
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
83
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
84 #include "Python.h"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
85 #include "import.h"
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
86 #include "cStringIO.h"
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
87
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
88 #define UNLESS(E) if (!(E))
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
89
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
90
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
91 /* 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
92
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
93 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
94 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
95 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
96 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
97 */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
98
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
99 typedef struct {
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
100 PyObject_HEAD
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
101 char *buf;
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
102 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
103 } IOobject;
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 #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
106
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
107 /* 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
108
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
109 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
110 PyObject_HEAD
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
111 char *buf;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
112 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
113
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
114 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
115 } Oobject;
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 /* 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
118
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
119 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
120 PyObject_HEAD
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
121 char *buf;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
122 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
123
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
124 PyObject *pbuf;
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
125 } Iobject;
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
126
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
127 /* IOobject (common) methods */
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
128
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
129 static char IO_flush__doc__[] = "flush(): does nothing.";
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 int
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
132 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
133 UNLESS (self->buf) {
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
134 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
135 "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
136 return 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 return 1;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
139 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
140
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
141 static PyObject *
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
142 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
143
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
144 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
145 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
146
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
147 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
148 return Py_None;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
149 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
150
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
151 static char IO_getval__doc__[] =
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
152 "getvalue([use_pos]) -- Get the string value."
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
153 "\n"
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
154 "If use_pos is specified and is a true value, then the string returned\n"
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
155 "will include only the text up to the current file position.\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_cgetval(PyObject *self) {
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
160 UNLESS (IO__opencheck(IOOOBJECT(self))) return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
161 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
162 ((IOobject*)self)->pos);
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
163 }
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 static PyObject *
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
166 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
167 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
168 int s;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
169
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
170 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
171 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
172
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
173 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
174 s=self->pos;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
175 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
176 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
177 else
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
178 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
179 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
180 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
181
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
182 static char IO_isatty__doc__[] = "isatty(): always returns 0";
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 static PyObject *
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
185 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
186
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
187 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
188
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
189 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
190 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
191
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
192 static char IO_read__doc__[] =
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
193 "read([s]) -- Read s characters, or the rest of the string"
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
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
196 static int
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
197 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
198 int l;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
199
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
200 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
201 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
202 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
203 n = l;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
204 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
205 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
206
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
207 *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
208 ((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
209 return n;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
210 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
211
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
212 static PyObject *
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
213 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
214 int n = -1;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
215 char *output;
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 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
218
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
219 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
220
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
221 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
222 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
223
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
224 static char IO_readline__doc__[] =
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
225 "readline() -- Read one line"
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
226 ;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
227
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
228 static int
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
229 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
230 char *n, *s;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
231 int l;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
232
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
233 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
234
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
235 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
236 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
237 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
238 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
239
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
240 *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
241 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
242 ((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
243 return l;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
244 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
245
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
246 static PyObject *
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
247 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
248 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
249 char *output;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
250
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
251 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
252
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
253 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
254 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
255 m = n - m;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
256 n -= m;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
257 self->pos -= m;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
258 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
259 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
260 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
261
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
262 static char IO_readlines__doc__[] =
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
263 "readlines() -- Read all lines"
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
264 ;
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 static PyObject *
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
267 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
268 int n;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
269 char *output;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
270 PyObject *result, *line;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
271 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
272
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
273 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
274
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
275 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
276 if (!result)
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
277 return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
278
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
279 while (1){
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
280 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
281 goto err;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
282 if (n == 0)
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
283 break;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
284 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
285 if (!line)
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
286 goto err;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
287 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
288 Py_DECREF (line);
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
289 length += n;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
290 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
291 break;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
292 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
293 return result;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
294 err:
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
295 Py_DECREF(result);
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
296 return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
297 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
298
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
299 static char IO_reset__doc__[] =
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
300 "reset() -- Reset the file position to the beginning"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
301 ;
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
302
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
303 static PyObject *
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
304 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
305
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
306 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
307 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
308
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
309 self->pos = 0;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
310
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
311 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
312 return Py_None;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
313 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
314
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
315 static char IO_tell__doc__[] =
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
316 "tell() -- get the current position.";
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
317
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
318 static PyObject *
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
319 IO_tell(IOobject *self, PyObject *args) {
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
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 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
322 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
323
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
324 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
325 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
326
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
327 static char IO_truncate__doc__[] =
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
328 "truncate(): truncate the file at the current position.";
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
329
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
330 static PyObject *
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
331 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
332 int pos = -1;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
333
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
334 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
335 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
336 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
337
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
338 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
339
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
340 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
341 return Py_None;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
342 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
343
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
344
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
345
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
346
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
347 /* Read-write object methods */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
348
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
349 static char O_seek__doc__[] =
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
350 "seek(position) -- set the current position\n"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
351 "seek(position, mode) -- mode 0: absolute; 1: relative; 2: relative to EOF";
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
352
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
353 static PyObject *
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
354 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
355 int position, mode = 0;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
356
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
357 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
358 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
359 return NULL;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
360
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
361 if (mode == 2) {
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
362 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
363 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
364 else if (mode == 1) {
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
365 position += self->pos;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
366 }
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
367
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
368 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
369 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
370 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
371 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
372 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
373 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
374 return PyErr_NoMemory();
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
375 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
376 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
377 else if (position < 0) position=0;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
378
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
379 self->pos=position;
14679
08823099ae62 Implement readlines function. Closes Bug #110686.
Martin v. Löwis <martin@v.loewis.de>
parents: 13817
diff changeset
380
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
381 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
382
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
383 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
384 return Py_None;
14679
08823099ae62 Implement readlines function. Closes Bug #110686.
Martin v. Löwis <martin@v.loewis.de>
parents: 13817
diff changeset
385 }
08823099ae62 Implement readlines function. Closes Bug #110686.
Martin v. Löwis <martin@v.loewis.de>
parents: 13817
diff changeset
386
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
387 static char O_write__doc__[] =
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
388 "write(s) -- Write a string to the file"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
389 "\n\nNote (hack:) writing None resets the buffer"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
390 ;
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
391
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
392
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
393 static int
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
394 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
395 int newl;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
396
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
397 UNLESS (IO__opencheck(IOOOBJECT(self))) return -1;
4906
fce781b127b9 Jim's latest version.
Guido van Rossum <guido@python.org>
parents: 4598
diff changeset
398
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
399 newl=((Oobject*)self)->pos+l;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
400 if (newl >= ((Oobject*)self)->buf_size) {
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
401 ((Oobject*)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
402 if (((Oobject*)self)->buf_size <= newl)
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
403 ((Oobject*)self)->buf_size=newl+1;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
404 UNLESS (((Oobject*)self)->buf=
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
405 (char*)realloc(
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
406 ((Oobject*)self)->buf,
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
407 (((Oobject*)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
408 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
409 ((Oobject*)self)->buf_size=((Oobject*)self)->pos=0;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
410 return -1;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
411 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
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 memcpy(((Oobject*)((Oobject*)self))->buf+((Oobject*)self)->pos,c,l);
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
415
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
416 ((Oobject*)self)->pos += l;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
417
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
418 if (((Oobject*)self)->string_size < ((Oobject*)self)->pos) {
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
419 ((Oobject*)self)->string_size = ((Oobject*)self)->pos;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
420 }
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
421
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
422 return l;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
423 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
424
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
425 static PyObject *
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
426 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
427 PyObject *s;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
428 char *c;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
429 int l;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
430
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
431 UNLESS (PyArg_ParseTuple(args, "O:write", &s)) return NULL;
5991
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
432
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
433 UNLESS (-1 != (l=PyString_Size(s))) return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
434 UNLESS (c=PyString_AsString(s)) return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
435 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
436
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
437 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
438 return Py_None;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
439 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
440
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
441 static char O_close__doc__[] = "close(): explicitly release resources held.";
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
442
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
443 static PyObject *
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
444 O_close(Oobject *self, PyObject *args) {
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
445
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
446 UNLESS (PyArg_ParseTuple(args, ":close")) return NULL;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
447
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
448 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
449 self->buf = NULL;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
450
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
451 self->pos = self->string_size = self->buf_size = 0;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
452
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
453 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
454 return Py_None;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
455 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
456
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
457
10119
a63c9c3e9ecc The writelines() function was never tested and contained numerous bugs
Guido van Rossum <guido@python.org>
parents: 9642
diff changeset
458 static char O_writelines__doc__[] =
a63c9c3e9ecc The writelines() function was never tested and contained numerous bugs
Guido van Rossum <guido@python.org>
parents: 9642
diff changeset
459 "writelines(sequence_of_strings): write each string";
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
460 static PyObject *
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
461 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
462 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
463 static PyObject *joiner = NULL;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
464
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
465 UNLESS (PyArg_ParseTuple(args, "O:writelines", &args)) return NULL;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
466
16546
60a2e99c863b In O_writelines: Replace use of string.joinfields with "".join.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 15059
diff changeset
467 if (!joiner) {
60a2e99c863b In O_writelines: Replace use of string.joinfields with "".join.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 15059
diff changeset
468 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
469 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
470 return NULL;
60a2e99c863b In O_writelines: Replace use of string.joinfields with "".join.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 15059
diff changeset
471 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
472 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
473 if (joiner == NULL)
60a2e99c863b In O_writelines: Replace use of string.joinfields with "".join.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 15059
diff changeset
474 return NULL;
60a2e99c863b In O_writelines: Replace use of string.joinfields with "".join.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 15059
diff changeset
475 }
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
476
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
477 if (PyObject_Size(args) < 0) return NULL;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
478
16546
60a2e99c863b In O_writelines: Replace use of string.joinfields with "".join.
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 15059
diff changeset
479 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
480 UNLESS (tmp) return NULL;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
481
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
482 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
483 Py_DECREF(tmp);
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
484 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
485
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
486 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
487 Py_DECREF(args);
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
488 return tmp;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
489 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
490
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
491 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
492 /* Common methods: */
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
493 {"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
494 {"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
495 {"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
496 {"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
497 {"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
498 {"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
499 {"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
500 {"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
501 {"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
502
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
503 /* 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
504 {"close", (PyCFunction)O_close, METH_VARARGS, O_close__doc__},
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
505 {"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
506 {"write", (PyCFunction)O_write, METH_VARARGS, O_write__doc__},
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
507 {"writelines", (PyCFunction)O_writelines, METH_VARARGS, O_writelines__doc__},
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
508 {NULL, NULL} /* sentinel */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
509 };
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
510
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
511 static void
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
512 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
513 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
514 free(self->buf);
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
515 PyObject_Del(self);
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
516 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
517
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
518 static PyObject *
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
519 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
520 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
521 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
522 }
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
523 return Py_FindMethod(O_methods, (PyObject *)self, name);
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
524 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
525
5315
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
526 static int
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
527 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
528 long x;
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
529 if (strcmp(name, "softspace") != 0) {
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
530 PyErr_SetString(PyExc_AttributeError, name);
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
531 return -1;
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
532 }
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
533 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
534 if (x < 0 && PyErr_Occurred())
5315
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
535 return -1;
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
536 self->softspace = x;
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
537 return 0;
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
538 }
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
539
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
540 static char Otype__doc__[] =
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
541 "Simple type for output to strings."
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
542 ;
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
543
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
544 static PyTypeObject Otype = {
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
545 PyObject_HEAD_INIT(NULL)
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
546 0, /*ob_size*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
547 "StringO", /*tp_name*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
548 sizeof(Oobject), /*tp_basicsize*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
549 0, /*tp_itemsize*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
550 /* methods */
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
551 (destructor)O_dealloc, /*tp_dealloc*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
552 (printfunc)0, /*tp_print*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
553 (getattrfunc)O_getattr, /*tp_getattr*/
5315
65c9e90d8142 My own patch: support writable 'softspace' attribute.
Guido van Rossum <guido@python.org>
parents: 5280
diff changeset
554 (setattrfunc)O_setattr, /*tp_setattr*/
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
555 (cmpfunc)0, /*tp_compare*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
556 (reprfunc)0, /*tp_repr*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
557 0, /*tp_as_number*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
558 0, /*tp_as_sequence*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
559 0, /*tp_as_mapping*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
560 (hashfunc)0, /*tp_hash*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
561 (ternaryfunc)0, /*tp_call*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
562 (reprfunc)0, /*tp_str*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
563
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
564 /* Space for future expansion */
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
565 0L,0L,0L,0L,
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
566 Otype__doc__ /* Documentation string */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
567 };
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
568
5991
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
569 static PyObject *
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
570 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
571 Oobject *self;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
572
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
573 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
574 if (self == NULL)
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
575 return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
576 self->pos=0;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
577 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
578 self->softspace = 0;
5991
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
579
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
580 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
581 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
582 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
583 return NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
584 }
5991
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
585
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
586 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
587 return (PyObject*)self;
5991
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
588 }
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
589
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
590 /* End of code for StringO objects */
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
591 /* -------------------------------------------------------- */
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
592
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
593 static PyObject *
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
594 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
595
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
596 UNLESS (PyArg_ParseTuple(args, ":close")) return NULL;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
597
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
598 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
599 self->pbuf = NULL;
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
600 self->buf = NULL;
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
601
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
602 self->pos = 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
603
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
604 Py_INCREF(Py_None);
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
605 return Py_None;
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
606 }
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
607
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
608 static PyObject *
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
609 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
610 int position, mode = 0;
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
611
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
612 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
613 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
614 return NULL;
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
615
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
616 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
617 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
618
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
619 if (position < 0) position=0;
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
620
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
621 self->pos=position;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
622
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
623 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
624 return Py_None;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
625 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
626
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
627 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
628 /* Common methods: */
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
629 {"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
630 {"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
631 {"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
632 {"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
633 {"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
634 {"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
635 {"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
636 {"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
637 {"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
638
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
639 /* 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
640 {"close", (PyCFunction)I_close, METH_VARARGS, O_close__doc__},
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
641 {"seek", (PyCFunction)I_seek, METH_VARARGS, O_seek__doc__},
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
642 {NULL, NULL}
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
643 };
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
644
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
645 static void
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
646 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
647 Py_XDECREF(self->pbuf);
12576
1c7c2dd1beb1 Vladimir Marangozov's long-awaited malloc restructuring.
Guido van Rossum <guido@python.org>
parents: 12385
diff changeset
648 PyObject_Del(self);
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
649 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
650
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
651 static PyObject *
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
652 I_getattr(Iobject *self, char *name) {
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
653 return Py_FindMethod(I_methods, (PyObject *)self, name);
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
654 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
655
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
656 static char Itype__doc__[] =
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
657 "Simple type for treating strings as input file streams"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
658 ;
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
659
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
660 static PyTypeObject Itype = {
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
661 PyObject_HEAD_INIT(NULL)
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
662 0, /*ob_size*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
663 "StringI", /*tp_name*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
664 sizeof(Iobject), /*tp_basicsize*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
665 0, /*tp_itemsize*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
666 /* methods */
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
667 (destructor)I_dealloc, /*tp_dealloc*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
668 (printfunc)0, /*tp_print*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
669 (getattrfunc)I_getattr, /*tp_getattr*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
670 (setattrfunc)0, /*tp_setattr*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
671 (cmpfunc)0, /*tp_compare*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
672 (reprfunc)0, /*tp_repr*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
673 0, /*tp_as_number*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
674 0, /*tp_as_sequence*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
675 0, /*tp_as_mapping*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
676 (hashfunc)0, /*tp_hash*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
677 (ternaryfunc)0, /*tp_call*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
678 (reprfunc)0, /*tp_str*/
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
679
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
680 /* Space for future expansion */
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
681 0L,0L,0L,0L,
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
682 Itype__doc__ /* Documentation string */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
683 };
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
684
5991
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
685 static PyObject *
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
686 newIobject(PyObject *s) {
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
687 Iobject *self;
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
688 char *buf;
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
689 int size;
12385
627226df9f01 raise TypeError when bad argument passed to cStringIO.StringIO
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 11882
diff changeset
690
627226df9f01 raise TypeError when bad argument passed to cStringIO.StringIO
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 11882
diff changeset
691 if (!PyString_Check(s)) {
627226df9f01 raise TypeError when bad argument passed to cStringIO.StringIO
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 11882
diff changeset
692 PyErr_Format(PyExc_TypeError, "expected string, %.200s found",
627226df9f01 raise TypeError when bad argument passed to cStringIO.StringIO
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 11882
diff changeset
693 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
694 return NULL;
627226df9f01 raise TypeError when bad argument passed to cStringIO.StringIO
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 11882
diff changeset
695 }
627226df9f01 raise TypeError when bad argument passed to cStringIO.StringIO
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 11882
diff changeset
696 buf = PyString_AS_STRING(s);
627226df9f01 raise TypeError when bad argument passed to cStringIO.StringIO
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 11882
diff changeset
697 size = PyString_GET_SIZE(s);
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
698 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
699 Py_INCREF(s);
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
700 self->buf=buf;
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
701 self->string_size=size;
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
702 self->pbuf=s;
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
703 self->pos=0;
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
704
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
705 return (PyObject*)self;
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
706 }
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
707
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
708 /* End of code for StringI objects */
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
709 /* -------------------------------------------------------- */
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
710
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
711
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
712 static char IO_StringIO__doc__[] =
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
713 "StringIO([s]) -- Return a StringIO-like stream for reading or writing"
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
714 ;
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
715
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
716 static PyObject *
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
717 IO_StringIO(PyObject *self, PyObject *args) {
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
718 PyObject *s=0;
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
719
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
720 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
721
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
722 if (s) return newIobject(s);
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
723 return newOobject(128);
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
724 }
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
725
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
726 /* List of methods defined in the module */
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
727
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
728 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
729 {"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
730 METH_VARARGS, IO_StringIO__doc__},
4906
fce781b127b9 Jim's latest version.
Guido van Rossum <guido@python.org>
parents: 4598
diff changeset
731 {NULL, NULL} /* sentinel */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
732 };
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
733
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
734
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
735 /* Initialization function for the module (*must* be called initcStringIO) */
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
736
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
737 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
738 IO_cread,
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
739 IO_creadline,
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
740 O_cwrite,
15059
acb88607b4bd Added a new "base" type, IOobject for which most of the
Jim Fulton <jim@zope.com>
parents: 14679
diff changeset
741 IO_cgetval,
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
742 newOobject,
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
743 newIobject,
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
744 &Itype,
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
745 &Otype,
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
746 };
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
747
9642
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
748 #ifndef DL_EXPORT /* declarations for DLL import/export */
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
749 #define DL_EXPORT(RTYPE) RTYPE
08379c7f5fa9 Jim Fulton writes:
Guido van Rossum <guido@python.org>
parents: 9588
diff changeset
750 #endif
9588
38023a425e48 Add DL_EXPORT() to all modules that could possibly be used
Guido van Rossum <guido@python.org>
parents: 9521
diff changeset
751 DL_EXPORT(void)
13690
c09c0171474f ANSIfy some more forward declarations.
Thomas Wouters <thomas@python.org>
parents: 13620
diff changeset
752 initcStringIO(void) {
6227
613f976a57b4 #Plug small memory leaks in constructors.
Guido van Rossum <guido@python.org>
parents: 6215
diff changeset
753 PyObject *m, *d, *v;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
754
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
755
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
756 /* Create the module and add the functions */
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
757 m = Py_InitModule4("cStringIO", IO_methods,
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
758 cStringIO_module_documentation,
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
759 (PyObject*)NULL,PYTHON_API_VERSION);
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
760
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
761 /* Add some symbolic constants to the module */
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
762 d = PyModule_GetDict(m);
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
763
4906
fce781b127b9 Jim's latest version.
Guido van Rossum <guido@python.org>
parents: 4598
diff changeset
764 /* Export C API */
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
765 Itype.ob_type=&PyType_Type;
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
766 Otype.ob_type=&PyType_Type;
6227
613f976a57b4 #Plug small memory leaks in constructors.
Guido van Rossum <guido@python.org>
parents: 6215
diff changeset
767 PyDict_SetItemString(d,"cStringIO_CAPI",
613f976a57b4 #Plug small memory leaks in constructors.
Guido van Rossum <guido@python.org>
parents: 6215
diff changeset
768 v = PyCObject_FromVoidPtr(&CAPI,NULL));
613f976a57b4 #Plug small memory leaks in constructors.
Guido van Rossum <guido@python.org>
parents: 6215
diff changeset
769 Py_XDECREF(v);
5280
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
770
e8f8cf358054 Unknown changes by Jim Fulton.
Guido van Rossum <guido@python.org>
parents: 4957
diff changeset
771 /* Export Types */
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
772 PyDict_SetItemString(d,"InputType", (PyObject*)&Itype);
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
773 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
774
a5737dd96979 cPickle release 0.3 from Jim Fulton
Guido van Rossum <guido@python.org>
parents: 5315
diff changeset
775 /* 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
776 if (0) PycString_IMPORT;
4598
8fdb0539cfb1 Jim F's brainchild
Guido van Rossum <guido@python.org>
parents:
diff changeset
777 }