llvm-mos-sdk
stdio.h
Go to the documentation of this file.
1 // Copyright 2022 LLVM-MOS Project
2 // Licensed under the Apache License, Version 2.0 with LLVM Exceptions.
3 // See https://github.com/llvm-mos/llvm-mos-sdk/blob/main/LICENSE for license
4 // information.
5 
6 #ifndef _STDIO_H_
7 #define _STDIO_H_
8 
9 #include <stdarg.h>
10 #include <stddef.h>
11 #include <stdint.h>
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 // Originally from the Public Domain C Library (PDCLib).
18 
19 struct _FILE;
20 typedef struct _FILE FILE;
21 
22 #define BUFSIZ 256
23 #define EOF (-1)
24 #define FOPEN_MAX 8
25 
26 /* See setvbuf(), third argument */
27 #define _IOFBF (1u<<0)
28 #define _IOLBF (1u<<1)
29 #define _IONBF (1u<<2)
30 
31 typedef uint64_t fpos_t;
32 
33 extern FILE *stdin;
34 extern FILE *stdout;
35 extern FILE *stderr;
36 
37 #define L_tmpnam 6
38 
39 #define SEEK_SET 0
40 #define SEEK_CUR 1
41 #define SEEK_END 2
42 
43 #define TMP_MAX 25
44 
45 // Operations on files
46 int remove(const char *filename);
47 int rename(const char *old, const char *_new);
48 FILE *tmpfile(void);
49 char *tmpnam(char *s);
50 
51 // File access functions
52 
53 int fclose(FILE *stream);
54 FILE *fopen(const char *__restrict__ filename, const char *__restrict__ mode);
55 
56 // Formated input/output functions
57 
58 int fprintf(FILE *__restrict__ stream, const char *__restrict__ format, ...);
59 int fscanf(FILE *__restrict__ stream, const char *__restrict__ format, ...);
60 int printf(const char *__restrict__ format, ...);
61 int scanf(const char *__restrict__ format, ...);
62 int snprintf(char *__restrict__ s, size_t n, const char *__restrict__ format,
63  ...);
64 int sprintf(char *__restrict__ s, const char *__restrict__ format, ...);
65 int sscanf(const char *__restrict__ s, const char *__restrict__ format, ...);
66 int vfprintf(FILE *__restrict__ stream, const char *__restrict__ format,
67  va_list arg);
68 int vfscanf(FILE *__restrict__ stream, const char *__restrict__ format,
69  va_list arg);
70 int vprintf(const char *__restrict__ format, va_list arg);
71 int vscanf(const char *__restrict__ format, va_list arg);
72 int vsnprintf(char *__restrict__ s, size_t n, const char *__restrict__ format,
73  va_list arg);
74 int vsprintf(char *__restrict__ s, const char *__restrict__ format,
75  va_list arg);
76 int vsscanf(const char *__restrict__ s, const char *__restrict__ format,
77  va_list arg);
78 
79 // Character input/output functions
80 
81 int fgetc(FILE *stream);
82 char *fgets(char *__restrict__ s, int n, FILE *__restrict__ stream);
83 int fputc(int c, FILE *stream);
84 int fputs(const char *__restrict__ s, FILE *__restrict__ stream);
85 int getc(FILE *stream);
86 int getchar(void);
87 int putchar(int c);
88 int puts(const char *s);
89 int ungetc(int c, FILE *stream);
90 
91 // Direct input/output functions
92 
93 size_t fread(void *__restrict ptr, size_t size, size_t nmemb,
94  FILE *__restrict__ stream);
95 
96 size_t fwrite(const void *__restrict ptr, size_t size, size_t nmemb,
97  FILE *__restrict__ stream);
98 
99 // File positioning functions
100 
101 int fgetpos(FILE *__restrict__ stream, fpos_t *__restrict__ pos);
102 int fseek(FILE *stream, long int offset, int whence);
103 int fsetpos(FILE *stream, const fpos_t *pos);
104 long int ftell(FILE *stream);
105 void rewind(FILE *stream);
106 
107 // Error-handling functions
108 
109 void clearerr(FILE *stream);
110 int feof(FILE *stream);
111 int ferror(FILE *stream);
112 void perror(const char *s);
113 
114 // Platform-specific backend
115 
116 // Write a sequence of characters in the target's character set that
117 // correspond to the given ASCII character.
118 __attribute__((always_inline)) void __from_ascii(char c, void (*write)(char c));
119 
120 // Read a sequence of characters in the target's character set and return the
121 // corrsponding ASCII character.
122 __attribute__((always_inline)) int __to_ascii(int (*read)(void));
123 
124 // Put a character in the target's character set out to the target's
125 // equivalent of file descriptor 1 (stdout).
126 void __putchar(char c);
127 
128 // Get a character in the target's character set from to the target's
129 // equivalent of file descriptor 0 (stdin).
130 int __getchar(void);
131 
132 #ifdef __cplusplus
133 }
134 #endif
135 
136 #endif // not _STDIO_H_
putchar
int putchar(int c)
fputs
int fputs(const char *__restrict__ s, FILE *__restrict__ stream)
fwrite
size_t fwrite(const void *__restrict ptr, size_t size, size_t nmemb, FILE *__restrict__ stream)
perror
void perror(const char *s)
fread
size_t fread(void *__restrict ptr, size_t size, size_t nmemb, FILE *__restrict__ stream)
vsscanf
int vsscanf(const char *__restrict__ s, const char *__restrict__ format, va_list arg)
clearerr
void clearerr(FILE *stream)
stderr
FILE * stderr
stdin
FILE * stdin
vfscanf
int vfscanf(FILE *__restrict__ stream, const char *__restrict__ format, va_list arg)
printf
int printf(const char *__restrict__ format,...)
fpos_t
uint64_t fpos_t
Definition: stdio.h:31
fopen
FILE * fopen(const char *__restrict__ filename, const char *__restrict__ mode)
vsnprintf
int vsnprintf(char *__restrict__ s, size_t n, const char *__restrict__ format, va_list arg)
tmpnam
char * tmpnam(char *s)
puts
int puts(const char *s)
vprintf
int vprintf(const char *__restrict__ format, va_list arg)
fprintf
int fprintf(FILE *__restrict__ stream, const char *__restrict__ format,...)
vfprintf
int vfprintf(FILE *__restrict__ stream, const char *__restrict__ format, va_list arg)
fgetc
int fgetc(FILE *stream)
scanf
int scanf(const char *__restrict__ format,...)
fgets
char * fgets(char *__restrict__ s, int n, FILE *__restrict__ stream)
vscanf
int vscanf(const char *__restrict__ format, va_list arg)
snprintf
int snprintf(char *__restrict__ s, size_t n, const char *__restrict__ format,...)
FILE
struct _FILE FILE
Definition: stdio.h:20
read
int read(int fildes, void *buf, unsigned count)
fsetpos
int fsetpos(FILE *stream, const fpos_t *pos)
stdout
FILE * stdout
getc
int getc(FILE *stream)
size
unsigned size
Definition: neslib.h:185
tmpfile
FILE * tmpfile(void)
ferror
int ferror(FILE *stream)
rewind
void rewind(FILE *stream)
remove
int remove(const char *filename)
getchar
int getchar(void)
fgetpos
int fgetpos(FILE *__restrict__ stream, fpos_t *__restrict__ pos)
fscanf
int fscanf(FILE *__restrict__ stream, const char *__restrict__ format,...)
fputc
int fputc(int c, FILE *stream)
fclose
int fclose(FILE *stream)
ftell
long int ftell(FILE *stream)
ungetc
int ungetc(int c, FILE *stream)
std::uint64_t
::uint64_t uint64_t
Definition: cstdint:24
write
void(* write)(char c))
Definition: stdio.h:118
vsprintf
int vsprintf(char *__restrict__ s, const char *__restrict__ format, va_list arg)
fseek
int fseek(FILE *stream, long int offset, int whence)
sprintf
int sprintf(char *__restrict__ s, const char *__restrict__ format,...)
mode
const void uint16_t uint8_t mode
Definition: memory.h:58
sscanf
int sscanf(const char *__restrict__ s, const char *__restrict__ format,...)
c
byte byte c
Definition: api.h:59
rename
int rename(const char *old, const char *_new)
feof
int feof(FILE *stream)