'Kay, here's the preliminary assembly-level docs for keys, which is how 
we're going to be accessing entries in aggregates.

--------------Snip here---------------
=head2 Key operations

Keys are used to get access to individual elements of an aggregate
variable.  This is done to allow for opaque, packed, and
multidimensional aggregate types.

A key entry may be an integer, string, or PMC. Integers are used for
array lookups, strings for hash lookups, and PMCs for either.

=over 4

=item new_key Sx

Create a new key structure and put a pointer to it in register X.

=item clone_key Sx, ky

Make a copy of the key Y and put a pointer to it in register X. Y may
be either an S register or a constant.

=item size_key Sx, iy

Make the key structure X large enough to hold Y key entries

=item key_size Ix, ky

Put the number of elements in key Y into integer register X.

=item toss_key Sx

Nuke key X. Throws the structure away and invalidates the register.

=item ke_type Ix, ky, iz

Put the type of key Y's entry Z in register X. Current values are 0,
1, and 2 for Integer, String, and PMC, respectively.

=item ke_value tx, ky, iz

Put the value from key Y, entry Z into register X.

=item chop_key Sx

Toss the topmost entry from key X.

=item inc_key Sx, iy

Increment entry Y of key X by one.

=back

                                        Dan

--------------------------------------"it's like this"-------------------
Dan Sugalski                          even samurai
[EMAIL PROTECTED]                         have teddy bears and even
                                      teddy bears get drunk

Reply via email to