master
  1// -*- C++ -*-
  2//===----------------------------------------------------------------------===//
  3//
  4// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
  5// See https://llvm.org/LICENSE.txt for license information.
  6// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
  7//
  8//===----------------------------------------------------------------------===//
  9
 10/*
 11    stdio.h synopsis
 12
 13Macros:
 14
 15    BUFSIZ
 16    EOF
 17    FILENAME_MAX
 18    FOPEN_MAX
 19    L_tmpnam
 20    NULL
 21    SEEK_CUR
 22    SEEK_END
 23    SEEK_SET
 24    TMP_MAX
 25    _IOFBF
 26    _IOLBF
 27    _IONBF
 28    stderr
 29    stdin
 30    stdout
 31
 32Types:
 33
 34FILE
 35fpos_t
 36size_t
 37
 38int remove(const char* filename);
 39int rename(const char* old, const char* new);
 40FILE* tmpfile(void);
 41char* tmpnam(char* s);
 42int fclose(FILE* stream);
 43int fflush(FILE* stream);
 44FILE* fopen(const char* restrict filename, const char* restrict mode);
 45FILE* freopen(const char* restrict filename, const char * restrict mode,
 46              FILE * restrict stream);
 47void setbuf(FILE* restrict stream, char* restrict buf);
 48int setvbuf(FILE* restrict stream, char* restrict buf, int mode, size_t size);
 49int fprintf(FILE* restrict stream, const char* restrict format, ...);
 50int fscanf(FILE* restrict stream, const char * restrict format, ...);
 51int printf(const char* restrict format, ...);
 52int scanf(const char* restrict format, ...);
 53int snprintf(char* restrict s, size_t n, const char* restrict format, ...);    // C99
 54int sprintf(char* restrict s, const char* restrict format, ...);
 55int sscanf(const char* restrict s, const char* restrict format, ...);
 56int vfprintf(FILE* restrict stream, const char* restrict format, va_list arg);
 57int vfscanf(FILE* restrict stream, const char* restrict format, va_list arg);  // C99
 58int vprintf(const char* restrict format, va_list arg);
 59int vscanf(const char* restrict format, va_list arg);                          // C99
 60int vsnprintf(char* restrict s, size_t n, const char* restrict format,         // C99
 61              va_list arg);
 62int vsprintf(char* restrict s, const char* restrict format, va_list arg);
 63int vsscanf(const char* restrict s, const char* restrict format, va_list arg); // C99
 64int fgetc(FILE* stream);
 65char* fgets(char* restrict s, int n, FILE* restrict stream);
 66int fputc(int c, FILE* stream);
 67int fputs(const char* restrict s, FILE* restrict stream);
 68int getc(FILE* stream);
 69int getchar(void);
 70char* gets(char* s);  // removed in C++14
 71int putc(int c, FILE* stream);
 72int putchar(int c);
 73int puts(const char* s);
 74int ungetc(int c, FILE* stream);
 75size_t fread(void* restrict ptr, size_t size, size_t nmemb,
 76             FILE* restrict stream);
 77size_t fwrite(const void* restrict ptr, size_t size, size_t nmemb,
 78              FILE* restrict stream);
 79int fgetpos(FILE* restrict stream, fpos_t* restrict pos);
 80int fseek(FILE* stream, long offset, int whence);
 81int fsetpos(FILE*stream, const fpos_t* pos);
 82long ftell(FILE* stream);
 83void rewind(FILE* stream);
 84void clearerr(FILE* stream);
 85int feof(FILE* stream);
 86int ferror(FILE* stream);
 87void perror(const char* s);
 88*/
 89
 90#if defined(__cplusplus) && __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)
 91#  include <__cxx03/stdio.h>
 92#else
 93#  include <__config>
 94
 95#  if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
 96#    pragma GCC system_header
 97#  endif
 98
 99// The inclusion of the system's <stdio.h> is intentionally done once outside of any include
100// guards because some code expects to be able to include the underlying system header multiple
101// times to get different definitions based on the macros that are set before inclusion.
102#  if __has_include_next(<stdio.h>)
103#    include_next <stdio.h>
104#  endif
105
106#  ifndef _LIBCPP_STDIO_H
107#    define _LIBCPP_STDIO_H
108
109#    ifdef __cplusplus
110
111#      undef getc
112#      undef putc
113#      undef clearerr
114#      undef feof
115#      undef ferror
116#      undef putchar
117#      undef getchar
118
119#    endif // __cplusplus
120#  endif   // _LIBCPP_STDIO_H
121
122#endif // defined(__cplusplus) && __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS)