/usr/local/CPAN/Biblio-ILL-ISO/Biblio/ILL/ISO/Extension.pm
package Biblio::ILL::ISO::Extension;
use Biblio::ILL::ISO::ILLASNtype;
use Carp;
our $VERSION = '0.01';
#---------------------------------------------------------------------------
# Mods
# 0.01 - 2003.08.11 - original version
#---------------------------------------------------------------------------
BEGIN{@ISA = qw ( Biblio::ILL::ISO::ILLASNtype );} # inherit from ILLASNtype
# From the ASN
#
#Extension ::= SEQUENCE {
# --identifier [0] IMPLICIT INTEGER,
# identifier [0] OBJECT IDENTIFIER,
# critical [1] IMPLICIT BOOLEAN, -- DEFAULT FALSE,
# item [2] ANY DEFINED BY identifier
# --item [2] APDU-Delivery-Info
# }
#
#
#---------------------------------------------------------------
#
#---------------------------------------------------------------
sub new {
my $class = shift;
my $self = {};
if (@_) {
my ($identifier, $critical, $item) = @_;
croak "missing identifier" unless ($identifier);
croak "missing critical" unless ($critical);
croak "missing item" unless ($item);
$self->{"identifier"} = $identifier;
$self->{"critical"} = $critical;
$self->{"item"} = $item;
}
bless($self, ref($class) || $class);
return ($self);
}
#---------------------------------------------------------------
#
#---------------------------------------------------------------
sub set {
my $self = shift;
my ($identifier, $critical, $item) = @_;
croak "missing identifier" unless ($identifier);
croak "missing critical" unless ($critical);
croak "missing item" unless ($item);
$self->{"identifier"} = $identifier;
$self->{"critical"} = $critical;
$self->{"item"} = $item;
return;
}
#---------------------------------------------------------------
#
#---------------------------------------------------------------
sub from_asn {
my $self = shift;
my $href = shift;
foreach my $k (keys %$href) {
#print ref($self) . "...$k\n";
if ($k =~ /^identifier$/) {
$self->{$k} = $href->{$k};
} elsif ($k =~ /^critical$/) {
$self->{$k} = $href->{$k};
} elsif ($k =~ /^item$/) {
croak "need identifier!" unless ($self->{identifier});
$self->{$k} = SelectExtensionType($self->{identifier});
} else {
croak "invalid " . ref($self) . " element: [$k]";
}
}
return $self;
}
#---------------------------------------------------------------
#
#---------------------------------------------------------------
sub SelectExtensionType {
my $id = shift;
print "+----------------------\n";
print "| id: $id\n";
print "+----------------------\n";
# depending on the $id, create the appropriate type
# and return it.
return 1;
}
1;