You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.9 KiB
70 lines
1.9 KiB
#ifndef Py_CSTRINGIO_H |
|
#define Py_CSTRINGIO_H |
|
#ifdef __cplusplus |
|
extern "C" { |
|
#endif |
|
/* |
|
|
|
This header provides access to cStringIO objects from C. |
|
Functions are provided for calling cStringIO objects and |
|
macros are provided for testing whether you have cStringIO |
|
objects. |
|
|
|
Before calling any of the functions or macros, you must initialize |
|
the routines with: |
|
|
|
PycString_IMPORT |
|
|
|
This would typically be done in your init function. |
|
|
|
*/ |
|
#define PycString_IMPORT \ |
|
PycStringIO = (struct PycStringIO_CAPI*)PyCObject_Import("cStringIO", \ |
|
"cStringIO_CAPI") |
|
|
|
/* Basic functions to manipulate cStringIO objects from C */ |
|
|
|
static struct PycStringIO_CAPI { |
|
|
|
/* Read a string from an input object. If the last argument |
|
is -1, the remainder will be read. |
|
*/ |
|
int(*cread)(PyObject *, char **, int); |
|
|
|
/* Read a line from an input object. Returns the length of the read |
|
line as an int and a pointer inside the object buffer as char** (so |
|
the caller doesn't have to provide its own buffer as destination). |
|
*/ |
|
int(*creadline)(PyObject *, char **); |
|
|
|
/* Write a string to an output object*/ |
|
int(*cwrite)(PyObject *, char *, int); |
|
|
|
/* Get the output object as a Python string (returns new reference). */ |
|
PyObject *(*cgetvalue)(PyObject *); |
|
|
|
/* Create a new output object */ |
|
PyObject *(*NewOutput)(int); |
|
|
|
/* Create an input object from a Python string |
|
(copies the Python string reference). |
|
*/ |
|
PyObject *(*NewInput)(PyObject *); |
|
|
|
/* The Python types for cStringIO input and output objects. |
|
Note that you can do input on an output object. |
|
*/ |
|
PyTypeObject *InputType, *OutputType; |
|
|
|
} *PycStringIO; |
|
|
|
/* These can be used to test if you have one */ |
|
#define PycStringIO_InputCheck(O) \ |
|
((O)->ob_type==PycStringIO->InputType) |
|
#define PycStringIO_OutputCheck(O) \ |
|
((O)->ob_type==PycStringIO->OutputType) |
|
|
|
#ifdef __cplusplus |
|
} |
|
#endif |
|
#endif /* !Py_CSTRINGIO_H */
|
|
|