Simplify the API conversion tool without functionality changes.
[free-sw/xcb/libxcb] / tools / api_conv.pl
1 #!/usr/bin/perl -w
2 use strict;
3
4 sub trans_lines();
5
6 my @xids=("WINDOW","VISUALTYPE","DRAWABLE","FONT","ATOM","COLORMAP","FONTABLE","GCONTEXT","PIXMAP","SCREEN");
7
8 while(<>) {
9         
10         trans_lines() unless (/#[a-z]/ or /print/ or /\/\// or /\/\*/);
11         print;
12 }
13
14 #################
15 sub trans_lines()
16 {
17         s/XCB/xcb_/g;   
18         
19         foreach my $xid (@xids) {
20                 if(/$xid/ and /xcb_/) {
21                         my $lcxid = lc($xid);
22                         
23                         #var
24                         my $xidsp = $lcxid . " ";
25                         my $xidspun = $lcxid . "_t ";
26
27                         ##
28                         s/$xid/$lcxid/g;
29
30                         #var
31                         s/$xidsp/$xidspun/g;
32                 }
33         }
34
35         #func without XID in it
36         if(/xcb_/) {
37                 s/[A-Z]/"_" . lc($&)/eg;
38                 s/__/_/g;
39
40                 if(/event/i) {
41                         $_ = $` . "event" . "_t" . $';
42
43                         s/__/_/g;
44                 }
45
46                 #repair NULL's
47                 s/_n_u_l_l/NULL/g;
48                 #repair XCBSCREEN
49                 s/s_c_r_e_e_n/screen/g; 
50         }
51 }
52