# $File: //local/member/autrijus/Win32-Exe/lib/Win32/Exe/ResourceEntry/Id.pm $ $Author: autrijus $
# $Revision: #6 $ $Change: 1130 $ $Date: 2004-02-17T15:40:29.640821Z $

package Win32::Exe::ResourceEntry::Id;

use strict;
use base 'Win32::Exe::ResourceEntry';
use constant SUBFORMAT => (
    Id		    => 'V',
);
use constant RESOURCE_TYPES => [qw(
    _		CURSOR		BITMAP		ICON	    MENU
    DIALOG	STRING		FONTDIR		FONT	    ACCELERATOR
    RCDATA	MESSAGETABLE	GROUP_CURSOR	_	    GROUP_ICON
    _		VERSION		DLGINCLUDE	_	    PLUGPLAY
    VXD		ANICURSOR	ANIICON		HTML        MANIFEST
)];
use constant RT_TO_ID => {
    map { ('RT_'.RESOURCE_TYPES->[$_] => $_) }
	(0 .. $#{+RESOURCE_TYPES})
};
use constant ID_TO_RT => { reverse %{+RT_TO_ID} };

sub Name {
    my ($self) = @_;
    my $id = $_[0]->Id;
    $id = $self->id_to_rt($id) if $self->parent->depth < 1;
    return "#$id";
}

sub SetName {
    my ($self, $name) = @_;
    $name =~ s/^#//;
    $self->SetId( $self->rt_to_id($name) );
}

sub id_to_rt {
    my ($self, $id) = @_;
    return(+ID_TO_RT->{$id} || $id);
}

sub rt_to_id {
    my ($self, $rt) = @_;
    return(+RT_TO_ID->{$rt} || $rt);
}

1;
