98402bf622339c2e210d978f9b259ec629f65481
[free-sw/xcb/libxcb] / tools / api_conv.pl
1 #!/usr/bin/perl -plw
2 use strict;
3
4 sub convert($$)
5 {
6         local $_ = shift;
7         my ($fun) = @_;
8
9         return "uint$1_t" if /^CARD(8|16|32)$/;
10         return "int$1_t" if /^INT(8|16|32)$/;
11         return "uint8_t" if $_ eq 'BOOL' or $_ eq 'BYTE';
12         return $_ if /_/ or !/^XCB(.+)/;
13         $_ = $1;
14
15         my %abbr = (
16                 "Iter" => "iterator",
17                 "Req" => "request",
18                 "Rep" => "reply",
19         );
20
21         s/[A-Z](?:[A-Z0-9]*|[a-z0-9]*)(?=[A-Z]|$)/"_" . ($abbr{$&} or lc($&))/eg;
22         $_ .= "_t" unless $fun;
23
24         return "xcb" . $_;
25 }
26
27 s/([_A-Za-z][_A-Za-z0-9]*)([ \t]*\()?/convert($1, defined $2) . ($2 or "")/eg;