diff options
author | Jelmer Vernooij <jelmer@samba.org> | 2005-06-18 01:58:36 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 13:18:24 -0500 |
commit | d4d6d0d2e54510690fa3f868ad02625bc24e5b9d (patch) | |
tree | 402ba051d69c73380da567fa30e29ac50bb863cd /source4/build/pidl/eth_parser.pm | |
parent | 777b4b021456f5bd8bbadfe97532efc13286e581 (diff) | |
download | samba-d4d6d0d2e54510690fa3f868ad02625bc24e5b9d.tar.gz samba-d4d6d0d2e54510690fa3f868ad02625bc24e5b9d.tar.bz2 samba-d4d6d0d2e54510690fa3f868ad02625bc24e5b9d.zip |
r7706: Move ParseExpr() to util.
(This used to be commit 72efb695291f0ad3cdc80daa9f979454f6a81c04)
Diffstat (limited to 'source4/build/pidl/eth_parser.pm')
-rw-r--r-- | source4/build/pidl/eth_parser.pm | 47 |
1 files changed, 7 insertions, 40 deletions
diff --git a/source4/build/pidl/eth_parser.pm b/source4/build/pidl/eth_parser.pm index 7dc50fe0f5..ec07addb47 100644 --- a/source4/build/pidl/eth_parser.pm +++ b/source4/build/pidl/eth_parser.pm @@ -278,39 +278,6 @@ sub deindent() $tabs = substr($tabs, 0, -1); } -#################################################################### -# work out the name of a size_is() variable -sub ParseExpr($$) -{ - my($orig_expr) = shift; - my $varlist = shift; - - die("Undefined value in ParseExpr") if not defined($orig_expr); - - my $expr = $orig_expr; - - return $expr if (util::is_constant($expr)); - - my $prefix = ""; - my $postfix = ""; - - if ($expr =~ /\*(.*)/) { - $expr = $1; - $prefix = "*"; - } - - if ($expr =~ /^(.*)([\&\|\/+])(.*)$/) { - $postfix = $2.$3; - $expr = $1; - } - - if (defined($varlist->{$expr})) { - return $prefix.$varlist->{$expr}.$postfix; - } - - return $prefix.$expr.$postfix; -} - ##################################################################### # check that a variable we get from ParseExpr isn't a null pointer sub check_null_pointer($) @@ -431,7 +398,7 @@ sub compression_clen($$$) my $compression = $l->{COMPRESSION}; my ($alg, $clen, $dlen) = split(/ /, $compression); - return ParseExpr($clen, $env); + return util::ParseExpr($clen, $env); } sub compression_dlen($$$) @@ -442,7 +409,7 @@ sub compression_dlen($$$) my $compression = $l->{COMPRESSION}; my ($alg, $clen, $dlen) = split(/ /, $compression); - return ParseExpr($dlen, $env); + return util::ParseExpr($dlen, $env); } sub ParseCompressionStart($$$$) @@ -559,7 +526,7 @@ sub ParseSwitch($$$$$$) my($var_name) = shift; my($ndr_flags) = shift; my $env = shift; - my $switch_var = ParseExpr($l->{SWITCH_IS}, $env); + my $switch_var = util::ParseExpr($l->{SWITCH_IS}, $env); check_null_pointer($switch_var); @@ -683,7 +650,7 @@ sub ParseElementLevel pidl "}"; } } elsif ($l->{TYPE} eq "ARRAY") { - my $length = ParseExpr($l->{LENGTH_IS}, $env); + my $length = util::ParseExpr($l->{LENGTH_IS}, $env); my $counter = "cntr_$e->{NAME}_$l->{LEVEL_INDEX}"; $var_name = $var_name . "[$counter]"; @@ -968,7 +935,7 @@ sub ParseArrayHeader($$$$$) # $var_name contains the name of the first argument here - my $length = ParseExpr($l->{SIZE_IS}, $env); + my $length = util::ParseExpr($l->{SIZE_IS}, $env); my $size = $length; if ($l->{IS_CONFORMANT}) { @@ -998,13 +965,13 @@ sub ParseArrayHeader($$$$$) } if ($l->{IS_CONFORMANT}) { - my $size = ParseExpr($l->{SIZE_IS}, $env); + my $size = util::ParseExpr($l->{SIZE_IS}, $env); check_null_pointer($size); pidl "NDR_CHECK(ndr_check_array_size(ndr, (void*)" . get_pointer_to($var_name) . ", $size));"; } if ($l->{IS_VARYING}) { - my $length = ParseExpr($l->{LENGTH_IS}, $env); + my $length = util::ParseExpr($l->{LENGTH_IS}, $env); check_null_pointer($length); pidl "NDR_CHECK(ndr_check_array_length(ndr, (void*)" . get_pointer_to($var_name) . ", $length));"; } |