mapping data; void create(mapping _data) { data = _data; } array _values() { return values(data); } mixed cast(string type) { switch(type) { case "int": return (int)data; case "float": return (float)data; case "string": return (string)data; case "array": return (array)data; case "multiset": return (multiset)data; case "mapping": return (mapping)data; default: throw(({ sprintf("Cannot cast %O to %s.\n", this, type), backtrace() })); } } int _sizeof() { return sizeof(data); } array _indices() { return indices(data); } this_program `+(mixed arg, mixed ... rest) { return this_program(predef::`+(data, arg, @rest)); } this_program ``+(mixed arg, mixed ... rest) { return this_program(predef::`+(arg, @rest, data)); } this_program `-(mixed arg) { return this_program(data-arg); } this_program ``-(mixed arg) { return this_program(arg-data); } this_program `&(mixed ... args) { return this_program(predef::`&(data, @args)); } this_program ``&(mixed ... args) { return this_program(predef::`&(@args, data)); } this_program `|(mixed ... args) { return this_program(predef::`|(data, @args)); } this_program ``|(mixed ... args) { return this_program(predef::`|(@args, data)); } this_program `^(mixed ... args) { return this_program(predef::`^(data, @args)); } this_program ``^(mixed ... args) { return this_program(predef::`^(@args, data)); } int _equal(mixed arg) { return equal(data, arg); } int `<(mixed arg) { return data < arg; } int `>(mixed arg) { return data > arg; } mixed `[](mixed index) { return data[index]; } this_program `[]=(mixed index, mixed value) { data[index] = value; return this; } mixed `->(string index) { return `[](index); } this_program `->=(string index, mixed value) { return `[]=(index, value); } int _is_type(string basic_type) { return basic_type == "mapping"; } string _sprintf(int conversion_type, mapping(string:int)|void params) { return sprintf("%"+(string)({ conversion_type }), data); } mixed _m_delete(mixed index) { return m_delete(data, index); } Iterator _get_iterator() { return get_iterator(data); } mixed _search(mixed needle, mixed|void start) { return search(data, needle, start); }