src/pmc/parrotio.pmc - Parrot IO
These are the vtable functions for Parrot IO.
METHOD say(STRING *s) 
- Print the string with an appended newline to SELF or to stdout if used as a class method.
 
METHOD open(STRING *file, STRING *mode, STRING *layer) 
- Opens the file with the given mode,
using the given IO layer.
 
METHOD isatty() 
METHOD set_readline_interactive(INTVAL) 
- Sets readline interactive mode to the given value,
if PARROT_HAS_READLINE is defined,
that is,
if the readline library is available.
The return values are:
 
- -1
 
readline isn't configured
- -2
 
The file is not open/not input or not a tty,
if turning on interactive.
- 0 / 1
 
old interactive setting
METHOD readline(STRING *prompt) 
- Reads a line from the given PIO.
If readline is interactive and a prompt is not empty,
it will be displayed.
The interactive feature is not available with the 
readline opcode (which will be removed anyway).
Interactive mode adds non-empty lines to the readline history. 
- Returns the line without the newline in a String PMC.
If ^D/eof occurred,
this will return a Null PMC.
 
- SYNOPSIS
 
      pio = getstdin
      $I0 = pio.'set_readline_interactive'(1)
      if $I0 >= 0 goto loop
      printerr "set_readline_interactive failed: "
      ...
  loop:
      $P1 = pio.'readline'('hello polly> ')
      if null $P1  goto ex
      ..
      goto loop
  ex:
- METHOD slurp(STRING *name);
 
- Slurp an (existing, disc) file named name into a STRING result.
 
- Please note that this method isn't catching any failures yet.
 
- Usage as class method:
 
  .local pmc cl
  cl = get_class 'ParrotIO'
  $S0 = cl.'slurp'('the_file')
- The file will be opened, read, and closed.
 
- Or with an openend file:
 
  pio = open 'the_file', '<'
  $S0 = pio.'slurp'('')
- This does not close the file.
 
void class_init() 
- Class initialization.
 
METHOD eof() 
- Returns true or false according to the end of file state of the object.
 
METHOD flush() 
- Flushes pending writes.
 
METHOD setbuf(INTVAL) 
- RT#46087 TBD
 
METHOD setlinebuf() 
- RT#46089 TBD
 
void init() 
- Initializes the IO PMC.
 
void destroy() 
- Destroys the IO PMC, flushing and closing as necessary.
 
PMC *clone() 
- Clones the IO PMC.
 
- For now, both PMCs refer to the same 
ParrotIO object. If we have different IO layers, we might copy data and struct_val. 
void assign_pmc(PMC *other) 
- Set SELF to the data in other.
 
INTVAL get_bool() 
- Returns whether at 
EOF or not. 
STRING *get_string_keyed_int(INTVAL n) 
- Returns the name of the nth layer. n >= 0 returns layer names up from the bottom. If n is negative, returns layer names from top down. For non-existent layers, returns an empty string.
 
void push_string(STRING *value) 
- Pushes the layer name 
value onto the PIO's layer stack. 
STRING *pop_string() 
- Pops a layer off the PIO's layer stack and returns its name.