summaryrefslogtreecommitdiff
path: root/Master/tlpkg/tlperl/lib/Win32/Exe/ResourceEntry.pm
diff options
context:
space:
mode:
Diffstat (limited to 'Master/tlpkg/tlperl/lib/Win32/Exe/ResourceEntry.pm')
-rwxr-xr-xMaster/tlpkg/tlperl/lib/Win32/Exe/ResourceEntry.pm69
1 files changed, 69 insertions, 0 deletions
diff --git a/Master/tlpkg/tlperl/lib/Win32/Exe/ResourceEntry.pm b/Master/tlpkg/tlperl/lib/Win32/Exe/ResourceEntry.pm
new file mode 100755
index 00000000000..a44a65daf3d
--- /dev/null
+++ b/Master/tlpkg/tlperl/lib/Win32/Exe/ResourceEntry.pm
@@ -0,0 +1,69 @@
+# $File: //local/member/autrijus/Win32-Exe/lib/Win32/Exe/ResourceEntry.pm $ $Author: autrijus $
+# $Revision: #7 $ $Change: 1130 $ $Date: 2004-02-17T15:40:29.640821Z $
+
+package Win32::Exe::ResourceEntry;
+
+use strict;
+use base 'Win32::Exe::Base';
+use constant FORMAT => (
+ Data => 'V',
+ E_RVA => 'V',
+);
+use constant HIGH_BIT => 0x80_00_00_00;
+use Win32::Exe::ResourceData;
+
+sub high_bit {
+ my ($self) = @_;
+ return +HIGH_BIT;
+}
+
+sub path {
+ my ($self) = @_;
+ return $self->parent->path;
+}
+
+sub PathName {
+ my ($self) = @_;
+ return join('/', '', $self->path, $self->Name);
+}
+
+sub VirtualAddress {
+ my ($self) = @_;
+ $self->E_RVA & ~($self->high_bit);
+}
+
+sub SetVirtualAddress {
+ my ($self, $data) = @_;
+ $self->SetE_RVA($data | $self->IsDirectory);
+}
+
+sub IsDirectory {
+ my ($self) = @_;
+ $self->E_RVA & ($self->high_bit);
+}
+
+sub initialize {
+ my ($self) = @_;
+ my $section = $self->first_parent('Resources');
+ my $data = $section->substr($self->VirtualAddress, 12);
+ my $res_data = Win32::Exe::ResourceData->new(\$data, { parent => $self });
+ $res_data->initialize;
+ $self->{res_data} = $res_data;
+}
+
+sub Data {
+ my ($self) = @_;
+ return $self->{res_data}->Data;
+}
+
+sub CodePage {
+ my ($self) = @_;
+ return $self->{res_data}->CodePage;
+}
+
+sub object {
+ my ($self) = @_;
+ return $self->{res_data}->object;
+}
+
+1;