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

metze at samba.org metze at samba.org
Wed Jan 5 16:31:05 GMT 2005


Author: metze
Date: 2005-01-05 16:31:05 +0000 (Wed, 05 Jan 2005)
New Revision: 4540

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

Log:
sync enum and bitmap code

metze

Modified:
   branches/SAMBA_4_0/source/build/pidl/header.pm
   branches/SAMBA_4_0/source/build/pidl/parser.pm
   branches/SAMBA_4_0/source/build/pidl/util.pm


Changeset:
Modified: branches/SAMBA_4_0/source/build/pidl/header.pm
===================================================================
--- branches/SAMBA_4_0/source/build/pidl/header.pm	2005-01-05 16:20:35 UTC (rev 4539)
+++ branches/SAMBA_4_0/source/build/pidl/header.pm	2005-01-05 16:31:05 UTC (rev 4540)
@@ -98,7 +98,7 @@
     my($enum) = shift;
     my($name) = shift;
 
-    util::register_enum($name);
+    util::register_enum($enum, $name);
 
     $res .= "\nenum $name {\n";
     $tab_depth++;

Modified: branches/SAMBA_4_0/source/build/pidl/parser.pm
===================================================================
--- branches/SAMBA_4_0/source/build/pidl/parser.pm	2005-01-05 16:20:35 UTC (rev 4539)
+++ branches/SAMBA_4_0/source/build/pidl/parser.pm	2005-01-05 16:31:05 UTC (rev 4540)
@@ -469,17 +469,14 @@
 	    !util::has_property($utype, "nodiscriminant")) {
 		my $e2 = find_sibling($e, $switch);
 		my $type_decl = $e2->{TYPE};
-		my $type_fn = $e2->{TYPE};
 		pidl "\tif (($ndr_flags) & NDR_SCALARS) {\n";
 		if (util::is_enum($e2->{TYPE})) {
 			$type_decl = util::enum_type_decl($e2);
-			$type_fn = util::enum_type_fn($e2);
 		} elsif (util::is_bitmap($e2->{TYPE})) {
 			$type_decl = util::bitmap_type_decl($e2);
-			$type_fn = util::bitmap_type_fn($e2);
 		}
 		pidl "\t\t$type_decl _level;\n";
-		pidl "\t\tNDR_CHECK(ndr_pull_$type_fn(ndr, &_level));\n";
+		pidl "\t\tNDR_CHECK(ndr_pull_$e2->{TYPE}(ndr, &_level));\n";
 		if ($switch_var =~ /r->in/) {
 			pidl "\t\tif (!(ndr->flags & LIBNDR_FLAG_REF_ALLOC) && _level != $switch_var) {\n";
 		} else {
@@ -804,16 +801,11 @@
 sub ParseEnumPush($)
 {
 	my($enum) = shift;
+	my($type_fn) = util::enum_type_fn($enum);
 
 	start_flags($enum);
 
-	if (util::has_property($enum->{PARENT}, "v1_enum")) {
-		pidl "\tNDR_CHECK(ndr_push_uint32(ndr, r));\n";
-	} elsif (util::has_property($enum->{PARENT}, "enum8bit")) {
-		pidl "\tNDR_CHECK(ndr_push_uint8(ndr, r));\n";
-	} else {
-		pidl "\tNDR_CHECK(ndr_push_uint16(ndr, r));\n";
-	}
+	pidl "\tNDR_CHECK(ndr_push_$type_fn(ndr, r));\n";
 
 	end_flags($enum);
 }
@@ -823,19 +815,12 @@
 sub ParseEnumPull($)
 {
 	my($enum) = shift;
+	my($type_fn) = util::enum_type_fn($enum);
 
 	start_flags($enum);
 
-	if (util::has_property($enum->{PARENT}, "v1_enum")) {
-		pidl "\tuint32_t v;\n";
-		pidl "\tNDR_CHECK(ndr_pull_uint32(ndr, &v));\n";
-	} elsif (util::has_property($enum->{PARENT}, "enum8bit")) {
-		pidl "\tuint8_t v;\n";
-		pidl "\tNDR_CHECK(ndr_pull_uint8(ndr, &v));\n";
-	} else {
-		pidl "\tuint16_t v;\n";
-		pidl "\tNDR_CHECK(ndr_pull_uint16(ndr, &v));\n";
-	}
+	pidl "\t$type_fn v;\n";
+	pidl "\tNDR_CHECK(ndr_pull_$type_fn(ndr, &v));\n";
 	pidl "\t*r = v;\n";
 
 	end_flags($enum);
@@ -873,7 +858,6 @@
 sub ParseBitmapPush($)
 {
 	my($bitmap) = shift;
-	my($type_decl) = util::bitmap_type_decl($bitmap);
 	my($type_fn) = util::bitmap_type_fn($bitmap);
 
 	start_flags($bitmap);
@@ -888,12 +872,11 @@
 sub ParseBitmapPull($)
 {
 	my($bitmap) = shift;
-	my($type_decl) = util::bitmap_type_decl($bitmap);
 	my($type_fn) = util::bitmap_type_fn($bitmap);
 
 	start_flags($bitmap);
 
-	pidl "\t$type_decl v;\n";
+	pidl "\t$type_fn v;\n";
 	pidl "\tNDR_CHECK(ndr_pull_$type_fn(ndr, &v));\n";
 	pidl "\t*r = v;\n";
 

Modified: branches/SAMBA_4_0/source/build/pidl/util.pm
===================================================================
--- branches/SAMBA_4_0/source/build/pidl/util.pm	2005-01-05 16:20:35 UTC (rev 4539)
+++ branches/SAMBA_4_0/source/build/pidl/util.pm	2005-01-05 16:31:05 UTC (rev 4540)
@@ -202,10 +202,11 @@
 
 my %enum_list;
 
-sub register_enum($)
+sub register_enum($$)
 {
+	my $enum = shift;
 	my $name = shift;
-	$enum_list{$name} = 1;
+	$enum_list{$name} = $enum;
 }
 
 sub is_enum($)
@@ -214,16 +215,27 @@
 	return defined $enum_list{$name}
 }
 
+sub get_enum($)
+{
+	my $name = shift;
+	return $enum_list{$name};
+}
+
 sub enum_type_decl($)
 {
-	my $e = shift;
-	return "enum $e->{TYPE}";
+	my $enum = shift;
+	return "enum $enum->{TYPE}";
 }
 
 sub enum_type_fn($)
 {
-	my $e = shift;
-	return "$e->{TYPE}";
+	my $enum = shift;
+	if (util::has_property($enum->{PARENT}, "enum8bit")) {
+		return "uint8";
+	} elsif (util::has_property($enum->{PARENT}, "v1_enum")) {
+		return "uint32";
+	}
+	return "uint16";
 }
 
 my %bitmap_list;



More information about the samba-cvs mailing list