# -*- perl -*-
# !!! DO NOT EDIT !!!
# This file was automatically generated.
package Net::Amazon::Validate::Type::[%--$MODULE_NAME--%];

use 5.006;
use strict;
use warnings;

[%--
for my $params (sort keys %parameters) {
    $OUT .= "use constant ".uc($params)."_VALID_VALUES => {\n";
    for my $val (sort keys %{$parameters{$params}{value}}) {
        $OUT .= "    '$val' => '$parameters{$params}{value}{$val}',\n";
    }
    $OUT .= "};\n\n";
}
--%]

sub new {
    my ($class , %options) = @_;
    my $self = {
        %options,
    };
    bless $self, $class;
}

sub assert {
    my ($self, $value, $name, $href) = @_;
    die "Unknown type in Net::Amazon::Request constructor: $value" unless defined $href->{$value};
}

sub validate {
    my ($self, $value, $name, $href) = @_;
    if ( ref ($value) eq 'ARRAY' ) {
        $self->assert($_, $name, $href) for (@$value);
    } else {
        $self->assert($value, $name, $href);
    }
}

[%--
 for my $params (sort keys %parameters) {
     $OUT .= "sub ".$params. " {\n";
     $OUT .= '    my ($self, $value) = @_;'."\n";
     $OUT .= '    $self->validate($value, "'.$params.'", ('.uc($params).'_VALID_VALUES));'."\n";
     $OUT .= "}\n\n";
 }
--%]

1;