Commit | Line | Data |
---|---|---|
920dae64 AT |
1 | |
2 | /* File object interface */ | |
3 | ||
4 | #ifndef Py_FILEOBJECT_H | |
5 | #define Py_FILEOBJECT_H | |
6 | #ifdef __cplusplus | |
7 | extern "C" { | |
8 | #endif | |
9 | ||
10 | typedef 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 | ||
30 | PyAPI_DATA(PyTypeObject) PyFile_Type; | |
31 | ||
32 | #define PyFile_Check(op) PyObject_TypeCheck(op, &PyFile_Type) | |
33 | #define PyFile_CheckExact(op) ((op)->ob_type == &PyFile_Type) | |
34 | ||
35 | PyAPI_FUNC(PyObject *) PyFile_FromString(char *, char *); | |
36 | PyAPI_FUNC(void) PyFile_SetBufSize(PyObject *, int); | |
37 | PyAPI_FUNC(int) PyFile_SetEncoding(PyObject *, const char *); | |
38 | PyAPI_FUNC(PyObject *) PyFile_FromFile(FILE *, char *, char *, | |
39 | int (*)(FILE *)); | |
40 | PyAPI_FUNC(FILE *) PyFile_AsFile(PyObject *); | |
41 | PyAPI_FUNC(PyObject *) PyFile_Name(PyObject *); | |
42 | PyAPI_FUNC(PyObject *) PyFile_GetLine(PyObject *, int); | |
43 | PyAPI_FUNC(int) PyFile_WriteObject(PyObject *, PyObject *, int); | |
44 | PyAPI_FUNC(int) PyFile_SoftSpace(PyObject *, int); | |
45 | PyAPI_FUNC(int) PyFile_WriteString(const char *, PyObject *); | |
46 | PyAPI_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 | */ | |
51 | PyAPI_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" | |
57 | char *Py_UniversalNewlineFgets(char *, int, FILE*, PyObject *); | |
58 | size_t Py_UniversalNewlineFread(char *, size_t, FILE *, PyObject *); | |
59 | ||
60 | #ifdef __cplusplus | |
61 | } | |
62 | #endif | |
63 | #endif /* !Py_FILEOBJECT_H */ |