diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2007-02-28 00:19:57 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 14:48:58 -0500 |
commit | c1aef15fe7e7a7558b6ede11babc1932263814e6 (patch) | |
tree | e0b088f33b3313bedf7aff2060b9d418b313c2e4 /source4/pidl/lib/Parse/Pidl/Typelist.pm | |
parent | d7a7b7fb0c423c461c24e8157ad926d0cee07da1 (diff) | |
download | samba-c1aef15fe7e7a7558b6ede11babc1932263814e6.tar.gz samba-c1aef15fe7e7a7558b6ede11babc1932263814e6.tar.bz2 samba-c1aef15fe7e7a7558b6ede11babc1932263814e6.zip |
r21573: Remove more code that assumed all types are typedefs.
(This used to be commit bbbfbfa870c44a6148c3d4d47ff409098e85fcc3)
Diffstat (limited to 'source4/pidl/lib/Parse/Pidl/Typelist.pm')
-rw-r--r-- | source4/pidl/lib/Parse/Pidl/Typelist.pm | 18 |
1 files changed, 13 insertions, 5 deletions
diff --git a/source4/pidl/lib/Parse/Pidl/Typelist.pm b/source4/pidl/lib/Parse/Pidl/Typelist.pm index b25ab62e03..72c4b18d0b 100644 --- a/source4/pidl/lib/Parse/Pidl/Typelist.pm +++ b/source4/pidl/lib/Parse/Pidl/Typelist.pm @@ -107,8 +107,13 @@ sub getType($) sub typeIs($$) { my ($t,$tt) = @_; - - return 1 if (hasType($t) and getType($t)->{DATA}->{TYPE} eq $tt); + + if (ref($t) eq "HASH") { + return 1 if ($t->{TYPE} eq $tt); + return 0; + } + return 1 if (hasType($t) and getType($t)->{TYPE} eq "TYPEDEF" and + getType($t)->{DATA}->{TYPE} eq $tt); return 0; } @@ -116,6 +121,7 @@ sub hasType($) { my $t = shift; if (ref($t) eq "HASH") { + return 1 if (not defined($t->{NAME})); return 1 if (defined($types{$t->{NAME}}) and $types{$t->{NAME}}->{TYPE} eq $t->{TYPE}); return 0; @@ -128,10 +134,12 @@ sub is_scalar($) { my $type = shift; - return 0 unless(hasType($type)); + return 1 if (ref($type) eq "HASH" and $type->{TYPE} eq "SCALAR"); - if (my $dt = getType($type)->{DATA}->{TYPE}) { - return 1 if ($dt eq "SCALAR" or $dt eq "ENUM" or $dt eq "BITMAP"); + if (my $dt = getType($type)) { + return is_scalar($dt->{DATA}) if ($dt->{TYPE} eq "TYPEDEF"); + return 1 if ($dt->{TYPE} eq "SCALAR" or $dt->{TYPE} eq "ENUM" or + $dt->{TYPE} eq "BITMAP"); } return 0; |