The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# This code is a part of ModInfo, and is released under the Perl Artistic 
#  License.
# Copyright 2002 by James Tillman and Todd Cushard. See README and COPYING
# for more information, or see 
#  http://www.perl.com/pub/a/language/misc/Artistic.html.
# $Id: ParamHash.pm,v 1.3 2002/08/17 23:24:17 jtillman Exp $

# MODINFO module Devel::ModInfo::ParamHash
package Devel::ModInfo::ParamHash;

# MODINFO dependency module strict
use strict;
# MODINFO dependency module vars
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK);
# MODINFO dependency module Devel::ModInfo::DataType
use Devel::ModInfo::DataType 'String2DataType';

# MODINFO dependency module Exporter
require Exporter;

# MODINFO parent_class Devel::ModInfo::Parameter
@ISA = qw(Exporter AutoLoader Devel::ModInfo::Parameter);
@EXPORT = qw();
# MODINFO version 0.01
($VERSION) = ' $Revision: 1.3 $ ' =~ /\$Revision:\s+([^\s]+)/;


# Preloaded methods go here.
# MODINFO constructor new
# MODINFO paramhash attribs  Attributes for the new object
# MODINFO paramkey
# MODINFO key keys  ARRAYREF Array of keys for this paramhash
sub new{
	my ($class, %attribs) = @_;
	#Call superclass
	my $self  = $class->SUPER::new(%attribs);

	$self->{keys} = $attribs{keys};
	$self->{data_type} = String2DataType('HASH');

	#Set up local properties	
	return bless $self => $class;
}

# MODINFO function keys
# MODINFO retval ARRAYREF
sub keys{$_[0]->{keys}}

1;

__END__



=head1 Devel::ModInfo::ParamHash

Devel::ModInfo::ParamHash - Defines a hash of parameters expected by a function, 
method, or constructor

=head1 SYNOPSIS

Not meant to be used outside the ModInfo system.
  
=head1 DESCRIPTION

Devel::ModInfo::ParamHash is a collection of key/value pairs that should be passed into 
a method, function, or constructor.  The key/value pairs are defined by instances of the 
Devel::ModInfo::ParamHash::Key class.

The ParamHash describes a common Perl construct in which a Perl hash is used to provide 
parameters to a function.  It often looks like the following:

sub mysub {
	my ($self, %params) = @_;
	#Do stuff
}

The hash named %params will have all the key/value pairs passed into the function.  This 
method emulates what is called "named parameters" in some other languages.  In these 
constructs, the order of the parameters does not matter, as the name of each parameter, 
rather than its position, determines how the value is applied.

=head1 AUTHOR

jtillman@bigfoot.com

tcushard@bigfoot.com

=head1 SEE ALSO

Devel::ModInfo::Tutorial

Devel::ModInfo::ParamHash::Key

perl(1)