| 
									
										
										
										
											2002-10-04 12:43:02 +00:00
										 |  |  | #ifndef Py_CSTRINGIO_H
 | 
					
						
							|  |  |  | #define Py_CSTRINGIO_H
 | 
					
						
							| 
									
										
										
										
											2002-03-30 08:57:12 +00:00
										 |  |  | #ifdef __cplusplus
 | 
					
						
							|  |  |  | extern "C" { | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											1996-12-05 23:30:48 +00:00
										 |  |  | /*
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   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: | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-01-25 21:36:13 +00:00
										 |  |  |     PycString_IMPORT | 
					
						
							| 
									
										
										
										
											1996-12-05 23:30:48 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   This would typically be done in your init function. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-01-06 22:50:12 +00:00
										 |  |  | */ | 
					
						
							| 
									
										
										
										
											2002-08-05 18:20:01 +00:00
										 |  |  | #define PycString_IMPORT \
 | 
					
						
							|  |  |  |   PycStringIO = (struct PycStringIO_CAPI*)PyCObject_Import("cStringIO", \ | 
					
						
							|  |  |  |                                                            "cStringIO_CAPI") | 
					
						
							| 
									
										
										
										
											1996-12-05 23:30:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2000-07-16 12:04:32 +00:00
										 |  |  | /* Basic functions to manipulate cStringIO objects from C */ | 
					
						
							| 
									
										
										
										
											1996-12-05 23:30:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-04-09 17:34:28 +00:00
										 |  |  | static struct PycStringIO_CAPI { | 
					
						
							|  |  |  |    | 
					
						
							| 
									
										
										
										
											2003-01-19 00:45:01 +00:00
										 |  |  |  /* Read a string from an input object.  If the last argument
 | 
					
						
							|  |  |  |     is -1, the remainder will be read. | 
					
						
							|  |  |  |     */ | 
					
						
							| 
									
										
										
										
											2000-07-09 03:09:57 +00:00
										 |  |  |   int(*cread)(PyObject *, char **, int); | 
					
						
							| 
									
										
										
										
											1996-12-05 23:30:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-01-19 00:45:01 +00:00
										 |  |  |  /* 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). | 
					
						
							|  |  |  |     */ | 
					
						
							| 
									
										
										
										
											2000-07-09 03:09:57 +00:00
										 |  |  |   int(*creadline)(PyObject *, char **); | 
					
						
							| 
									
										
										
										
											1996-12-05 23:30:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-01-19 00:45:01 +00:00
										 |  |  |   /* Write a string to an output object*/ | 
					
						
							| 
									
										
										
										
											2000-07-09 03:09:57 +00:00
										 |  |  |   int(*cwrite)(PyObject *, char *, int); | 
					
						
							| 
									
										
										
										
											1996-12-05 23:30:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-01-19 00:45:01 +00:00
										 |  |  |   /* Get the output object as a Python string (returns new reference). */ | 
					
						
							| 
									
										
										
										
											2000-07-09 03:09:57 +00:00
										 |  |  |   PyObject *(*cgetvalue)(PyObject *); | 
					
						
							| 
									
										
										
										
											1996-12-05 23:30:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-04-09 17:34:28 +00:00
										 |  |  |   /* Create a new output object */ | 
					
						
							| 
									
										
										
										
											2000-07-09 03:09:57 +00:00
										 |  |  |   PyObject *(*NewOutput)(int); | 
					
						
							| 
									
										
										
										
											1996-12-05 23:30:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-01-19 00:45:01 +00:00
										 |  |  |   /* Create an input object from a Python string
 | 
					
						
							|  |  |  |      (copies the Python string reference). | 
					
						
							|  |  |  |      */ | 
					
						
							| 
									
										
										
										
											2000-07-09 03:09:57 +00:00
										 |  |  |   PyObject *(*NewInput)(PyObject *); | 
					
						
							| 
									
										
										
										
											1996-12-05 23:30:48 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											1997-04-09 17:34:28 +00:00
										 |  |  |   /* The Python types for cStringIO input and output objects.
 | 
					
						
							|  |  |  |      Note that you can do input on an output object. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |   PyTypeObject *InputType, *OutputType; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-08-05 18:20:01 +00:00
										 |  |  | } *PycStringIO; | 
					
						
							| 
									
										
										
										
											1996-12-05 23:30:48 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | /* These can be used to test if you have one */ | 
					
						
							| 
									
										
										
										
											1997-01-06 22:50:12 +00:00
										 |  |  | #define PycStringIO_InputCheck(O) \
 | 
					
						
							| 
									
										
										
										
											1997-04-09 17:34:28 +00:00
										 |  |  |   ((O)->ob_type==PycStringIO->InputType) | 
					
						
							| 
									
										
										
										
											1997-01-06 22:50:12 +00:00
										 |  |  | #define PycStringIO_OutputCheck(O) \
 | 
					
						
							| 
									
										
										
										
											1997-04-09 17:34:28 +00:00
										 |  |  |   ((O)->ob_type==PycStringIO->OutputType) | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-03-30 08:57:12 +00:00
										 |  |  | #ifdef __cplusplus
 | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | #endif
 | 
					
						
							| 
									
										
										
										
											2002-10-04 12:43:02 +00:00
										 |  |  | #endif /* !Py_CSTRINGIO_H */
 |