-
-
Notifications
You must be signed in to change notification settings - Fork 62
/
stdio.nelua
118 lines (80 loc) · 5.48 KB
/
stdio.nelua
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
--[[
Library that imports symbols from the `<stdio.h>` header according to C11 specifications.
For a complete documentation about the functions,
see [C stdio documentation](https://www.cplusplus.com/reference/cstdio/).
]]
require 'C'
-- Types
global C.FILE: type <cimport,cinclude'<stdio.h>',forwarddecl> = @record{}
global C.fpos_t: type <cimport,cinclude'<stdio.h>',cincomplete> = @record{}
-- Operations on files
function C.remove(filename: cstring): cint <cimport,cinclude'<stdio.h>'> end
function C.rename(old: cstring, new: cstring): cint <cimport,cinclude'<stdio.h>'> end
function C.tmpfile(): *C.FILE <cimport,cinclude'<stdio.h>'> end
function C.tmpnam(s: cstring): cstring <cimport,cinclude'<stdio.h>'> end
-- File access
function C.fclose(stream: *C.FILE): cint <cimport,cinclude'<stdio.h>'> end
function C.fflush(stream: *C.FILE): cint <cimport,cinclude'<stdio.h>'> end
function C.fopen(filename: cstring, modes: cstring): *C.FILE <cimport,cinclude'<stdio.h>'> end
function C.freopen(filename: cstring, modes: cstring, stream: *C.FILE): *C.FILE <cimport,cinclude'<stdio.h>'> end
function C.setbuf(stream: *C.FILE, buf: cstring): void <cimport,cinclude'<stdio.h>'> end
function C.setvbuf(stream: *C.FILE, buf: cstring, modes: cint, n: csize): cint <cimport,cinclude'<stdio.h>'> end
-- Formatted input/output
function C.scanf(format: cstring, ...: cvarargs): cint <cimport,cinclude'<stdio.h>'> end
function C.fscanf(stream: *C.FILE, format: cstring, ...: cvarargs): cint <cimport,cinclude'<stdio.h>'> end
function C.sscanf(s: cstring, format: cstring, ...: cvarargs): cint <cimport,cinclude'<stdio.h>'> end
function C.vscanf(format: cstring, arg: cvalist): cint <cimport,cinclude'<stdio.h>'> end
function C.vfscanf(stream: *C.FILE, format: cstring, arg: cvalist): cint <cimport,cinclude'<stdio.h>'> end
function C.vsscanf(s: cstring, format: cstring, arg: cvalist): cint <cimport,cinclude'<stdio.h>'> end
function C.printf(format: cstring, ...: cvarargs): cint <cimport,cinclude'<stdio.h>'> end
function C.fprintf(stream: *C.FILE, format: cstring, ...: cvarargs): cint <cimport,cinclude'<stdio.h>'> end
function C.sprintf(s: cstring, format: cstring, ...: cvarargs): cint <cimport,cinclude'<stdio.h>'> end
function C.snprintf(s: cstring, maxlen: csize, format: cstring, ...: cvarargs): cint <cimport,cinclude'<stdio.h>'> end
function C.vprintf(format: cstring, arg: cvalist): cint <cimport,cinclude'<stdio.h>'> end
function C.vfprintf(stream: *C.FILE, format: cstring, arg: cvalist): cint <cimport,cinclude'<stdio.h>'> end
function C.vsprintf(s: cstring, format: cstring, arg: cvalist): cint <cimport,cinclude'<stdio.h>'> end
function C.vsnprintf(s: cstring, maxlen: csize, format: cstring, arg: cvalist): cint <cimport,cinclude'<stdio.h>'> end
-- Character input/output
function C.getc(stream: *C.FILE): cint <cimport,cinclude'<stdio.h>'> end
function C.putc(c: cint, stream: *C.FILE): cint <cimport,cinclude'<stdio.h>'> end
function C.getchar(): cint <cimport,cinclude'<stdio.h>'> end
function C.putchar(c: cint): cint <cimport,cinclude'<stdio.h>'> end
function C.fgetc(stream: *C.FILE): cint <cimport,cinclude'<stdio.h>'> end
function C.fputc(c: cint, stream: *C.FILE): cint <cimport,cinclude'<stdio.h>'> end
function C.fgets(s: cstring, n: cint, stream: *C.FILE): cstring <cimport,cinclude'<stdio.h>'> end
function C.fputs(s: cstring, stream: *C.FILE): cint <cimport,cinclude'<stdio.h>'> end
function C.gets(s: cstring): cstring <cimport,cinclude'<stdio.h>',deprecated> end
function C.puts(s: cstring): cint <cimport,cinclude'<stdio.h>'> end
function C.ungetc(c: cint, stream: *C.FILE): cint <cimport,cinclude'<stdio.h>'> end
-- Direct input/output
function C.fread(ptr: pointer, size: csize, n: csize, stream: *C.FILE): csize <cimport,cinclude'<stdio.h>'> end
function C.fwrite(ptr: pointer, size: csize, n: csize, sream: pointer): csize <cimport,cinclude'<stdio.h>'> end
-- File positioning
function C.fgetpos(stream: *C.FILE, pos: *C.fpos_t): cint <cimport,cinclude'<stdio.h>'> end
function C.fsetpos(stream: *C.FILE, pos: *C.fpos_t): cint <cimport,cinclude'<stdio.h>'> end
function C.fseek(stream: *C.FILE, off: clong, whence: cint): cint <cimport,cinclude'<stdio.h>'> end
function C.ftell(stream: *C.FILE): clong <cimport,cinclude'<stdio.h>'> end
function C.rewind(stream: *C.FILE): void <cimport,cinclude'<stdio.h>'> end
-- Error handling
function C.clearerr(stream: *C.FILE): void <cimport,cinclude'<stdio.h>'> end
function C.feof(stream: *C.FILE): cint <cimport,cinclude'<stdio.h>'> end
function C.ferror(stream: *C.FILE): cint <cimport,cinclude'<stdio.h>'> end
function C.perror(s: cstring): void <cimport,cinclude'<stdio.h>'> end
-- Global variables
global C.stdin: *C.FILE <cimport,cinclude'<stdio.h>'>
global C.stdout: *C.FILE <cimport,cinclude'<stdio.h>'>
global C.stderr: *C.FILE <cimport,cinclude'<stdio.h>'>
-- Constants
global C.EOF: cint <const,cimport,cinclude'<stdio.h>'>
global C.BUFSIZ: cint <const,cimport,cinclude'<stdio.h>'>
global C.FOPEN_MAX: cint <const,cimport,cinclude'<stdio.h>'>
global C.FILENAME_MAX: cint <const,cimport,cinclude'<stdio.h>'>
global C._IOFBF: cint <const,cimport,cinclude'<stdio.h>'>
global C._IOLBF: cint <const,cimport,cinclude'<stdio.h>'>
global C._IONBF: cint <const,cimport,cinclude'<stdio.h>'>
global C.SEEK_SET: cint <const,cimport,cinclude'<stdio.h>'>
global C.SEEK_CUR: cint <const,cimport,cinclude'<stdio.h>'>
global C.SEEK_END: cint <const,cimport,cinclude'<stdio.h>'>
global C.TMP_MAX: cint <const,cimport,cinclude'<stdio.h>'>
global C.L_tmpnam: cint <const,cimport,cinclude'<stdio.h>'>
return C