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::Hash - data structure that represents a hash table.

COPYRIGHT

Copyright (C) 2001 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: Hash.pm PROJECT: meta

SYNOPSIS

package foo; use Meta::Ds::Hash qw(); my($hash)=Meta::Ds::Hash-new();> $hash-insert("mark","veltzer");> $hash-insert("doro","linus");> $hash-remove("mark");> if($hash-has("mark")) {> Meta::Utils::System::die("error"); }

DESCRIPTION

This is a library to let you create a hash like data structure. "Why should I have such a data strcuture ?" you rightly ask... Perl already supports hashes as built in structures, but these dont have a size method (for one...)... This encapsulates hash as a object and is much better (built over the builtin implementation). This is a value less hash (no values for the inserted ones...), so it effectivly acts as a set.

EXPORTS

new($) insert($$$) remove($$) size($) has($$) check_elem($$) elem($$) get($$) print($$) read($$) write($$)

FUNCTION DOCUMENTATION

new($)

Gives you a new Hash object.

insert($$$)

Inserts an element into the hash. This receives: 0. Hash object. 1. Element to insert. 2. Value to insert. This returns whether the value was actually inserted.

remove($$)

Remove an element from the hash. This receives: 0. Hash object. 1. Element to remove. This returns whether the value was actually removed.

size($)

Return the number of elements in the hash. This receives: 0. Hash object.

has($$)

Returns a boolean value according to whether the specified element is in the hash or not. This receives: 0. Hash object. 1. Element to check for.

check_elem($$)

This method will verify that a certain element is indeed a member of the hash. If it is not - the method will raise an exception.

elem($$)

This returns a specific element in the hash.

get($$)

This returns a certain element from the hash.

print($$)

This will print the hash while running the print routine on each of the sub elemes.

read($$)

This will read a hash from a file assuming that file has an entry for the hash as two string separated by a space on each line until the end of the file.

write($$)

This will write a hash table as in the read method. See that methods documentation for details.

BUGS

None.

AUTHOR

Mark Veltzer <mark2776@yahoo.com>

HISTORY

start of revision info 1 Mon Jan 1 16:38:12 2001 MV initial code brought in 2 Tue Jan 2 06:08:54 2001 MV bring databases on line 3 Wed Jan 3 07:02:01 2001 MV handle architectures better 4 Wed Jan 3 11:26:48 2001 MV get the databases to work 5 Thu Jan 4 13:36:17 2001 MV ok. This is for real 6 Thu Jan 4 18:28:58 2001 MV ok - this time I realy mean it 7 Sat Jan 6 11:39:39 2001 MV make quality checks on perl code 8 Sat Jan 6 17:14:09 2001 MV more perl checks 9 Sun Jan 7 18:17:29 2001 MV make Meta::Utils::Opts object oriented 10 Tue Jan 9 18:15:19 2001 MV check that all uses have qw 11 Tue Jan 9 19:29:31 2001 MV fix todo items look in pod documentation 12 Tue Jan 9 22:40:39 2001 MV add enumerated types to options 13 Wed Jan 10 12:05:55 2001 MV more on tests/more checks to perl 14 Fri Jan 12 15:53:19 2001 MV change new methods to have prototypes 15 Thu Jan 18 15:59:13 2001 MV correct die usage 16 Thu Jan 25 20:55:06 2001 MV finish Simul documentation 17 Sun Jan 28 02:34:56 2001 MV perl code quality 18 Sun Jan 28 13:51:26 2001 MV more perl quality 19 Tue Jan 30 03:03:17 2001 MV more perl quality 20 Sat Feb 3 23:41:08 2001 MV perl documentation 21 Mon Feb 5 03:21:02 2001 MV more perl quality 22 Tue Feb 6 01:04:52 2001 MV perl qulity code 23 Tue Feb 6 07:02:13 2001 MV more perl code quality 24 Tue Feb 6 22:19:51 2001 MV revision change end of revision info

SEE ALSO

Nothing.

TODO

-Add many more routines: 1. add/subtract a hash. 2. get a list from a hash. 3. get a set from a hash. 4. get a hash from a list. 5. get a hash from a set. 6. insert an element and make sure that he wasnt there. 7. remove an element and make sure that he was there.

-add a limitation on the types of objects going into the hash (they must be inheritors from some kind of object).

-make option for hash to be strict (that insert twice will yell).