1#!/usr/bin/perl -plw 2use strict; 3 4BEGIN { 5 %::const = map { $_ => 1 } ( 6 # constants in xcb.h 7 "XCBNone", 8 "XCBCopyFromParent", 9 "XCBCurrentTime", 10 "XCBNoSymbol", 11 "XCBError", 12 "XCBReply", 13 # renamed constants 14 "XCBButtonAny", 15 "XCBButton1", 16 "XCBButton2", 17 "XCBButton3", 18 "XCBButton4", 19 "XCBButton5", 20 "XCBHostInsert", 21 "XCBHostDelete", 22 "XCBGlxGC_GL_CURRENT_BIT", 23 "XCBGlxGC_GL_POINT_BIT", 24 "XCBGlxGC_GL_LINE_BIT", 25 "XCBGlxGC_GL_POLYGON_BIT", 26 "XCBGlxGC_GL_POLYGON_STIPPLE_BIT", 27 "XCBGlxGC_GL_PIXEL_MODE_BIT", 28 "XCBGlxGC_GL_LIGHTING_BIT", 29 "XCBGlxGC_GL_FOG_BIT", 30 "XCBGlxGC_GL_DEPTH_BUFFER_BIT", 31 "XCBGlxGC_GL_ACCUM_BUFFER_BIT", 32 "XCBGlxGC_GL_STENCIL_BUFFER_BIT", 33 "XCBGlxGC_GL_VIEWPORT_BIT", 34 "XCBGlxGC_GL_TRANSFORM_BIT", 35 "XCBGlxGC_GL_ENABLE_BIT", 36 "XCBGlxGC_GL_COLOR_BUFFER_BIT", 37 "XCBGlxGC_GL_HINT_BIT", 38 "XCBGlxGC_GL_EVAL_BIT", 39 "XCBGlxGC_GL_LIST_BIT", 40 "XCBGlxGC_GL_TEXTURE_BIT", 41 "XCBGlxGC_GL_SCISSOR_BIT", 42 "XCBGlxGC_GL_ALL_ATTRIB_BITS", 43 "XCBGlxRM_GL_RENDER", 44 "XCBGlxRM_GL_FEEDBACK", 45 "XCBGlxRM_GL_SELECT", 46 ); 47 open(CONST, shift) or die "failed to open constants list: $!"; 48 while(<CONST>) 49 { 50 chomp; 51 die "invalid constant name: \"$_\"" unless /^XCB[A-Za-z0-9_]*$/; 52 $::const{$_} = 1; 53 } 54 close(CONST); 55} 56 57sub convert($$) 58{ 59 local $_ = shift; 60 my ($fun) = @_; 61 62 return "xcb_generate_id" if /^xcb_[a-z0-9_]+_new$/ or /^XCB[A-Z0-9]+New$/; 63 return "uint$1_t" if /^CARD(8|16|32)$/; 64 return "int$1_t" if /^INT(8|16|32)$/; 65 return "uint8_t" if $_ eq 'BOOL' or $_ eq 'BYTE'; 66 return $_ if /^[A-Z0-9]*_[A-Z0-9_]*$/ or !/^XCB(.+)/; 67 my $const = defined $::const{$_}; 68 $_ = $1; 69 70 s/^(GX|RandR|XFixes|XP|XvMC|ScreenSaver)(.)/uc($1) . "_" . $2/e unless /^ScreenSaver(?:Reset|Active)$/; 71 72 my %abbr = ( 73 "Iter" => "iterator", 74 "Req" => "request", 75 "Rep" => "reply", 76 ); 77 78 my $word; 79 if(/CHAR2B|INT64|FLOAT32|FLOAT64|BOOL32|STRING8/) 80 { 81 $word = qr/[A-Z](?:[A-Z0-9]*|[a-z]*)/; 82 } else { 83 $word = qr/[0-9]+|[A-Z](?:[A-Z]*|[a-z]*)/; 84 } 85 s/($word)_?(?=[0-9A-Z]|$)/"_" . ($abbr{$1} or lc($1))/eg; 86 87 s/^_shape_shape_/_shape_/; 88 s/^_xf_?86_dri/_xf86dri/; 89 $_ = "_family_decnet" if $_ eq "_family_de_cnet"; 90 return "XCB" . uc($_) if $const; 91 92 $_ .= "_t" unless $fun or /_id$/; 93 94 return "xcb" . $_; 95} 96 97s/^(\s*#\s*include\s*<)X11\/XCB\//$1xcb\//; 98s/([_A-Za-z][_A-Za-z0-9]*)([ \t]*\()?/convert($1, defined $2) . ($2 or "")/eg; 99