NAME ^

var.ops - Variable Ops

DESCRIPTION ^

These operations deal with both lexical and global variables, as well as the symbol tables that contain them.

Lexical variable ops ^

Operations to create, modify and delete lexical variables.

new_pad(in INT)

Create a new lexical scope pad with static nesting depth $1 and push it onto the lexical scope stack. Static depths 0 through $1 - 1, inclusive, are copied from the current static nesting.

new_pad(out PMC, in INT)

Create a new lexical scope pad with static nesting depth $2 and store it in $1 (do NOT push on the stack). Static depths 0 through $2 - 1, inclusive, are copied from the current static nesting.

push_pad(in PMC)

Push the scratchpad in $1 onto the lexical scope stack.

pop_pad()

Pop the current lexical scope pad off the stack

pop_pad(out PMC)

Pop the current lexical scope pad off the stack and store it in $1 (XXX JPS: not implemented yet).

peek_pad(out PMC)

Store the current lexical scope pad (i.e. the one at the top of the lexical pad stack) in $1.

store_lex(in STR, in PMC)

Store object $2 as lexical symbol $1. $1 must have already been created at some static depth.

store_lex(in INT, in STR, in PMC)

Store object $3 as lexical $2 at depth $1. If [$1, $2] does not exist, it will be created. If $1 is negative, count out from the current lexical scope; otherwise, count in from the outermost scope. So store_lex -1, .... will operate on the current pad. Lexicals can be restrieved by index too: the index is generated in storage order.

store_lex(in INT, in INT, in PMC)

Store object $3 at lexical position $2 at depth $1. If [$1, $2] does not exist, it will be created. If $1 is negative, count out from the current lexical scope; otherwise, count in from the outermost scope. So store_lex -1, .... will operate on the current pad. Lexicals stored by index can only be retrieved by this index.

find_lex(out PMC, in STR)

Find the lexical variable named $2 (at any depth) and store it in $1.

find_lex(out PMC, in INT, in STR)

Find the lexical variable named $3 at depth $2 and store it in $1. If $2 is negative the, count out from the current lexical scope; otherwise, count up from the outermost scope.

find_lex(out PMC, in INT)

Find the lexical number $2 at the topmost pad.

find_lex(out PMC, in INT, in INT)

Find the lexical variable at position $3 at depth $2 and store it in $1. If $2 is negative the, count out from the current lexical scope; otherwise, count up from the outermost scope.

Global variable ops ^

Operations to modify global variables

store_global(in STR, in PMC)

Store global $2 as global symbol $1

store_global(in STR, in STR, in PMC)

Store global $3 as global symbol $2 in namespace $1

store_global(in PMC, in STR, in PMC)

Store global $3 as global symbol $2 in namespace $1

find_global(out PMC, in STR)

Find the global named $2 and store it in $1. If the global doesn't exist either throws an exception or sets $1 to undef, depending on current errors settings, s. errorson.

find_global(out PMC, in STR, in STR)

Find the global named $3 in namespace $2 and store it in $1. If the global doesn't exist either throws an exception or sets $1 to undef, depending on current errors settings, s. errorson.

find_global(out PMC, in PMC, in STR)

Find the global named $3 in the namespace specified by the key in $2 and store it in $1. If the global doesn't exist either throws an exception or sets $1 to undef, depending on current errors settings, s. errorson.

COPYRIGHT ^

Copyright (C) 2001-2004 The Perl Foundation. All rights reserved.

LICENSE ^

This program is free software. It is subject to the same license as the Parrot interpreter itself.


parrot