1 ###################################################
2 # create C header files for an IDL structure
3 # Copyright tridge@samba.org 2000
4 # Copyright jelmer@samba.org 2005
5 # released under the GNU GPL
7 package Parse::Pidl::Ethereal::NDR::Header;
11 use Parse::Pidl::Util qw(has_property);
23 for (my($i)=0; $i < $tab_depth; $i++) {
28 #####################################################################
30 sub HeaderTypedefProto($)
34 my $tf = Parse::Pidl::Ethereal::NDR::Parser::get_typefamily($d->{DATA}{TYPE});
36 return unless has_property($d, "public");
38 unless (has_property($d, "nopull")) {
39 pidl "dcerpc_dissect_fnct_t $d->{NAME};\n";
43 #####################################################################
48 if (!defined($const->{ARRAY_LEN}[0])) {
49 pidl "#define $const->{NAME}\t( $const->{VALUE} )\n";
51 pidl "#define $const->{NAME}\t $const->{VALUE}\n";
55 my %headerstructs = ();
57 #####################################################################
58 # parse the interface definitions
59 sub HeaderInterface($)
61 my($interface) = shift;
65 pidl "#ifndef _HEADER_NDR_$interface->{NAME}\n";
66 pidl "#define _HEADER_NDR_$interface->{NAME}\n\n";
68 if (defined $interface->{PROPERTIES}->{depends}) {
69 my @d = split / /, $interface->{PROPERTIES}->{depends};
71 pidl "#include \"packet-dcerpc-$i\.h\"\n";
75 foreach my $d (@{$interface->{CONSTS}}) {
79 foreach my $d (@{$interface->{TYPEDEFS}}) {
80 HeaderTypedefProto($d);
83 pidl "#endif /* _HEADER_NDR_$interface->{NAME} */\n";
86 #####################################################################
87 # parse a parsed IDL into a C header
94 pidl "/* header auto-generated by pidl */\n\n";
95 foreach my $x (@{$idl}) {
96 if ($x->{TYPE} eq "INTERFACE") {