r5477: - Move some more of the typelist stuff out of ndr.pm
authorJelmer Vernooij <jelmer@samba.org>
Sun, 20 Feb 2005 21:45:51 +0000 (21:45 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:10:49 +0000 (13:10 -0500)
- Remember INTERFACEs as well (they can be types in DCOM)
(This used to be commit d914cd1804636eb1a34805d48c18e016835e973b)

source4/build/pidl/ndr.pm
source4/build/pidl/pidl.pl
source4/build/pidl/typelist.pm

index 185067e526f4b638d1dead34a987cf92a3c24c03..da2086e765c6c5f4f499301bd43b4fb1099719d8 100644 (file)
@@ -2092,7 +2092,6 @@ sub LoadInterface($)
 
        foreach my $d (@{$x->{DATA}}) {
                if (($d->{TYPE} eq "DECLARE") or ($d->{TYPE} eq "TYPEDEF")) {
-                       typelist::addType($d);
                        if ($d->{DATA}->{TYPE} eq "STRUCT" or $d->{DATA}->{TYPE} eq "UNION") {
                                CheckPointerTypes($d->{DATA}, $x->{PROPERTIES}->{pointer_default});
                        }
index 514421e6907dfe9fc9f6929d5224ba28c9133a58..eedbb91d4ec093fea1143bcd70bd6d01a11df05e 100755 (executable)
@@ -23,6 +23,7 @@ use stub;
 use ndr;
 use eparser;
 use validator;
+use typelist;
 use util;
 use template;
 use swig;
@@ -138,6 +139,10 @@ sub process_file($)
                print IdlDump::Dump($pidl);
        }
 
+       if ($opt_header || $opt_parser) {
+               typelist::LoadIdl($pidl);
+       }
+
        if ($opt_header) {
                my($header) = util::ChangeExtension($output, ".h");
                util::FileSave($header, IdlHeader::Parse($pidl));
index 66a8a41dd2d23593912658e50b12a6d183fc2aab..f1ece68d8d45b4d621c1bb5e6615d8f52ceda7d0 100644 (file)
@@ -132,6 +132,21 @@ sub mapType($)
        die("Unknown type $dt->{DATA}->{TYPE}");
 }
 
+sub LoadIdl($)
+{
+       my $idl = shift;
+
+       foreach my $x (@{$idl}) {
+               next if $x->{TYPE} ne "INTERFACE";
+               addType($x);
+               foreach my $y (@{$x->{DATA}}) {
+                       addType($y) if (
+                               $y->{TYPE} eq "TYPEDEF" 
+                        or $y->{TYPE} eq "DECLARE");
+               }
+       }
+}
+
 RegisterPrimitives();