};
}
-sub ParseName($)
-{
- my ($e) = @_;
- my $name = $e->{NAME};
-
- return $name if defined($name);
-
- my $parent = $e->{PARENT};
- my $parent_name = undef;
-
- while (not defined($parent_name)) {
- last unless defined($parent);
-
- $parent_name = $parent->{NAME};
- $parent = $parent->{PARENT};
- }
-
- $parent_name = "global" unless defined($parent_name);
- $name = "__pidl_".$e->{TYPE}."_".$parent_name."_".$e->{LINE};
-
- return $name;
-}
-
sub ParseStruct($$$)
{
my ($struct, $pointer_default, $ms_union) = @_;
my @elements = ();
my $surrounding = undef;
- my $name = ParseName($struct);
return {
TYPE => "STRUCT",
- NAME => $name,
+ NAME => $struct->{NAME},
SURROUNDING_ELEMENT => undef,
ELEMENTS => undef,
PROPERTIES => $struct->{PROPERTIES},
$surrounding = $struct->{ELEMENTS}[-1];
}
- my $align = align_type($name);
-
+ my $align = undef;
+ if ($struct->{NAME}) {
+ $align = align_type($struct->{NAME});
+ }
+
return {
TYPE => "STRUCT",
- NAME => $name,
+ NAME => $struct->{NAME},
SURROUNDING_ELEMENT => $surrounding,
ELEMENTS => \@elements,
PROPERTIES => $struct->{PROPERTIES},
my $switch_type = has_property($e, "switch_type");
unless (defined($switch_type)) { $switch_type = "uint32"; }
if (has_property($e, "nodiscriminant")) { $switch_type = undef; }
- my $name = ParseName($e);
return {
TYPE => "UNION",
- NAME => $name,
+ NAME => $e->{NAME},
SWITCH_TYPE => $switch_type,
ELEMENTS => undef,
PROPERTIES => $e->{PROPERTIES},
push @elements, $t;
}
- my $align = align_type($name);
+ my $align = undef;
+ if ($e->{NAME}) {
+ $align = align_type($e->{NAME});
+ }
return {
TYPE => "UNION",
- NAME => $name,
+ NAME => $e->{NAME},
SWITCH_TYPE => $switch_type,
ELEMENTS => \@elements,
PROPERTIES => $e->{PROPERTIES},
sub ParseEnum($$)
{
my ($e, $pointer_default, $ms_union) = @_;
- my $name = ParseName($e);
return {
TYPE => "ENUM",
- NAME => $name,
+ NAME => $e->{NAME},
BASE_TYPE => Parse::Pidl::Typelist::enum_type_fn($e),
ELEMENTS => $e->{ELEMENTS},
PROPERTIES => $e->{PROPERTIES},
sub ParseBitmap($$$)
{
my ($e, $pointer_default, $ms_union) = @_;
- my $name = ParseName($e);
return {
TYPE => "BITMAP",
- NAME => $name,
+ NAME => $e->{NAME},
BASE_TYPE => Parse::Pidl::Typelist::bitmap_type_fn($e),
ELEMENTS => $e->{ELEMENTS},
PROPERTIES => $e->{PROPERTIES},