diff options
Diffstat (limited to 'source4/build/pidl/odl.pm')
-rw-r--r-- | source4/build/pidl/odl.pm | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/source4/build/pidl/odl.pm b/source4/build/pidl/odl.pm index 95e81c07ce..5ed508dc93 100644 --- a/source4/build/pidl/odl.pm +++ b/source4/build/pidl/odl.pm @@ -43,12 +43,29 @@ sub ODL2IDL($) foreach my $x (@{$odl}) { # Add [in] ORPCTHIS *this, [out] ORPCTHAT *that + # and replace interfacepointers with MInterfacePointer # for 'object' interfaces if (util::has_property($x, "object")) { foreach my $e (@{$x->{DATA}}) { ($e->{TYPE} eq "FUNCTION") && FunctionAddObjArgs($e); ReplaceInterfacePointers($e); } + # Object interfaces use ORPC + my @depends = (); + if(util::has_property($x, "depends")) { + @depends = split /,/, $x->{PROPERTIES}->{depends}; + } + push @depends, "orpc"; + $x->{PROPERTIES}->{depends} = join(',',@depends); + } + + if ($x->{BASE}) { + my $base = util::get_interface($odl, $x->{BASE}); + + foreach my $fn (reverse @{$base->{DATA}}) { + next unless ($fn->{TYPE} eq "FUNCTION"); + unshift (@{$x->{DATA}}, $fn); + } } } |