Rev 11542: Prepare for generating separate primitives/deferred
code. in file:///home/jelmer/bzr.samba/SAMBA_4_0/
Jelmer Vernooij
jelmer at samba.org
Mon Feb 19 23:08:34 GMT 2007
At file:///home/jelmer/bzr.samba/SAMBA_4_0/
------------------------------------------------------------
revno: 11542
revision-id: jelmer at samba.org-20070219230825-to4yp0eswh2gd283
parent: svn-v2:21457 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0
committer: Jelmer Vernooij <jelmer at samba.org>
branch nick: SAMBA_4_0
timestamp: Tue 2007-02-20 00:08:25 +0100
message:
Prepare for generating separate primitives/deferred code.
modified:
source/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm svn-v2:12463 at 0c0555d6-39d7-0310-84fc-f1cc0bd64818-branches%2fSAMBA_4_0-source%2fpidl%2flib%2fParse%2fPidl%2fSamba4%2fNDR%2fParser.pm
=== modified file 'source/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm'
--- a/source/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm 2007-02-19 21:37:54 +0000
+++ b/source/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm 2007-02-19 23:08:25 +0000
@@ -643,9 +643,9 @@
return;
}
} elsif ($l->{TYPE} eq "SWITCH") {
- ParseSwitchPush($e, $l, $ndr, $var_name, $ndr_flags, $env);
+ ParseSwitchPush($e, $l, $ndr, $var_name, $env);
} elsif ($l->{TYPE} eq "DATA") {
- ParseDataPush($e, $l, $ndr, $var_name, $ndr_flags);
+ ParseDataPush($e, $l, $ndr, $var_name, $primitives, $deferred);
}
}
@@ -868,9 +868,9 @@
#####################################################################
# parse scalars in a structure element - pull size
-sub ParseSwitchPull($$$$$$)
+sub ParseSwitchPull($$$$$)
{
- my($e,$l,$ndr,$var_name,$ndr_flags,$env) = @_;
+ my($e,$l,$ndr,$var_name,$env) = @_;
my $switch_var = ParseExprExt($l->{SWITCH_IS}, $env, $e->{ORIGINAL},
check_null_pointer($e, $env, \&pidl, "return NT_STATUS_INVALID_PARAMETER_MIX;"), check_fully_dereferenced($e, $env));
@@ -880,9 +880,9 @@
#####################################################################
# push switch element
-sub ParseSwitchPush($$$$$$)
+sub ParseSwitchPush($$$$$)
{
- my($e,$l,$ndr,$var_name,$ndr_flags,$env) = @_;
+ my($e,$l,$ndr,$var_name,$env) = @_;
my $switch_var = ParseExprExt($l->{SWITCH_IS}, $env, $e->{ORIGINAL},
check_null_pointer($e, $env, \&pidl, "return NT_STATUS_INVALID_PARAMETER_MIX;"), check_fully_dereferenced($e, $env));
@@ -890,12 +890,14 @@
pidl "NDR_CHECK(ndr_push_set_switch_value($ndr, $var_name, $switch_var));";
}
-sub ParseDataPull($$$$$)
+sub ParseDataPull($$$$$$)
{
- my ($e,$l,$ndr,$var_name,$ndr_flags) = @_;
+ my ($e,$l,$ndr,$var_name,$primitives,$deferred) = @_;
if (not ref($l->{DATA_TYPE}) or
defined($l->{DATA_TYPE}->{NAME})) {
+
+ my $ndr_flags = CalcNdrFlags($l, $primitives, $deferred);
my $t;
if (ref($l->{DATA_TYPE}) eq "HASH") {
$t = "$l->{DATA_TYPE}->{TYPE}_$l->{DATA_TYPE}->{NAME}";
@@ -919,13 +921,13 @@
pidl "}";
}
} else {
- ParseTypePull($l->{DATA_TYPE}, $var_name);
+ ParseTypePull($l->{DATA_TYPE}, $var_name, $primitives, $deferred);
}
}
-sub ParseDataPush($$$$$)
+sub ParseDataPush($$$$$$)
{
- my ($e,$l,$ndr,$var_name,$ndr_flags) = @_;
+ my ($e,$l,$ndr,$var_name,$primitives,$deferred) = @_;
if (not ref($l->{DATA_TYPE}) or defined($l->{DATA_TYPE}->{NAME})) {
my $t;
@@ -941,9 +943,10 @@
$var_name = get_pointer_to($var_name);
}
+ my $ndr_flags = CalcNdrFlags($l, $primitives, $deferred);
pidl "NDR_CHECK(ndr_push_$t($ndr, $ndr_flags, $var_name));";
} else {
- ParseTypePush($l->{DATA_TYPE}, $var_name);
+ ParseTypePush($l->{DATA_TYPE}, $var_name, $primitives, $deferred);
}
}
@@ -1069,9 +1072,9 @@
} elsif ($l->{TYPE} eq "POINTER") {
ParsePtrPull($e, $l, $ndr, $var_name);
} elsif ($l->{TYPE} eq "SWITCH") {
- ParseSwitchPull($e, $l, $ndr, $var_name, $ndr_flags, $env);
+ ParseSwitchPull($e, $l, $ndr, $var_name, $env);
} elsif ($l->{TYPE} eq "DATA") {
- ParseDataPull($e, $l, $ndr, $var_name, $ndr_flags);
+ ParseDataPull($e, $l, $ndr, $var_name, $primitives, $deferred);
}
}
@@ -2419,9 +2422,9 @@
}
-sub ParseTypePush($$)
+sub ParseTypePush($$$$)
{
- my ($e, $varname) = @_;
+ my ($e, $varname, $primitives, $deferred) = @_;
# save the old relative_base_offset
pidl "uint32_t _save_relative_base_offset = ndr_push_get_relative_base_offset(ndr);" if defined(has_property($e, "relative_base"));
@@ -2439,16 +2442,16 @@
pidl "{";
indent;
- ParseTypePush($e, $varname);
+ ParseTypePush($e, $varname, 1, 1);
pidl "return NT_STATUS_OK;";
deindent;
pidl "}";
pidl "";;
}
-sub ParseTypePull($$)
+sub ParseTypePull($$$$)
{
- my ($e, $varname) = @_;
+ my ($e, $varname, $primitives, $deferred) = @_;
# save the old relative_base_offset
pidl "uint32_t _save_relative_base_offset = ndr_pull_get_relative_base_offset(ndr);" if defined(has_property($e, "relative_base"));
@@ -2468,7 +2471,7 @@
pidl "{";
indent;
- ParseTypePull($e, $varname);
+ ParseTypePull($e, $varname, 1, 1);
pidl "return NT_STATUS_OK;";
deindent;
pidl "}";
More information about the samba-cvs
mailing list