---@meta --- --- --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-io) --- ---@class iolib --- ---standard input. --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-io.stdin) --- ---@field stdin file* --- ---standard output. --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-io.stdout) --- ---@field stdout file* --- ---standard error. --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-io.stderr) --- ---@field stderr file* io = {} ---@alias openmode ---|>'"r"' # Read mode. ---| '"w"' # Write mode. ---| '"a"' # Append mode. ---| '"r+"' # Update mode, all previous data is preserved. ---| '"w+"' # Update mode, all previous data is erased. ---| '"a+"' # Append update mode, previous data is preserved, writing is only allowed at the end of file. ---| '"rb"' # Read mode. (in binary mode.) ---| '"wb"' # Write mode. (in binary mode.) ---| '"ab"' # Append mode. (in binary mode.) ---| '"r+b"' # Update mode, all previous data is preserved. (in binary mode.) ---| '"w+b"' # Update mode, all previous data is erased. (in binary mode.) ---| '"a+b"' # Append update mode, previous data is preserved, writing is only allowed at the end of file. (in binary mode.) --- ---Close `file` or default output file. --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-io.close) --- ---@param file? file* ---@return boolean? suc ---@return exitcode? exitcode ---@return integer? code function io.close(file) end --- ---Saves any written data to default output file. --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-io.flush) --- function io.flush() end --- ---Sets `file` as the default input file. --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-io.input) --- ---@overload fun():file* ---@param file string|file* function io.input(file) end --- --------- ---```lua ---for c in io.lines(filename, ...) do --- body ---end ---``` --- --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-io.lines) --- ---@param filename string? ---@param ... readmode ---@return fun():any, ... function io.lines(filename, ...) end --- ---Opens a file, in the mode specified in the string `mode`. --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-io.open) --- ---@param filename string ---@param mode? openmode ---@return file*? ---@return string? errmsg ---@nodiscard function io.open(filename, mode) end --- ---Sets `file` as the default output file. --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-io.output) --- ---@overload fun():file* ---@param file string|file* function io.output(file) end ---@alias popenmode ---| '"r"' # Read data from this program by `file`. ---| '"w"' # Write data to this program by `file`. --- ---Starts program prog in a separated process. --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-io.popen) --- ---@param prog string ---@param mode? popenmode ---@return file*? ---@return string? errmsg function io.popen(prog, mode) end --- ---Reads the `file`, according to the given formats, which specify what to read. --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-io.read) --- ---@param ... readmode ---@return any ---@return any ... ---@nodiscard function io.read(...) end --- ---In case of success, returns a handle for a temporary file. --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-io.tmpfile) --- ---@return file* ---@nodiscard function io.tmpfile() end ---@alias filetype ---| '"file"' # Is an open file handle. ---| '"closed file"' # Is a closed file handle. ---| 'nil' # Is not a file handle. --- ---Checks whether `obj` is a valid file handle. --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-io.type) --- ---@param file file* ---@return filetype ---@nodiscard function io.type(file) end --- ---Writes the value of each of its arguments to default output file. --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-io.write) --- ---@return file* ---@return string? errmsg function io.write(...) end --- --- --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-file) --- ---@class file* local file = {} ---@alias readmode integer|string ---| '"*n"' # Reads a numeral and returns it as number. ---| '"*a"' # Reads the whole file. ---|>'"*l"' # Reads the next line skipping the end of line. ---| '"*L"' # Reads the next line keeping the end of line. ---@alias exitcode '"exit"'|'"signal"' --- ---Close `file`. --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-file:close) --- ---@return boolean? suc ---@return exitcode? exitcode ---@return integer? code function file:close() end --- ---Saves any written data to `file`. --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-file:flush) --- function file:flush() end --- --------- ---```lua ---for c in file:lines(...) do --- body ---end ---``` --- --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-file:lines) --- ---@param ... readmode ---@return fun():any, ... function file:lines(...) end --- ---Reads the `file`, according to the given formats, which specify what to read. --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-file:read) --- ---@param ... readmode ---@return any ---@return any ... ---@nodiscard function file:read(...) end ---@alias seekwhence ---| '"set"' # Base is beginning of the file. ---|>'"cur"' # Base is current position. ---| '"end"' # Base is end of file. --- ---Sets and gets the file position, measured from the beginning of the file. --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-file:seek) --- ---@param whence? seekwhence ---@param offset? integer ---@return integer offset ---@return string? errmsg function file:seek(whence, offset) end ---@alias vbuf ---| '"no"' # Output operation appears immediately. ---| '"full"' # Performed only when the buffer is full. ---| '"line"' # Buffered until a newline is output. --- ---Sets the buffering mode for an output file. --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-file:setvbuf) --- ---@param mode vbuf ---@param size? integer function file:setvbuf(mode, size) end --- ---Writes the value of each of its arguments to `file`. --- ---[View documents](http://www.lua.org/manual/5.1/manual.html#pdf-file:write) --- ---@param ... string|number ---@return file*? ---@return string? errmsg function file:write(...) end return io