
src/pmc/hash.pmc - Hash PMC

Hash PMC wraps Parrot's _hash to provide a high-level API:
HashIterator to iterate over Hash.By default Hash uses string keys and PMC values.
Methods set_key_type and set_value_type may be used to switch key and values type.
For PMC keys hash value is calculated using VTABLE get_hashvalue function.
void init()Initializes the instance.
void init_int(INTVAL value_type)Initializes the instance with the value_type provided.
void destroy()Free hash structure.
void mark()Marks the hash as live.
PMC *clone()Creates and returns a clone of the hash.
void set_pointer(void *ptr)Use ptr as this PMC's Hash*.
void set_integer(INTVAL type)void set_key_type(INTVAL type)Reset Hash to use different keys.
See enum Hash_key_type for possible values.
NB: this method will destroy all old data!
void *get_pointer()Get a pointer to this PMC's Hash*.
INTVAL get_integer()FLOATVAL get_number()Returns the size of the hash.
STRING *get_string()Returns a string representation of the hash, showing its class name and memory address.
STRING *get_repr()Return a representation of the hash contents.
INTVAL get_integer_keyed_str(STRING *key)INTVAL get_integer_keyed_int(INTVAL key)INTVAL get_integer_keyed(PMC *key)Returns the integer value for the element at *key.
void set_integer_keyed(PMC *key,
INTVAL value)void set_integer_keyed_str(STRING *key,
INTVAL value)FLOATVAL get_number_keyed_str(STRING *key)FLOATVAL get_number_keyed_int(INTVAL key)FLOATVAL get_number_keyed(PMC *key)Returns the floating-point value for the element at *key.
STRING *get_string_keyed_str(STRING *key)STRING *get_string_keyed_int(INTVAL key)STRING *get_string_keyed(PMC *key)Returns the string value for the element at *key.
void set_string_keyed(PMC *key,
STRING *value)void set_string_keyed_str(STRING *key,
STRING *value)PMC *get_pmc_keyed(PMC *key)PMC *get_pmc_keyed_str(STRING *key)PMC *get_pmc_keyed_int(INTVAL key)Returns the PMC value for the element at *key.
void set_number_keyed(PMC *key,
FLOATVAL value)void set_number_keyed_str(STRING *key,
FLOATVAL value)Sets value as the value for *key.
void set_pmc_keyed(PMC *dest_key,
PMC *value)void set_pmc_keyed_str(STRING *key,
PMC *value)Sets *value as the value for *key.
void set_pmc_keyed_int(INTVAL key,
PMC *value)Sets *value as the value for *key.
INTVAL exists_keyed_str(STRING *key)INTVAL exists_keyed(PMC *key)Returns whether a key *key exists in the hash.
INTVAL defined_keyed_str(STRING *key)INTVAL defined_keyed(PMC *key)Returns whether the value for *key is defined.
void delete_keyed_str(STRING *key)void delete_keyed_int(INTVAL key)void delete_keyed(PMC *key)Deletes the element associated with *key.
INTVAL get_bool()Returns true if the hash size is not zero.
INTVAL elements()Returns the number of elements in the hash.
PMC *get_iter()Return a new iterator.
INTVAL is_same(const PMC *other)Returns whether the hash is the same as *other.
INTVAL is_equal(PMC *value)The == operation.
Check if two hashes hold the same keys and values.
void freeze(PMC *info)Used to archive the hash.
void thaw(PMC *info)Used to unarchive the hash.

METHOD set_key_type(INTVAL)Set the type of key in the hash.
METHOD get_key_type()Return type of keys in Hash.
METHOD set_value_type(INTVAL type)Reset Hash to use different value-type for stored items. If there is no previous _hash was set defaults to STRING* keys.
NB: this method will destroy all old data!
METHOD get_value_type()Return type of values in Hash.
METHOD update(Hash *other)Copies all entries from the other hash into the hash, overwriting entries with the same key.

static PMC* get_next_hash(PARROT_INTERP,
const Hash *hash,
const void *key)Get the next hash for multipart keys. Autovivify a hash if it doesn't exist.
static void entry_type_must_be_pmc(PARROT_INTERP)static void cannot_autovivify_nested(PARROT_INTERP)Throw the appropriate exception.

docs/pdds/pdd08_keys.pod.