svn commit: samba r6143 - in branches/SAMBA_4_0/source/build/pidl: .

jelmer at samba.org jelmer at samba.org
Thu Mar 31 00:37:17 GMT 2005


Author: jelmer
Date: 2005-03-31 00:37:01 +0000 (Thu, 31 Mar 2005)
New Revision: 6143

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=6143

Log:
Put compression support in the subcontext handling functions rather 
then at the element level.

Modified:
   branches/SAMBA_4_0/source/build/pidl/ndr_parser.pm


Changeset:
Modified: branches/SAMBA_4_0/source/build/pidl/ndr_parser.pm
===================================================================
--- branches/SAMBA_4_0/source/build/pidl/ndr_parser.pm	2005-03-31 00:36:23 UTC (rev 6142)
+++ branches/SAMBA_4_0/source/build/pidl/ndr_parser.pm	2005-03-31 00:37:01 UTC (rev 6143)
@@ -560,6 +560,8 @@
 {
 	my $e = shift;
 	my $ndr_flags = shift;
+	my $compression = util::has_property($e, "compression");
+	my $retndr;
 
 	pidl "if (($ndr_flags) & NDR_SCALARS) {";
 	indent;
@@ -570,7 +572,13 @@
 	pidl "_ndr_$e->{NAME}->flags = ndr->flags;";
 	pidl "";
 	
-	return "_ndr_$e->{NAME}";
+	$retndr = "_ndr_$e->{NAME}";
+
+	if (defined $compression) {
+		$retndr = ParseCompressionPushStart($e, $retndr, "NDR_SCALARS");
+	}
+	
+	return $retndr
 }
 
 sub ParseSubcontextPushEnd($)
@@ -578,13 +586,19 @@
 	my $e = shift;
 	my $header_size = util::has_property($e, "subcontext");
 	my $size_is = util::has_property($e, "subcontext_size");
+	my $compression = util::has_property($e, "compression");
+	my $ndr = "_ndr_$e->{NAME}";
 
+	if (defined $compression) {
+		ParseCompressionPushEnd($e, $ndr);
+	}
+
 	if (not defined($size_is)) {
 		$size_is = "-1";
 	}
 
-	pidl "NDR_CHECK(ndr_push_subcontext_header(ndr, $header_size, $size_is, _ndr_$e->{NAME}));";
-	pidl "NDR_CHECK(ndr_push_bytes(ndr, _ndr_$e->{NAME}->data, _ndr_$e->{NAME}->offset));";
+	pidl "NDR_CHECK(ndr_push_subcontext_header(ndr, $header_size, $size_is, $ndr));";
+	pidl "NDR_CHECK(ndr_push_bytes(ndr, $ndr->data, $ndr->offset));";
 	deindent;
 	pidl "}";
 }
@@ -595,6 +609,8 @@
 	my $ndr_flags = shift;	
 	my $header_size = util::has_property($e, "subcontext");
 	my $size_is = util::has_property($e, "subcontext_size");
+	my $retndr = "_ndr_$e->{NAME}";
+	my $compression = util::has_property($e, "compression");
 
 	if (not defined($size_is)) {
 		$size_is = "-1";
@@ -602,10 +618,15 @@
 
 	pidl "if (($ndr_flags) & NDR_SCALARS) {";
 	indent;
-	pidl "struct ndr_pull *_ndr_$e->{NAME};";
-	pidl "NDR_ALLOC(ndr, _ndr_$e->{NAME});";
-	pidl "NDR_CHECK(ndr_pull_subcontext_header(ndr, $header_size, $size_is, _ndr_$e->{NAME}));"; 
-	return "_ndr_$e->{NAME}";
+	pidl "struct ndr_pull *$retndr;";
+	pidl "NDR_ALLOC(ndr, $retndr);";
+	pidl "NDR_CHECK(ndr_pull_subcontext_header(ndr, $header_size, $size_is, $retndr));"; 
+
+	if (defined $compression) {
+		$retndr = ParseCompressionPullStart($e, $retndr, $ndr_flags);
+	}
+	
+	return $retndr;
 }
 
 sub ParseSubcontextPullEnd($)
@@ -613,14 +634,20 @@
 	my $e = shift;
 	my $header_size = util::has_property($e, "subcontext");
 	my $size_is = util::has_property($e, "subcontext_size");
+	my $subndr = "_ndr_$e->{NAME}";
+	my $compression = util::has_property($e, "compression");
 
+	if (defined $compression) {
+		ParseCompressionPullEnd($e, $subndr);
+	}
+
 	my $advance;
 	if (defined ($size_is)) {
 		$advance = "$size_is";	
 	} elsif ($header_size) {
-		$advance = "_ndr_$e->{NAME}->data_size";
+		$advance = "$subndr->data_size";
 	} else {
-		$advance = "_ndr_$e->{NAME}->offset";
+		$advance = "$subndr->offset";
 	}
 	pidl "NDR_CHECK(ndr_pull_advance(ndr, $advance));";
 	deindent;
@@ -637,10 +664,8 @@
 	my $cprefix = c_push_prefix($e);
 	my $ptr_prefix = c_ptr_prefix($e);
 	my $sub_size = util::has_property($e, "subcontext");
-	my $compression = util::has_property($e, "compression");
 	my $ndr = "ndr";
 	my $subndr = undef;
-	my $comndr = undef;
 
 	start_flags($e);
 
@@ -651,10 +676,6 @@
 	if (defined $sub_size and $e->{POINTERS} == 0) {
 		$subndr = ParseSubcontextPushStart($e, "NDR_SCALARS");
 		$ndr = $subndr;
-		if (defined $compression) {
-			$comndr = ParseCompressionPushStart($e, $subndr, "NDR_SCALARS");
-			$ndr = $comndr;
-		}
 	}
 
 	if (Ndr::need_wire_pointer($e)) {
@@ -672,9 +693,6 @@
 	}
 
 	if (defined $sub_size and $e->{POINTERS} == 0) {
-		if (defined $compression) {
-			ParseCompressionPushEnd($e, $subndr);
-		}
 		ParseSubcontextPushEnd($e);
 	}
 
@@ -795,10 +813,8 @@
 	my $cprefix = c_pull_prefix($e);
 	my $ptr_prefix = c_ptr_prefix($e);
 	my $sub_size = util::has_property($e, "subcontext");
-	my $compression = util::has_property($e, "compression");
 	my $ndr = "ndr";
 	my $subndr = undef;
-	my $comndr = undef;
 
 	start_flags($e);
 
@@ -806,10 +822,6 @@
 		$subndr = ParseSubcontextPullStart($e, $ndr_flags);
 		$ndr = $subndr;
 		$ndr_flags = "NDR_SCALARS|NDR_BUFFERS";
-		if (defined $compression) {
-			$comndr = ParseCompressionPullStart($e, $subndr, $ndr_flags);
-			$ndr = $comndr;
-		}
 	}
 
 	if (Ndr::is_inline_array($e)) {
@@ -833,9 +845,6 @@
 	}
 
 	if (defined $sub_size && $e->{POINTERS} == 0) {
-		if (defined $compression) {
-			ParseCompressionPullEnd($e, $subndr);
-		}
 		ParseSubcontextPullEnd($e);
 	}
 
@@ -874,10 +883,8 @@
 	my($var_prefix) = shift;
 	my $cprefix = c_push_prefix($e);
 	my $sub_size = util::has_property($e, "subcontext");
-	my $compression = util::has_property($e, "compression");
 	my $ndr = "ndr";
 	my $subndr = undef;
-	my $comndr = undef;
 
 	return unless (need_buffers_section($e));
 
@@ -907,10 +914,6 @@
 		$subndr = ParseSubcontextPushStart($e, $ndr_flags);
 		$ndr = $subndr;
 		$ndr_flags = "NDR_SCALARS|NDR_BUFFERS";
-		if (defined $compression) {
-			$comndr = ParseCompressionPushStart($e, $subndr, $ndr_flags);
-			$ndr = $comndr;
-		}
 	}
 
 	if (util::array_size($e)) {
@@ -924,9 +927,6 @@
 	}
 
 	if (defined $sub_size) {
-		if (defined $compression) {
-			ParseCompressionPushEnd($e, $subndr);
-		}
 		ParseSubcontextPushEnd($e);
 	}
 
@@ -946,10 +946,8 @@
 	my($var_prefix) = shift;
 	my $cprefix = c_pull_prefix($e);
 	my $sub_size = util::has_property($e, "subcontext");
-	my $compression = util::has_property($e, "compression");
 	my $ndr = "ndr";
 	my $subndr = undef;
-	my $comndr = undef;
 
 	return unless (need_buffers_section($e));
 
@@ -981,10 +979,6 @@
 		$subndr = ParseSubcontextPullStart($e, $ndr_flags);
 		$ndr = $subndr;
 		$ndr_flags = "NDR_SCALARS|NDR_BUFFERS";
-		if (defined $compression) {
-			$comndr = ParseCompressionPullStart($e, $subndr, $ndr_flags);
-			$ndr = $comndr;
-		}
 	}
 
 	if (util::array_size($e)) {
@@ -998,9 +992,6 @@
 	}
 
 	if (defined $sub_size) {
-		if (defined $compression) {
-			ParseCompressionPullEnd($e, $subndr);
-		}
 		ParseSubcontextPullEnd($e);
 	}
 



More information about the samba-cvs mailing list