Add some more header properties as inline comments to the generated samba3 client.
authorGünther Deschner <gd@samba.org>
Tue, 25 Mar 2008 16:38:27 +0000 (17:38 +0100)
committerGünther Deschner <gd@samba.org>
Tue, 25 Mar 2008 16:42:08 +0000 (17:42 +0100)
Guenther

source/pidl/lib/Parse/Pidl/Samba3/ClientNDR.pm

index 86b8951026c92aeaff8cb816ff943a025d8ea738..7a2575b8972203914a2e103da300c33eeffa3886 100644 (file)
@@ -44,6 +44,36 @@ sub new($)
        bless($self, $class);
 }
 
+sub ElementDirection($)
+{
+       my ($e) = @_;
+
+       return "[in,out]" if (has_property($e, "in") and has_property($e, "out"));
+       return "[in]" if (has_property($e, "in"));
+       return "[out]" if (has_property($e, "out"));
+       return "[in,out]";
+}
+
+sub HeaderProperties($$)
+{
+       my($props,$ignores) = @_;
+       my $ret = "";
+
+       foreach my $d (keys %{$props}) {
+               next if (grep(/^$d$/, @$ignores));
+               if($props->{$d} ne "1") {
+                       $ret.= "$d($props->{$d}),";
+               } else {
+                       $ret.="$d,";
+               }
+       }
+
+       if ($ret) {
+               return "[" . substr($ret, 0, -1) . "]";
+       }
+}
+
+
 sub ParseFunction($$$)
 {
        my ($self, $if, $fn) = @_;
@@ -57,7 +87,9 @@ sub ParseFunction($$$)
        $fn_args .= "struct rpc_pipe_client *cli,\n" . $pad . "TALLOC_CTX *mem_ctx";
 
        foreach (@{$fn->{ELEMENTS}}) {
-               $fn_args .= ",\n" . $pad . DeclLong($_);
+               my $dir = ElementDirection($_);
+               my $prop = HeaderProperties($_->{PROPERTIES}, ["in", "out"]);
+               $fn_args .= ",\n" . $pad . DeclLong($_) . " /* $dir $prop */";
        }
 
        if (defined($fn->{RETURN_TYPE}) && ($fn->{RETURN_TYPE} eq "WERROR")) {