History

add hg and python

cinap_lenrek committed 15 years ago

Commit 4bb9e221 parent 987265c3706 files · +1228772 −-233Browse files

Showing the changes to sys/src/cmd/python/Include/cStringIO.h (1 of 3706 files). Show all

Unified · Split

sys/src/cmd/python/Include/cStringIO.h+70−0
@@ -0,0 +1,70 @@
1+#ifndef Py_CSTRINGIO_H
2+#define Py_CSTRINGIO_H
3+#ifdef __cplusplus
4+extern "C" {
5+#endif
6+/*
7+
8+ This header provides access to cStringIO objects from C.
9+ Functions are provided for calling cStringIO objects and
10+ macros are provided for testing whether you have cStringIO
11+ objects.
12+
13+ Before calling any of the functions or macros, you must initialize
14+ the routines with:
15+
16+ PycString_IMPORT
17+
18+ This would typically be done in your init function.
19+
20+*/
21+#define PycString_IMPORT \
22+ PycStringIO = (struct PycStringIO_CAPI*)PyCObject_Import("cStringIO", \
23+ "cStringIO_CAPI")
24+
25+/* Basic functions to manipulate cStringIO objects from C */
26+
27+static struct PycStringIO_CAPI {
28+
29+ /* Read a string from an input object. If the last argument
30+ is -1, the remainder will be read.
31+ */
32+ int(*cread)(PyObject *, char **, Py_ssize_t);
33+
34+ /* Read a line from an input object. Returns the length of the read
35+ line as an int and a pointer inside the object buffer as char** (so
36+ the caller doesn't have to provide its own buffer as destination).
37+ */
38+ int(*creadline)(PyObject *, char **);
39+
40+ /* Write a string to an output object*/
41+ int(*cwrite)(PyObject *, const char *, Py_ssize_t);
42+
43+ /* Get the output object as a Python string (returns new reference). */
44+ PyObject *(*cgetvalue)(PyObject *);
45+
46+ /* Create a new output object */
47+ PyObject *(*NewOutput)(int);
48+
49+ /* Create an input object from a Python string
50+ (copies the Python string reference).
51+ */
52+ PyObject *(*NewInput)(PyObject *);
53+
54+ /* The Python types for cStringIO input and output objects.
55+ Note that you can do input on an output object.
56+ */
57+ PyTypeObject *InputType, *OutputType;
58+
59+} *PycStringIO;
60+
61+/* These can be used to test if you have one */
62+#define PycStringIO_InputCheck(O) \
63+ ((O)->ob_type==PycStringIO->InputType)
64+#define PycStringIO_OutputCheck(O) \
65+ ((O)->ob_type==PycStringIO->OutputType)
66+
67+#ifdef __cplusplus
68+}
69+#endif
70+#endif /* !Py_CSTRINGIO_H */