-
Notifications
You must be signed in to change notification settings - Fork 63
STDIO Library
Tom Brasington edited this page Jan 6, 2014
·
2 revisions
Higgs has a library to provide common I/O functionality. It is a wrapper around the C I/O functions found in the stdio library.
Importing:
// To use the I/O functions you must first import the stdio module:
var io = require('lib/stdio');
File operations:
// The stdio module provides some common file operations
// Delete a file, returns true if successful or false otherwise
io.remove('test.txt');
// Rename a file, returns true if successful or false otherwise
io.rename('foo.txt', 'bar.txt');
// Get a temporary file, returns a File object on success or throws error on failure
var myfile = io.tmpfile();
// Get a unique name, returns a string containing the name on success or throws error on failure
var name = io.tmpname();
// Open a file, returns a File object on success or throws error on failure
// open foo.txt for reading
var foo = io.fopen("foo.txt", "r");
File objects:
// Some functions like fopen return an instance of File:
var myfile = io.fopen("foo.txt", "w+");
// File objects provide methods for reading, writing, etc
// Get a character, will return "" for EOF
var c = myfile.getc();
// Read a line, including newline
var line = myfile.readLine();
// You can also specify a maximum length to read
// the next read will get the remainder of the line (if any)
var first_ten_chars = myfile.readLine(10);
var remainder = myfile.readLine();
// Read the next x chars
var ten_chars = myfile.read(10);
// Read the entire file
var test = myfile.read();
// There are functions for reading binary data:
var answer = file.readUint8();
var steps = file.readInt8();
var spartans = file.readUint16();
var years = file.readInt16();
var jnumber = file.readUint32();
var population = file.readFloat64();
// Write a char to the file, returns true if successful or false otherwise
myfile.putc("H");
// Write a string to the file, returns true if successful or false otherwise
myfile.write("Hello World.");
// There are functions for writing binary data:
file.writeUint8(42);
file.writeInt8(8);
file.writeUint16(300);
file.writeInt16(100);
file.writeUint32(8675309);
file.writeFloat64(1.536);
// Flush a file, returns true if successful or false otherwise
myfile.flush();
// Returns true if the next character is EOF
myfile.EOF();
// Returns the current position in the file
myfile.tell();
// Rewind to beginning of file
myfile.rewind();
// Seek to 10th character
myfile.seek(10);
// Seek 2 characters ahead
myfile.seek(2, io.SEEK_CUR);
// When finished with a file close() will close it and free some resources
myfile.close();
The stdin/stdout/stderr streams:
// The stdio module provides File objects for stdin/stdout/stderr
// Get a char from stdin
io.stdin.getc();
// Write to stdout
io.stdout.write("Hello!");
// Write to stderr
io.stderr.write("Hello!");
Notes:
- There is currently no support in stdio for wchar functions.
- Functions in the stdio library must be called in the context of the stdio module.
var fopen = io.fopen
will not work.