svn commit: samba r10739 - in
branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3: .
jelmer at samba.org
jelmer at samba.org
Wed Oct 5 19:53:43 GMT 2005
Author: jelmer
Date: 2005-10-05 19:53:41 +0000 (Wed, 05 Oct 2005)
New Revision: 10739
WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=10739
Log:
Reduce number of calls to prs_align_custom()
Modified:
branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/Parser.pm
branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/Types.pm
Changeset:
Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/Parser.pm
===================================================================
--- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/Parser.pm 2005-10-05 19:51:35 UTC (rev 10738)
+++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/Parser.pm 2005-10-05 19:53:41 UTC (rev 10739)
@@ -71,15 +71,8 @@
{
my ($e,$l,$nl,$env,$varname,$what,$align) = @_;
- my @args = ($e,$l,$varname,$what);
+ my @args = ($e,$l,$varname,$what,$align);
- if (defined($e->{ALIGN})) {
- Align($align, $e->{ALIGN});
- } else {
- # Default to 4
- Align($align, 4);
- }
-
# See if we need to add a level argument because we're parsing a union
foreach (@{$e->{LEVELS}}) {
push (@args, ParseExpr("level_$e->{NAME}", $env))
@@ -89,6 +82,13 @@
my $c = DissectType(@args);
return if not $c;
+ if (defined($e->{ALIGN})) {
+ Align($align, $e->{ALIGN});
+ } else {
+ # Default to 4
+ Align($align, 4);
+ }
+
pidl "if (!$c)";
pidl "\treturn False;";
}
@@ -300,13 +300,15 @@
pidl "prs_debug(ps, depth, desc, \"$pfn\");";
pidl "depth++;";
+ my $align = 8;
if ($s->{SURROUNDING_ELEMENT}) {
pidl "if (!prs_uint32(\"size_$s->{SURROUNDING_ELEMENT}->{NAME}\", ps, depth, &" . ParseExpr("size_$s->{SURROUNDING_ELEMENT}->{NAME}", $env) . "))";
pidl "\treturn False;";
pidl "";
+ $align = 4;
+
}
- my $align = 0;
foreach (@{$s->{ELEMENTS}}) {
ParseElement($_, $env, PRIMITIVES, \$align);
pidl "";
@@ -393,7 +395,7 @@
if ($_->{TYPE} ne "EMPTY") {
pidl "depth++;";
my $env = UnionGenerateEnvElement($_);
- my $align = 0;
+ my $align = 8;
ParseElement($_, $env, PRIMITIVES, \$align);
pidl "depth--;";
}
Modified: branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/Types.pm
===================================================================
--- branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/Types.pm 2005-10-05 19:51:35 UTC (rev 10738)
+++ branches/SAMBA_4_0/source/pidl/lib/Parse/Pidl/Samba3/Types.pm 2005-10-05 19:53:41 UTC (rev 10739)
@@ -27,9 +27,9 @@
return "$n = $v;";
}
-sub dissect_scalar($$$)
+sub dissect_scalar($$$$$)
{
- my ($e,$l,$n) = @_;
+ my ($e,$l,$n,$w,$a) = @_;
my $t = lc($e->{TYPE});
@@ -94,12 +94,13 @@
return "init_$t(&$n, $v, $flags);";
}
-sub dissect_string($$$)
+sub dissect_string($$$$$)
{
- my ($e,$l,$n) = @_;
+ my ($e,$l,$n,$w,$a) = @_;
my $t = lc(decl_string($e));
+ $$a = 1;
return "smb_io_$t(\"$e->{NAME}\", &$n, 1, ps, depth)";
}
@@ -162,7 +163,7 @@
DECL => "NTTIME",
INIT => "",
DISSECT_P => sub {
- my ($e,$l,$n) = @_;
+ my ($e,$l,$n,$w,$a) = @_;
return "smb_io_nttime(\"$e->{NAME}\", &n, ps, depth)";
}
},
@@ -171,7 +172,7 @@
DECL => "DOM_SID",
INIT => "",
DISSECT_P => sub {
- my ($e,$l,$n) = @_;
+ my ($e,$l,$n,$w,$a) = @_;
return "smb_io_dom_sid(\"$e->{NAME}\", &n, ps, depth)";
}
},
@@ -180,7 +181,7 @@
DECL => "POLICY_HND",
INIT => "",
DISSECT_P => sub {
- my ($e,$l,$n) = @_;
+ my ($e,$l,$n,$w,$a) = @_;
return "smb_io_pol_hnd(\"$e->{NAME}\", &n, ps, depth)";
}
},
@@ -189,7 +190,7 @@
DECL => "uint64",
INIT => "",
DISSECT_P => sub {
- my ($e,$l,$n) = @_;
+ my ($e,$l,$n,$w,$a) = @_;
return "prs_uint64(\"$e->{NAME}\", ps, depth, &$n)";
}
},
@@ -311,6 +312,7 @@
my $l = shift @_;
my $varname = shift @_;
my $what = shift @_;
+ my $align = shift @_;
my $t = $known_types->{$l->{DATA_TYPE}};
@@ -355,25 +357,25 @@
if ($td->{DATA}->{TYPE} eq "UNION") {
$decl.="_CTR";
$dissect_p = sub {
- my ($e,$l,$n,$w,$s) = @_;
+ my ($e,$l,$n,$w,$a,$s) = @_;
return "$if->{NAME}_io_$td->{NAME}_p(\"$e->{NAME}\", &$n, $s, ps, depth)";
};
$dissect_d = sub {
- my ($e,$l,$n,$w,$s) = @_;
+ my ($e,$l,$n,$w,$a,$s) = @_;
return "$if->{NAME}_io_$td->{NAME}_d(\"$e->{NAME}\", &$n, $s, ps, depth)";
};
} else {
$dissect_p = sub {
- my ($e,$l,$n,$w) = @_;
+ my ($e,$l,$n,$w,$a) = @_;
return "$if->{NAME}_io_$td->{NAME}_p(\"$e->{NAME}\", &$n, ps, depth)";
};
$dissect_d = sub {
- my ($e,$l,$n,$w) = @_;
+ my ($e,$l,$n,$w,$a) = @_;
return "$if->{NAME}_io_$td->{NAME}_d(\"$e->{NAME}\", &$n, ps, depth)";
};
More information about the samba-cvs
mailing list