| /** @file | |
| File object interface. | |
| Copyright (c) 2011, Intel Corporation. All rights reserved.<BR> | |
| This program and the accompanying materials are licensed and made available under | |
| the terms and conditions of the BSD License that accompanies this distribution. | |
| The full text of the license may be found at | |
| http://opensource.org/licenses/bsd-license. | |
| THE PROGRAM IS DISTRIBUTED UNDER THE BSD LICENSE ON AN "AS IS" BASIS, | |
| WITHOUT WARRANTIES OR REPRESENTATIONS OF ANY KIND, EITHER EXPRESS OR IMPLIED. | |
| **/ | |
| /* File object interface */ | |
| #ifndef Py_FILEOBJECT_H | |
| #define Py_FILEOBJECT_H | |
| #ifdef __cplusplus | |
| extern "C" { | |
| #endif | |
| typedef struct { | |
| PyObject_HEAD | |
| FILE *f_fp; | |
| PyObject *f_name; | |
| PyObject *f_mode; | |
| int (*f_close)(FILE *); | |
| int f_softspace; /* Flag used by 'print' command */ | |
| int f_binary; /* Flag which indicates whether the file is | |
| open in binary (1) or text (0) mode */ | |
| char* f_buf; /* Allocated readahead buffer */ | |
| char* f_bufend; /* Points after last occupied position */ | |
| char* f_bufptr; /* Current buffer position */ | |
| char *f_setbuf; /* Buffer for setbuf(3) and setvbuf(3) */ | |
| int f_univ_newline; /* Handle any newline convention */ | |
| int f_newlinetypes; /* Types of newlines seen */ | |
| int f_skipnextlf; /* Skip next \n */ | |
| PyObject *f_encoding; | |
| PyObject *f_errors; | |
| PyObject *weakreflist; /* List of weak references */ | |
| int unlocked_count; /* Num. currently running sections of code | |
| using f_fp with the GIL released. */ | |
| int readable; | |
| int writable; | |
| } PyFileObject; | |
| PyAPI_DATA(PyTypeObject) PyFile_Type; | |
| #define PyFile_Check(op) PyObject_TypeCheck(op, &PyFile_Type) | |
| #define PyFile_CheckExact(op) (Py_TYPE(op) == &PyFile_Type) | |
| PyAPI_FUNC(PyObject *) PyFile_FromString(char *, char *); | |
| PyAPI_FUNC(void) PyFile_SetBufSize(PyObject *, int); | |
| PyAPI_FUNC(int) PyFile_SetEncoding(PyObject *, const char *); | |
| PyAPI_FUNC(int) PyFile_SetEncodingAndErrors(PyObject *, const char *, char *errors); | |
| PyAPI_FUNC(PyObject *) PyFile_FromFile(FILE *, char *, char *, | |
| int (*)(FILE *)); | |
| PyAPI_FUNC(FILE *) PyFile_AsFile(PyObject *); | |
| PyAPI_FUNC(void) PyFile_IncUseCount(PyFileObject *); | |
| PyAPI_FUNC(void) PyFile_DecUseCount(PyFileObject *); | |
| PyAPI_FUNC(PyObject *) PyFile_Name(PyObject *); | |
| PyAPI_FUNC(PyObject *) PyFile_GetLine(PyObject *, int); | |
| PyAPI_FUNC(int) PyFile_WriteObject(PyObject *, PyObject *, int); | |
| PyAPI_FUNC(int) PyFile_SoftSpace(PyObject *, int); | |
| PyAPI_FUNC(int) PyFile_WriteString(const char *, PyObject *); | |
| PyAPI_FUNC(int) PyObject_AsFileDescriptor(PyObject *); | |
| /* The default encoding used by the platform file system APIs | |
| If non-NULL, this is different than the default encoding for strings | |
| */ | |
| PyAPI_DATA(const char *) Py_FileSystemDefaultEncoding; | |
| /* Routines to replace fread() and fgets() which accept any of \r, \n | |
| or \r\n as line terminators. | |
| */ | |
| #define PY_STDIOTEXTMODE "b" | |
| char *Py_UniversalNewlineFgets(char *, int, FILE*, PyObject *); | |
| size_t Py_UniversalNewlineFread(char *, size_t, FILE *, PyObject *); | |
| /* A routine to do sanity checking on the file mode string. returns | |
| non-zero on if an exception occurred | |
| */ | |
| int _PyFile_SanitizeMode(char *mode); | |
| //#if defined _MSC_VER && _MSC_VER >= 1400 | |
| /* A routine to check if a file descriptor is valid on Windows. Returns 0 | |
| * and sets errno to EBADF if it isn't. This is to avoid Assertions | |
| * from various functions in the Windows CRT beginning with | |
| * Visual Studio 2005 | |
| */ | |
| //int _PyVerify_fd(int fd); | |
| //#elif defined _MSC_VER && _MSC_VER >= 1200 | |
| /* fdopen doesn't set errno EBADF and crashes for large fd on debug build */ | |
| //#define _PyVerify_fd(fd) (_get_osfhandle(fd) >= 0) | |
| //#else | |
| #define _PyVerify_fd(A) (1) /* dummy */ | |
| //#endif | |
| #ifdef __cplusplus | |
| } | |
| #endif | |
| #endif /* !Py_FILEOBJECT_H */ |