rendered paste bodyC.__fopen = C.libc("fopen", C.pointer, [[C.pointer, C.pointer]]);
C.__fputs = C.libc("fputs", C.int, [[ C.pointer, C.pointer ]]);
C.__fread = C.libc("fread", C.pointer, [[ C.pointer, C.pointer, C.pointer, C.pointer ]]);
C.__getline = C.libc("getline", C.pointer, [[ C.pointer, C.pointer, C.pointer ]]);
C.__fclose = C.libc("fclose", C.int, [[C.pointer]]);
C.__printf = C.libc("printf", C.int, [[C.pointer, C.pointer]]);
var Handle = Object : [
write = (x as String) {
Abstract()
}
read = (x as String) {
Abstract()
}
close = () {
Abstract()
}
];
var File = Handle : [
this (file as String, type as String) {
var c_file = C.calloc(file.length() + 1)
var c_type = C.calloc(type.length() + 1)
C.set c_file file
C.set c_type type
this.filepointer = C.__fopen([[c_file, c_type]])
C.free c_file
C.free c_type
}
filepointer = Null as CPointer
write = (x as String) {
var c_x = C.calloc(x.length() + 1)
C.set c_x x
var ret = C.__fputs([[c_x, this.filepointer]]) as NativeInteger
C.free c_x
return ret
};
read = (x as NativeInteger) {
Stdout.write "A\n"
var c_data = C.calloc(x + 1)
Stdout.write "A\n"
var read_length = C.__fread([[ c_data, C.sizeof(C.uchar), x, this.filepointer]]) as NativeInteger
Stdout.write "A\n"
var ret = C.get(c_data, read_length)
Stdout.write "A\n"
C.free c_data
Stdout.write "A\n"
return ret
}
readLine = () {
Abstract()
}
close = () {
var ret = C.__fclose([[this.filepointer]]) as NativeInteger
this.filepointer = Null as CPointer
return ret
}
];
var Stdout = Handle : [
write = (x as String) {
var s = "%s"
var c_s = C.calloc(s.length() + 1)
var c_x = C.calloc(x.length() + 1)
C.set c_s s
C.set c_x x
var ret = C.__printf([[c_s, c_x]]) as NativeInteger
C.free c_s
C.free c_x
return ret
};
];
Stdout.write "Hello, world!\n"
var f = new File("foo", "r")
var s = f.read(2)
Stdout.write (s)
f.close()