| 228 |
\c stdin will also save some execution time. |
\c stdin will also save some execution time. |
| 229 |
*/ |
*/ |
| 230 |
|
|
| 231 |
#if !defined(DOXYGEN) |
#if !defined(__DOXYGEN__) |
| 232 |
|
|
| 233 |
/* |
/* |
| 234 |
* This is an internal structure of the library that is subject to be |
* This is an internal structure of the library that is subject to be |
| 260 |
void *udata; /* User defined and accessible data. */ |
void *udata; /* User defined and accessible data. */ |
| 261 |
}; |
}; |
| 262 |
|
|
| 263 |
#endif /* not DOXYGEN */ |
#endif /* not __DOXYGEN__ */ |
| 264 |
|
|
| 265 |
/*@{*/ |
/*@{*/ |
| 266 |
/** |
/** |
| 317 |
stream object. */ |
stream object. */ |
| 318 |
#define fdev_get_udata(stream) ((stream)->udata) |
#define fdev_get_udata(stream) ((stream)->udata) |
| 319 |
|
|
| 320 |
#if defined(DOXYGEN) |
#if defined(__DOXYGEN__) |
| 321 |
/** |
/** |
| 322 |
\brief Setup a user-supplied buffer as an stdio stream |
\brief Setup a user-supplied buffer as an stdio stream |
| 323 |
|
|
| 367 |
*/ |
*/ |
| 368 |
#define _FDEV_EOF (-2) |
#define _FDEV_EOF (-2) |
| 369 |
|
|
| 370 |
#if defined(DOXYGEN) |
#if defined(__DOXYGEN__) |
| 371 |
/** |
/** |
| 372 |
\brief Initializer for a user-supplied stdio stream |
\brief Initializer for a user-supplied stdio stream |
| 373 |
|
|
| 392 |
extern "C" { |
extern "C" { |
| 393 |
#endif |
#endif |
| 394 |
|
|
| 395 |
#if !defined(DOXYGEN) |
#if !defined(__DOXYGEN__) |
| 396 |
/* |
/* |
| 397 |
* Doxygen documentation can be found in fdevopen.c. |
* Doxygen documentation can be found in fdevopen.c. |
| 398 |
*/ |
*/ |
| 412 |
extern FILE *fdevopen(int (*__put)(char, FILE*), int (*__get)(FILE*)); |
extern FILE *fdevopen(int (*__put)(char, FILE*), int (*__get)(FILE*)); |
| 413 |
#endif /* defined(__STDIO_FDEVOPEN_COMPAT_12) */ |
#endif /* defined(__STDIO_FDEVOPEN_COMPAT_12) */ |
| 414 |
|
|
| 415 |
#endif /* not DOXYGEN */ |
#endif /* not __DOXYGEN__ */ |
| 416 |
|
|
| 417 |
/** |
/** |
| 418 |
This function closes \c stream, and disallows and further |
This function closes \c stream, and disallows and further |
| 581 |
*/ |
*/ |
| 582 |
extern int fputc(int __c, FILE *__stream); |
extern int fputc(int __c, FILE *__stream); |
| 583 |
|
|
| 584 |
#if !defined(DOXYGEN) |
#if !defined(__DOXYGEN__) |
| 585 |
|
|
| 586 |
/* putc() function implementation, required by standard */ |
/* putc() function implementation, required by standard */ |
| 587 |
extern int putc(int __c, FILE *__stream); |
extern int putc(int __c, FILE *__stream); |
| 589 |
/* putchar() function implementation, required by standard */ |
/* putchar() function implementation, required by standard */ |
| 590 |
extern int putchar(int __c); |
extern int putchar(int __c); |
| 591 |
|
|
| 592 |
#endif /* not DOXYGEN */ |
#endif /* not __DOXYGEN__ */ |
| 593 |
|
|
| 594 |
/** |
/** |
| 595 |
The macro \c putc used to be a "fast" macro implementation with a |
The macro \c putc used to be a "fast" macro implementation with a |
| 731 |
*/ |
*/ |
| 732 |
extern int fgetc(FILE *__stream); |
extern int fgetc(FILE *__stream); |
| 733 |
|
|
| 734 |
#if !defined(DOXYGEN) |
#if !defined(__DOXYGEN__) |
| 735 |
|
|
| 736 |
/* getc() function implementation, required by standard */ |
/* getc() function implementation, required by standard */ |
| 737 |
extern int getc(FILE *__stream); |
extern int getc(FILE *__stream); |
| 739 |
/* getchar() function implementation, required by standard */ |
/* getchar() function implementation, required by standard */ |
| 740 |
extern int getchar(void); |
extern int getchar(void); |
| 741 |
|
|
| 742 |
#endif /* not DOXYGEN */ |
#endif /* not __DOXYGEN__ */ |
| 743 |
|
|
| 744 |
/** |
/** |
| 745 |
The macro \c getc used to be a "fast" macro implementation with a |
The macro \c getc used to be a "fast" macro implementation with a |
| 806 |
*/ |
*/ |
| 807 |
extern void clearerr(FILE *__stream); |
extern void clearerr(FILE *__stream); |
| 808 |
|
|
| 809 |
#if !defined(DOXYGEN) |
#if !defined(__DOXYGEN__) |
| 810 |
/* fast inlined version of clearerr() */ |
/* fast inlined version of clearerr() */ |
| 811 |
#define clearerror(s) do { (s)->flags &= ~(__SERR | __SEOF); } while(0) |
#define clearerror(s) do { (s)->flags &= ~(__SERR | __SEOF); } while(0) |
| 812 |
#endif /* !defined(DOXYGEN) */ |
#endif /* !defined(__DOXYGEN__) */ |
| 813 |
|
|
| 814 |
/** |
/** |
| 815 |
Test the end-of-file flag of \c stream. This flag can only be cleared |
Test the end-of-file flag of \c stream. This flag can only be cleared |
| 817 |
*/ |
*/ |
| 818 |
extern int feof(FILE *__stream); |
extern int feof(FILE *__stream); |
| 819 |
|
|
| 820 |
#if !defined(DOXYGEN) |
#if !defined(__DOXYGEN__) |
| 821 |
/* fast inlined version of feof() */ |
/* fast inlined version of feof() */ |
| 822 |
#define feof(s) ((s)->flags & __SEOF) |
#define feof(s) ((s)->flags & __SEOF) |
| 823 |
#endif /* !defined(DOXYGEN) */ |
#endif /* !defined(__DOXYGEN__) */ |
| 824 |
|
|
| 825 |
/** |
/** |
| 826 |
Test the error flag of \c stream. This flag can only be cleared |
Test the error flag of \c stream. This flag can only be cleared |
| 828 |
*/ |
*/ |
| 829 |
extern int ferror(FILE *__stream); |
extern int ferror(FILE *__stream); |
| 830 |
|
|
| 831 |
#if !defined(DOXYGEN) |
#if !defined(__DOXYGEN__) |
| 832 |
/* fast inlined version of ferror() */ |
/* fast inlined version of ferror() */ |
| 833 |
#define ferror(s) ((s)->flags & __SERR) |
#define ferror(s) ((s)->flags & __SERR) |
| 834 |
#endif /* !defined(DOXYGEN) */ |
#endif /* !defined(__DOXYGEN__) */ |
| 835 |
|
|
| 836 |
/** |
/** |
| 837 |
Formatted input. This function is the heart of the \c scanf |
Formatted input. This function is the heart of the \c scanf |
| 1029 |
*/ |
*/ |
| 1030 |
extern int sscanf_P(const char *__buf, const char *__fmt, ...); |
extern int sscanf_P(const char *__buf, const char *__fmt, ...); |
| 1031 |
|
|
| 1032 |
#if defined(DOXYGEN) |
#if defined(__DOXYGEN__) |
| 1033 |
/** |
/** |
| 1034 |
Flush \c stream. |
Flush \c stream. |
| 1035 |
|
|