moo/kernel/Stdio.moo

74 lines
1.1 KiB
Smalltalk

class Stdio(Object) from 'stdio'
{
var(#class) in, out, err.
method(#primitive) open(name, mode).
method(#primitive) close.
method(#primitive) gets.
method(#primitive,#variadic) puts().
method(#primitive,#variadic) putc().
method(#class) open: name for: mode
{
^(self new) open(name, mode)
}
/* ---------------------
method(#class) stdin
{
self.in isNil ifTrue: [ self.in := ^(super new) open: 0 for: 'r' ].
^self.in.
}
method(#class) stdout
{
self.out isNil ifTrue: [ self.out := ^(super new) open: 1 for: 'w' ].
^self.out.
}
method(#class) stderr
{
self.err isNil ifTrue: [ self.err := ^(super new) open: 2 for: 'w' ].
^self.err.
}
------------------------ */
/*
method format: fmt with: ...
{
}
*/
method(#variadic) format (fmt)
{
| a b c |
'THIS IS FORMAT' dump.
fmt dump.
thisContext temporaryCount dump.
0 priorTo: (thisContext vargCount) do: [:k |
(thisContext vargAt: k) dump.
].
}
}
extend Stdio
{
method xxxx
{
self basicSize dump.
}
}
class Stdio2(Stdio)
{
method(#class) new
{
//self prohibited
//raise exception. prohibited...
^(super new).
}
}