| struct __sFILE |
Stdio state variables.
The following always hold:
if (_flags&(__SLBF|__SWR)) == (__SLBF|__SWR), _lbfsize is -_bf._size, else _lbfsize is 0 if _flags&__SRD, _w is 0 if _flags&__SWR, _r is 0
This ensures that the getc and putc macros (or inline functions) never try to write or read from a file that is in `read' or `write' mode. (Moreover, they can, and do, automatically switch from read mode to write mode, and back, on "r+" and "w+" files.)
_lbfsize is used only to make the inline line-buffered output stream code as compact as possible.
_ub, _up, and _ur are used when ungetc() pushes back more characters than fit in the current _bf, or when ungetc() pushes back a character that does not match the previous one in _bf. When this happens, _ub._base becomes non-nil (i.e., a stream has ungetc() data iff _ub._base!=NULL) and _up and _ur save the current values of _p and _r.
| Public Attributes | |
|---|---|
| struct __sbuf | _bf |
| int | _blksize |
| int(* | _close |
| void * | _cookie |
| struct _reent * | _data |
| short | _file |
| short | _flags |
| struct __sbuf | _lb |
| int | _lbfsize |
| unsigned char | _nbuf |
| int | _offset |
| unsigned char * | _p |
| int | _r |
| int(* | _read |
| _fpos_t (* | _seek |
| struct __sbuf | _ub |
| unsigned char | _ubuf |
| unsigned char * | _up |
| int | _ur |
| int | _w |
| int(* | _write |
Copyright ©2010 Nokia Corporation and/or its subsidiary(-ies).
All rights
reserved. Unless otherwise stated, these materials are provided under the terms of the Eclipse Public License
v1.0.