package Anarres::Mud::Driver::Program::Variable; use strict; use vars qw(@ISA); use Exporter; @ISA = qw(Exporter); # Stuff gets put into Export from Compiler.xs # New representation will be [ Type, Flags, Name, Args, Code ] # Args and Code are only relevant for Method objects. sub new { my $class = shift; my $self = ($#_ == 0) ? { %{ (shift) } } : { @_ }; # Avoid some 'undefined value' warnings late. $self->{Flags} = 0 unless exists $self->{Flags}; die "No type when creating $class\n" unless $self->{Type}; return bless $self, $class; } sub name { return $_[0]->{Name}; } sub type { return $_[0]->{Type}; } sub flags { return $_[0]->{Flags}; } sub dump { my $self = shift; return "([" . $self->type->dump(@_) . "] var " . $self->name . ")"; } 1;