The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

NAME

Meta::Ds::Map - a 1-1 map object.

COPYRIGHT

Copyright (C) 2001, 2002 Mark Veltzer; All rights reserved.

LICENSE

This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111, USA.

DETAILS

        MANIFEST: Map.pm
        PROJECT: meta
        VERSION: 0.02

SYNOPSIS

        package foo;
        use Meta::Ds::Map qw();
        my($object)=Meta::Ds::Map->new();
        my($result)=$object->method();

DESCRIPTION

This data structure is a 1-1 map. This means that you can for instance, store a social id to driver id mapping (since no two people have the same social id or driver id). Trying to insert a value which already exists (in either of the hashes) will cause an exception.

This class is implemented using a pair of Hash structures. This means that querying in each direction (A to B or B to A) is quite efficient.

Removal is also quite efficient (O(1) on both sides).

Size is implemented as size of one of the hashes (they are always the same size).

FUNCTIONS

        BEGIN()
        new($)
        insert($$$)
        has_a($$)
        has_b($$)
        get_a($$)
        get_b($$)
        remove_a($$)
        remove_b($$)
        remove($$$)
        size($)
        clear($)
        foreach($$)
        TEST($)

FUNCTION DOCUMENTATION

BEGIN()

Bootstrap method for this class which creates the accessors for hash_a and hash_b. This means that you can access the actual hashes using get_hash_a and get_hash_b. Just be careful to do it for read only access becuase toying with these without knowing what you are doing may render this class unusable.

new($)

This is a constructor for the Meta::Ds::Map object.

insert($$$)

This inserts an pair into the map object.

has_a($$)

Returns whether the map has the element in side A.

has_b($$)

Returns whether the map has the element in side B.

get_a($$)

This retrieves the pair of element on side A.

get_b($$)

This retrieves the pair of element on side B.

remove_a($$)

This removes a pair according to element on side A.

remove_b($$)

This removes a pair according to element on side B.

remove($$$)

This method removes a pair from the map.

size($)

This method will give you the size of the map.

clear($)

This method will clear the map. It is quick.

foreach($$)

This method will run a piece of code given to it on every pair of elements in the map. The code should be a subroutine which accepts two arguments. The arguments are a and then b.

TEST($)

This is a testing suite for the Meta::Ds::Map module. This test is should be run by a higher level management system at integration or release time or just as a regular routine to check that all is well.

Currently this test creates the object, does some manipulation and dumps it.

SUPER CLASSES

None.

BUGS

None.

AUTHOR

        Name: Mark Veltzer
        Email: mailto:veltzer@cpan.org
        WWW: http://www.veltzer.org
        CPAN id: VELTZER

HISTORY

        0.00 MV teachers project
        0.01 MV more pdmt stuff
        0.02 MV md5 issues

SEE ALSO

Meta::Class::MethodMaker(3), Meta::Ds::Hash(3), Meta::Error::Simple(3), Meta::Utils::Output(3), strict(3)

TODO

-stop using ordered hashes for this class - it does not make use of them.

-idea: store another hash with all pairs joined by $;. This could be used for fast iteration on all elements.