Start generating code for unions.
authorTim Potter <tpot@samba.org>
Mon, 26 Nov 2001 05:27:32 +0000 (05:27 +0000)
committerTim Potter <tpot@samba.org>
Mon, 26 Nov 2001 05:27:32 +0000 (05:27 +0000)
(This used to be commit ac71046754b3a4bee53dab64ed73c176074482a0)

source4/build/pidl/eparser.pm

index 835173a66f78893a3efe2177f708b24835a0a2b7..672768d4577f9e58a756296b8805de558c237578 100644 (file)
@@ -80,9 +80,17 @@ sub ParseStruct($)
 sub ParseUnionElement($)
 {
     my($element) = shift;
-    $res .= "[case($element->{CASE})] ";
-    ParseElement($element->{DATA});
-    $res .= ";\n";
+    
+#    $res .= "void prs_$element->{DATA}->{TYPE}()\n{\n";
+
+#    $res .= "}\n\n";
+
+    $res .= "\tcase $element->{DATA}->{NAME}: \n";
+    $res .= "\t\tprs_$element->{DATA}->{TYPE}();\n\t\tbreak;\n";
+
+#    $res .= "[case($element->{CASE})] ";
+#    ParseElement($element->{DATA});
+#    $res .= ";\n";
 }
 
 #####################################################################
@@ -90,12 +98,17 @@ sub ParseUnionElement($)
 sub ParseUnion($)
 {
     my($union) = shift;
+
+#    print Dumper($union);
+
+    $res .= "\tswitch (level) {\n";
+
     (defined $union->{PROPERTIES}) && ParseProperties($union->{PROPERTIES});
-    $res .= "union {\n";
     foreach my $e (@{$union->{DATA}}) {
        ParseUnionElement($e);
     }
-    $res .= "}";
+    
+    $res .= "\t}\n";
 }
 
 #####################################################################
@@ -103,6 +116,9 @@ sub ParseUnion($)
 sub ParseType($)
 {
     my($data) = shift;
+
+    print Dumper $data;
+
     if (ref($data) eq "HASH") {
        ($data->{TYPE} eq "STRUCT") &&
            ParseStruct($data);
@@ -118,6 +134,7 @@ sub ParseType($)
 sub ParseTypedef($)
 {
     my($typedef) = shift;
+
     $res .= "void prs_$typedef->{NAME}(void)\n{\n";
     ParseType($typedef->{DATA});
     $res .= "}\n\n";