
src/pmc/imageiofreeze.pmc - ImageIOFreeze PMC

Freezes other PMCs.

static opcode_t * GET_VISIT_CURSOR(const PMC *pmc)Get the buffer cursor. Buffer relocations are handled.
static void SET_VISIT_CURSOR(PMC *pmc,
const char *cursor)Set the buffer cursor. Buffer relocations are handled.
static void INC_VISIT_CURSOR(PMC *pmc,
UINTVAL inc)Increment the buffer cursor. Buffer relocations are handled.
static void create_buffer(PARROT_INTERP,
PMC *pmc,
PMC *info)Allocate the image buffer.
static void ensure_buffer_size(PARROT_INTERP,
PMC *io,
size_t len)Checks the size of the buffer to see if it can accommodate len more bytes.
If not,
expands the buffer.
static UINTVAL check_seen(PARROT_INTERP,
PMC *self,
PMC *v)Check the seen hash to prevent duplicate serialization.

void init()Initializes the PMC.
void destroy()Destroys the PMC.
void mark()Marks the PMC as alive.
STRING *get_string()Returns the content of the image as a string.
void *get_pointer()Returns the seen hash.
VTABLE INTVAL get_integer()Returns the flags describing the visit action.
VTABLE void push_integer(INTVAL v)Pushes the integer v onto the end of the image.
VTABLE void push_float(FLOATVAL v)Pushes the float v onto the end of the image.
VTABLE void push_string(STRING *v)Pushes the string *v onto the end of the image.
VTABLE void push_pmc(PMC *v)Pushes a reference to pmc *v onto the end of the image.
If *v hasn't been seen yet,
it is also pushed onto the todo list.
void set_pointer(void *value)Sets the constant table of this ImageIO PMC.