[SCM] Samba Shared Repository - branch v4-0-test updated - release-4-0-0alpha2-596-g74bf021

Stefan Metzmacher metze at samba.org
Fri Feb 1 06:07:15 GMT 2008


The branch, v4-0-test has been updated
       via  74bf021aa7016ace02a0238e71573f18016e3722 (commit)
      from  2ac47f5ab670f971f41f99700dbfb3655fd6737f (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v4-0-test


- Log -----------------------------------------------------------------
commit 74bf021aa7016ace02a0238e71573f18016e3722
Author: Stefan Metzmacher <metze at samba.org>
Date:   Fri Feb 1 07:00:50 2008 +0100

    pidl/Samba4::NDR::Parse: move the calculation of NDR_PULL_SET_MEM_CTX() flags into one function
    
    metze

-----------------------------------------------------------------------

Summary of changes:
 source/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm |   70 +++++++++--------------
 1 files changed, 27 insertions(+), 43 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm b/source/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm
index 9350a10..2415b51 100644
--- a/source/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm
+++ b/source/pidl/lib/Parse/Pidl/Samba4/NDR/Parser.pm
@@ -890,15 +890,17 @@ sub CalcNdrFlags($$$)
 	return undef;
 }
 
-sub ParseMemCtxPullStart($$$$)
+sub ParseMemCtxPullFlags($$$$)
 {
-	my ($self, $e, $l, $ptr_name) = @_;
+	my ($self, $e, $l) = @_;
 
-	my $mem_r_ctx = "_mem_save_$e->{NAME}_$l->{LEVEL_INDEX}";
-	my $mem_c_ctx = $ptr_name;
-	my $mem_c_flags = "0";
+	return undef unless ($l->{TYPE} eq "POINTER" or $l->{TYPE} eq "ARRAY");
 
-	return if ($l->{TYPE} eq "ARRAY" and $l->{IS_FIXED});
+	return undef if ($l->{TYPE} eq "ARRAY" and $l->{IS_FIXED});
+	return undef if has_fast_array($e, $l);
+	return undef if is_charset_array($e, $l);
+
+	my $mem_flags = "0";
 
 	if (($l->{TYPE} eq "POINTER") and ($l->{POINTER_TYPE} eq "ref")) {
 		my $nl = GetNextLevel($e, $l);
@@ -906,12 +908,25 @@ sub ParseMemCtxPullStart($$$$)
 		my $next_is_string = (($nl->{TYPE} eq "DATA") and 
 					($nl->{DATA_TYPE} eq "string"));
 		if ($next_is_array or $next_is_string) {
-			return;
+			return undef;
 		} else {
-			$mem_c_flags = "LIBNDR_FLAG_REF_ALLOC";
+			$mem_flags = "LIBNDR_FLAG_REF_ALLOC";
 		}
 	}
 
+	return $mem_flags;
+}
+
+sub ParseMemCtxPullStart($$$$)
+{
+	my ($self, $e, $l, $ptr_name) = @_;
+
+	my $mem_r_ctx = "_mem_save_$e->{NAME}_$l->{LEVEL_INDEX}";
+	my $mem_c_ctx = $ptr_name;
+	my $mem_c_flags = $self->ParseMemCtxPullFlags($e, $l);
+
+	return unless defined($mem_c_flags);
+
 	$self->pidl("$mem_r_ctx = NDR_PULL_GET_MEM_CTX(ndr);");
 	$self->pidl("NDR_PULL_SET_MEM_CTX(ndr, $mem_c_ctx, $mem_c_flags);");
 }
@@ -921,21 +936,9 @@ sub ParseMemCtxPullEnd($$$)
 	my ($self, $e, $l) = @_;
 
 	my $mem_r_ctx = "_mem_save_$e->{NAME}_$l->{LEVEL_INDEX}";
-	my $mem_r_flags = "0";
+	my $mem_r_flags = $self->ParseMemCtxPullFlags($e, $l);
 
-	return if ($l->{TYPE} eq "ARRAY" and $l->{IS_FIXED});
-
-	if (($l->{TYPE} eq "POINTER") and ($l->{POINTER_TYPE} eq "ref")) {
-		my $nl = GetNextLevel($e, $l);
-		my $next_is_array = ($nl->{TYPE} eq "ARRAY");
-		my $next_is_string = (($nl->{TYPE} eq "DATA") and 
-					($nl->{DATA_TYPE} eq "string"));
-		if ($next_is_array or $next_is_string) {
-			return;
-		} else {
-			$mem_r_flags = "LIBNDR_FLAG_REF_ALLOC";
-		}
-	}
+	return unless defined($mem_r_flags);
 
 	$self->pidl("NDR_PULL_SET_MEM_CTX(ndr, $mem_r_ctx, $mem_r_flags);");
 }
@@ -1441,31 +1444,12 @@ sub DeclareArrayVariables($$)
 	}
 }
 
-sub need_decl_mem_ctx($$)
-{
-	my ($e,$l) = @_;
-
-	return 0 if has_fast_array($e,$l);
-	return 0 if is_charset_array($e,$l);
-	return 1 if (($l->{TYPE} eq "ARRAY") and not $l->{IS_FIXED});
-
-	if (($l->{TYPE} eq "POINTER") and ($l->{POINTER_TYPE} eq "ref")) {
-		my $nl = GetNextLevel($e, $l);
-		my $next_is_array = ($nl->{TYPE} eq "ARRAY");
-		my $next_is_string = (($nl->{TYPE} eq "DATA") and 
-					($nl->{DATA_TYPE} eq "string"));
-		return 0 if ($next_is_array or $next_is_string);
-	}
-	return 1 if ($l->{TYPE} eq "POINTER");
-
-	return 0;
-}
-
 sub DeclareMemCtxVariables($$)
 {
 	my ($self,$e) = @_;
 	foreach my $l (@{$e->{LEVELS}}) {
-		if (need_decl_mem_ctx($e, $l)) {
+		my $mem_flags = $self->ParseMemCtxPullFlags($e, $l);
+		if (defined($mem_flags)) {
 			$self->pidl("TALLOC_CTX *_mem_save_$e->{NAME}_$l->{LEVEL_INDEX};");
 		}
 	}


-- 
Samba Shared Repository


More information about the samba-cvs mailing list