From a42527e51b97737fd7c56872bb80a7a782cdf11e Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Tue, 12 Mar 2013 11:36:38 +0100 Subject: pidl: Add skip option to elements. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This option allows to skip struct elements in pull and push function. This can be used to pass flags to the structure e.g. for string values. Reviewed-by: Günther Deschner --- pidl/lib/Parse/Pidl/NDR.pm | 1 + pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm | 12 ++++++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) (limited to 'pidl') diff --git a/pidl/lib/Parse/Pidl/NDR.pm b/pidl/lib/Parse/Pidl/NDR.pm index ed7fdab94c..682715227f 100644 --- a/pidl/lib/Parse/Pidl/NDR.pm +++ b/pidl/lib/Parse/Pidl/NDR.pm @@ -1073,6 +1073,7 @@ my %property_list = ( "noprint" => ["FUNCTION", "TYPEDEF", "STRUCT", "UNION", "ENUM", "BITMAP", "ELEMENT", "PIPE"], "nopython" => ["FUNCTION", "TYPEDEF", "STRUCT", "UNION", "ENUM", "BITMAP"], "todo" => ["FUNCTION"], + "skip" => ["ELEMENT"], # union "switch_is" => ["ELEMENT"], diff --git a/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm b/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm index 8eb935bf22..5ffb67846b 100644 --- a/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm +++ b/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm @@ -958,7 +958,11 @@ sub ParseDataPull($$$$$$$) $var_name = get_pointer_to($var_name); - $self->pidl("NDR_CHECK(".TypeFunctionName("ndr_pull", $l->{DATA_TYPE})."($ndr, $ndr_flags, $var_name));"); + if (has_property($e, "skip")) { + $self->pidl("/* [skip] '$var_name' */"); + } else { + $self->pidl("NDR_CHECK(".TypeFunctionName("ndr_pull", $l->{DATA_TYPE})."($ndr, $ndr_flags, $var_name));"); + } my $pl = GetPrevLevel($e, $l); @@ -996,7 +1000,11 @@ sub ParseDataPush($$$$$$$) $var_name = get_pointer_to($var_name); } - $self->pidl("NDR_CHECK(".TypeFunctionName("ndr_push", $l->{DATA_TYPE})."($ndr, $ndr_flags, $var_name));"); + if (has_property($e, "skip")) { + $self->pidl("/* [skip] '$var_name' */"); + } else { + $self->pidl("NDR_CHECK(".TypeFunctionName("ndr_push", $l->{DATA_TYPE})."($ndr, $ndr_flags, $var_name));"); + } } else { $self->ParseTypePush($l->{DATA_TYPE}, $ndr, $var_name, $primitives, $deferred); } -- cgit