diff options
author | Stefan Metzmacher <metze@samba.org> | 2009-08-05 13:43:49 +0200 |
---|---|---|
committer | Stefan Metzmacher <metze@samba.org> | 2010-09-28 23:06:52 +0200 |
commit | fcee50b9c9ca157c839df5761ca0a2f87fc1ac33 (patch) | |
tree | 243538855f19031e2fe1264781105ed2a2af4b45 /pidl/lib/Parse/Pidl/NDR.pm | |
parent | d4636c47c70d4ef5441a33cc6ef5eb469cf11bff (diff) | |
download | samba-fcee50b9c9ca157c839df5761ca0a2f87fc1ac33.tar.gz samba-fcee50b9c9ca157c839df5761ca0a2f87fc1ac33.tar.bz2 samba-fcee50b9c9ca157c839df5761ca0a2f87fc1ac33.zip |
pidl: add support for pointers in typedefs
metze
Diffstat (limited to 'pidl/lib/Parse/Pidl/NDR.pm')
-rw-r--r-- | pidl/lib/Parse/Pidl/NDR.pm | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/pidl/lib/Parse/Pidl/NDR.pm b/pidl/lib/Parse/Pidl/NDR.pm index d7a129ea85..f079fbc650 100644 --- a/pidl/lib/Parse/Pidl/NDR.pm +++ b/pidl/lib/Parse/Pidl/NDR.pm @@ -610,12 +610,19 @@ sub ParseTypedef($$) { my ($d, $pointer_default) = @_; - if (defined($d->{DATA}->{PROPERTIES}) && !defined($d->{PROPERTIES})) { - $d->{PROPERTIES} = $d->{DATA}->{PROPERTIES}; - } + my $data; + + if (ref($d->{DATA}) eq "HASH") { + if (defined($d->{DATA}->{PROPERTIES}) + and not defined($d->{PROPERTIES})) { + $d->{PROPERTIES} = $d->{DATA}->{PROPERTIES}; + } - my $data = ParseType($d->{DATA}, $pointer_default); - $data->{ALIGN} = align_type($d->{NAME}); + $data = ParseType($d->{DATA}, $pointer_default); + $data->{ALIGN} = align_type($d->{NAME}); + } else { + $data = getType($d->{DATA}); + } return { NAME => $d->{NAME}, @@ -899,13 +906,13 @@ my %property_list = ( "out" => ["ELEMENT"], # pointer - "ref" => ["ELEMENT"], - "ptr" => ["ELEMENT"], - "unique" => ["ELEMENT"], + "ref" => ["ELEMENT", "TYPEDEF"], + "ptr" => ["ELEMENT", "TYPEDEF"], + "unique" => ["ELEMENT", "TYPEDEF"], "ignore" => ["ELEMENT"], - "relative" => ["ELEMENT"], - "relative_short" => ["ELEMENT"], - "null_is_ffffffff" => ["ELEMENT"], + "relative" => ["ELEMENT", "TYPEDEF"], + "relative_short" => ["ELEMENT", "TYPEDEF"], + "null_is_ffffffff" => ["ELEMENT"], "relative_base" => ["TYPEDEF", "STRUCT", "UNION"], "gensize" => ["TYPEDEF", "STRUCT", "UNION"], @@ -1161,12 +1168,14 @@ sub ValidTypedef($) ValidProperties($typedef, "TYPEDEF"); + return unless (ref($data) eq "HASH"); + $data->{PARENT} = $typedef; $data->{FILE} = $typedef->{FILE} unless defined($data->{FILE}); $data->{LINE} = $typedef->{LINE} unless defined($data->{LINE}); - ValidType($data) if (ref($data) eq "HASH"); + ValidType($data); } ##################################################################### |