fileobject.h revision e93237dfcc4ee4feee62adafb4e7899487ca864b
1 2/* File object interface */ 3 4#ifndef Py_FILEOBJECT_H 5#define Py_FILEOBJECT_H 6#ifdef __cplusplus 7extern "C" { 8#endif 9 10typedef struct { 11 PyObject_HEAD 12 FILE *f_fp; 13 PyObject *f_name; 14 PyObject *f_mode; 15 int (*f_close)(FILE *); 16 int f_softspace; /* Flag used by 'print' command */ 17 int f_binary; /* Flag which indicates whether the file is 18 open in binary (1) or text (0) mode */ 19 char* f_buf; /* Allocated readahead buffer */ 20 char* f_bufend; /* Points after last occupied position */ 21 char* f_bufptr; /* Current buffer position */ 22 char *f_setbuf; /* Buffer for setbuf(3) and setvbuf(3) */ 23 int f_univ_newline; /* Handle any newline convention */ 24 int f_newlinetypes; /* Types of newlines seen */ 25 int f_skipnextlf; /* Skip next \n */ 26 PyObject *f_encoding; 27 PyObject *weakreflist; /* List of weak references */ 28} PyFileObject; 29 30PyAPI_DATA(PyTypeObject) PyFile_Type; 31 32#define PyFile_Check(op) PyObject_TypeCheck(op, &PyFile_Type) 33#define PyFile_CheckExact(op) (Py_TYPE(op) == &PyFile_Type) 34 35PyAPI_FUNC(PyObject *) PyFile_FromString(char *, char *); 36PyAPI_FUNC(void) PyFile_SetBufSize(PyObject *, int); 37PyAPI_FUNC(int) PyFile_SetEncoding(PyObject *, const char *); 38PyAPI_FUNC(PyObject *) PyFile_FromFile(FILE *, char *, char *, 39 int (*)(FILE *)); 40PyAPI_FUNC(FILE *) PyFile_AsFile(PyObject *); 41PyAPI_FUNC(PyObject *) PyFile_Name(PyObject *); 42PyAPI_FUNC(PyObject *) PyFile_GetLine(PyObject *, int); 43PyAPI_FUNC(int) PyFile_WriteObject(PyObject *, PyObject *, int); 44PyAPI_FUNC(int) PyFile_SoftSpace(PyObject *, int); 45PyAPI_FUNC(int) PyFile_WriteString(const char *, PyObject *); 46PyAPI_FUNC(int) PyObject_AsFileDescriptor(PyObject *); 47 48/* The default encoding used by the platform file system APIs 49 If non-NULL, this is different than the default encoding for strings 50*/ 51PyAPI_DATA(const char *) Py_FileSystemDefaultEncoding; 52 53/* Routines to replace fread() and fgets() which accept any of \r, \n 54 or \r\n as line terminators. 55*/ 56#define PY_STDIOTEXTMODE "b" 57char *Py_UniversalNewlineFgets(char *, int, FILE*, PyObject *); 58size_t Py_UniversalNewlineFread(char *, size_t, FILE *, PyObject *); 59 60/* A routine to do sanity checking on the file mode string. returns 61 non-zero on if an exception occurred 62*/ 63int _PyFile_SanitizeMode(char *mode); 64 65#ifdef __cplusplus 66} 67#endif 68#endif /* !Py_FILEOBJECT_H */ 69