e5d6a81355ea451675d3371299249ef486ac3588
[samba.git] / source4 / build / pidl / typelist.pm
1 ###################################################
2 # Samba4 parser generator for IDL structures
3 # Copyright jelmer@samba.org 2005
4 # released under the GNU GPL
5
6 package typelist;
7
8 use strict;
9
10 my %typedefs;
11
12 sub addType($)
13 {
14         my $t = shift;
15         $typedefs{$t->{NAME}} = $t;
16 }
17
18 sub getType($)
19 {
20         my $t = shift;
21         return undef unless(defined($typedefs{$t}));
22         return $typedefs{$t};
23 }
24
25 sub hasType($)
26 {
27         my $t = shift;
28         return 1 if defined($typedefs{$t});
29         return 0;
30 }
31
32 sub RegisterPrimitives()
33 {
34         my @primitives = (
35                 "char", "int8", "uint8", "short", "wchar_t", 
36                 "int16", "uint16", "long", "int32", "uint32", 
37                 "dlong", "udlong", "udlongr", "NTTIME", "NTTIME_1sec", 
38                 "time_t", "DATA_BLOB", "error_status_t", "WERROR", 
39                 "NTSTATUS", "boolean32", "unsigned32", "ipv4address", 
40                 "hyper", "NTTIME_hyper");
41                 
42         foreach my $k (@primitives) {
43                 $typedefs{$k} = {
44                         NAME => $k,
45                         TYPE => "TYPEDEF",
46                         DATA => {
47                                 TYPE => "SCALAR",
48                                 NAME => $k
49                         }
50                 };
51         }
52 }
53
54 RegisterPrimitives();
55
56 1;