fileobject.h revision aa63d0d4af3db832b390ac74517af5eb799540e5
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 int unlocked_count; /* Num. currently running sections of code 29 using f_fp with the GIL released. */ 30} PyFileObject; 31 32PyAPI_DATA(PyTypeObject) PyFile_Type; 33 34#define PyFile_Check(op) PyObject_TypeCheck(op, &PyFile_Type) 35#define PyFile_CheckExact(op) (Py_TYPE(op) == &PyFile_Type) 36 37PyAPI_FUNC(PyObject *) PyFile_FromString(char *, char *); 38PyAPI_FUNC(void) PyFile_SetBufSize(PyObject *, int); 39PyAPI_FUNC(int) PyFile_SetEncoding(PyObject *, const char *); 40PyAPI_FUNC(PyObject *) PyFile_FromFile(FILE *, char *, char *, 41 int (*)(FILE *)); 42PyAPI_FUNC(FILE *) PyFile_AsFile(PyObject *); 43PyAPI_FUNC(void) PyFile_IncUseCount(PyFileObject *); 44PyAPI_FUNC(void) PyFile_DecUseCount(PyFileObject *); 45PyAPI_FUNC(PyObject *) PyFile_Name(PyObject *); 46PyAPI_FUNC(PyObject *) PyFile_GetLine(PyObject *, int); 47PyAPI_FUNC(int) PyFile_WriteObject(PyObject *, PyObject *, int); 48PyAPI_FUNC(int) PyFile_SoftSpace(PyObject *, int); 49PyAPI_FUNC(int) PyFile_WriteString(const char *, PyObject *); 50PyAPI_FUNC(int) PyObject_AsFileDescriptor(PyObject *); 51 52/* The default encoding used by the platform file system APIs 53 If non-NULL, this is different than the default encoding for strings 54*/ 55PyAPI_DATA(const char *) Py_FileSystemDefaultEncoding; 56 57/* Routines to replace fread() and fgets() which accept any of \r, \n 58 or \r\n as line terminators. 59*/ 60#define PY_STDIOTEXTMODE "b" 61char *Py_UniversalNewlineFgets(char *, int, FILE*, PyObject *); 62size_t Py_UniversalNewlineFread(char *, size_t, FILE *, PyObject *); 63 64/* A routine to do sanity checking on the file mode string. returns 65 non-zero on if an exception occurred 66*/ 67int _PyFile_SanitizeMode(char *mode); 68 69#ifdef __cplusplus 70} 71#endif 72#endif /* !Py_FILEOBJECT_H */ 73