NAME
src/pmc/stringhandle.pmc - StringHandle PMC
DESCRIPTION
The StringHandle PMC performs I/O operations, but on an internal string rather than an external file. Commonly used as a mock FileHandle for testing.
Internal Functions
static int encoding_is_utf8(PARROT_INTERP, const STRING *s)
Helper function for internal usage.
Return 1 if the string argument is not null and has utf8 encoding,
0 otherwise.
Vtable Functions
void init()
Initializes a newly created StringHandle object.
PMC *clone()
Create a copy of the stringhandle.
void mark()
Mark active stringhandle data as live.
INTVAL get_bool()
Returns whether the StringHandle has reached the end of the file.
Methods
METHOD open(STRING *filename :optional, STRING *mode :optional)
Opens a string handle with the given mode.
The filename is not used,
but is stored for mocking.
METHOD is_closed()
Check if the StringHandle is open.
- METHOD readall(STRING *name); Read the rest of the contents of the StringHandle into a Parrot string. On a StringHandle object that isn't opened yet, returns an empty string.To ensure readall semantics seek to position 0, which needs to be done in this case by checking
METHOD flush()
Clear the StringHandle by resetting it to a null value.
METHOD print([INTVAL|FLOATVAL|STRING *|PMC*] value)
Print the passed in integer,
number,
string,
or PMC to the stringhandle.
(Integers,
numbers,
and strings are auto-boxed as PMCs.)
METHOD puts(STRING *value)
Print the string to the stringhandle.
METHOD buffer_type(STRING *new_type :optional)
Set or retrieve the buffering attribute for the stringhandle.
This attribute is ignored,
but stored for mocking.
METHOD buffer_size(INTVAL new_size :optional)
Returns the current size of the stringhandle.
METHOD mode()
Retrieve the read mode string for the stringhandle.
METHOD eof()
Check if the StringHandle is at end-of-file (if it has read to the end of the string data).
METHOD get_fd()
StringHandles do not use integer file descriptors,
so always returns an error value.
METHOD close()
Close the handle.
is_closed()
and reopening the StringHandle.