diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2006-03-24 01:03:02 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:59:08 -0500 |
commit | b6cae24de839756db87a62213795856c0051b8b9 (patch) | |
tree | 2020f5b9f45acf2b0208db86e833e2bd158be576 /source4/pidl/lib/Parse/Pidl/NDR.pm | |
parent | 311d6f47c85282925932b3a7326e66679be9451f (diff) | |
download | samba-b6cae24de839756db87a62213795856c0051b8b9.tar.gz samba-b6cae24de839756db87a62213795856c0051b8b9.tar.bz2 samba-b6cae24de839756db87a62213795856c0051b8b9.zip |
r14687: Start working on support for represent_as() and transmit_as() as
an alternative to subcontext()
(This used to be commit 744402160d5f994f5440553bb726e95a13033a83)
Diffstat (limited to 'source4/pidl/lib/Parse/Pidl/NDR.pm')
-rw-r--r-- | source4/pidl/lib/Parse/Pidl/NDR.pm | 23 |
1 files changed, 20 insertions, 3 deletions
diff --git a/source4/pidl/lib/Parse/Pidl/NDR.pm b/source4/pidl/lib/Parse/Pidl/NDR.pm index a709abba10..1d5059bfb5 100644 --- a/source4/pidl/lib/Parse/Pidl/NDR.pm +++ b/source4/pidl/lib/Parse/Pidl/NDR.pm @@ -2,7 +2,7 @@ # Samba4 NDR info tree generator # Copyright tridge@samba.org 2000-2003 # Copyright tpot@samba.org 2001 -# Copyright jelmer@samba.org 2004-2005 +# Copyright jelmer@samba.org 2004-2006 # released under the GNU GPL =pod @@ -258,6 +258,8 @@ sub GetElementLevelTable($) push (@$order, { TYPE => "DATA", + CONVERT_TO => has_property($e, ""), + CONVERT_FROM => has_property($e, ""), DATA_TYPE => $e->{TYPE}, IS_DEFERRED => $is_deferred, CONTAINS_DEFERRED => can_contain_deferred($e), @@ -319,8 +321,8 @@ sub find_largest_alignment($) $a = 4; } elsif (has_property($e, "subcontext")) { $a = 1; - } elsif (has_property($e, "represent_as")) { - $a = align_type($e->{PROPERTIES}->{represent_as}); + } elsif (has_property($e, "transmit_as")) { + $a = align_type($e->{PROPERTIES}->{transmit_as}); } else { $a = align_type($e->{TYPE}); } @@ -368,6 +370,7 @@ sub ParseElement($) TYPE => $e->{TYPE}, PROPERTIES => $e->{PROPERTIES}, LEVELS => GetElementLevelTable($e), + REPRESENTATION_TYPE => $e->{PROPERTIES}->{represent_as}, ALIGN => align_type($e->{TYPE}), ORIGINAL => $e }; @@ -796,6 +799,7 @@ my %property_list = ( "default" => ["ELEMENT"], "represent_as" => ["ELEMENT"], + "transmit_as" => ["ELEMENT"], # subcontext "subcontext" => ["ELEMENT"], @@ -900,6 +904,19 @@ sub ValidElement($) } } + + if (has_property($e, "subcontext") and has_property($e, "represent_as")) { + fatal($e, el_name($e) . " : subcontext() and represent_as() can not be used on the same element"); + } + + if (has_property($e, "subcontext") and has_property($e, "transmit_as")) { + fatal($e, el_name($e) . " : subcontext() and transmit_as() can not be used on the same element"); + } + + if (has_property($e, "represent_as") and has_property($e, "transmit_as")) { + fatal($e, el_name($e) . " : represent_as() and transmit_as() can not be used on the same element"); + } + if (defined (has_property($e, "subcontext_size")) and not defined(has_property($e, "subcontext"))) { fatal($e, el_name($e) . " : subcontext_size() on non-subcontext element"); } |