1602e473dSmrg#!/usr/bin/perl -plw 2602e473dSmrguse strict; 3602e473dSmrg 4602e473dSmrgBEGIN { 5602e473dSmrg %::const = map { $_ => 1 } ( 6602e473dSmrg # constants in xcb.h 7602e473dSmrg "XCBNone", 8602e473dSmrg "XCBCopyFromParent", 9602e473dSmrg "XCBCurrentTime", 10602e473dSmrg "XCBNoSymbol", 11602e473dSmrg "XCBError", 12602e473dSmrg "XCBReply", 13602e473dSmrg # renamed constants 14602e473dSmrg "XCBButtonAny", 15602e473dSmrg "XCBButton1", 16602e473dSmrg "XCBButton2", 17602e473dSmrg "XCBButton3", 18602e473dSmrg "XCBButton4", 19602e473dSmrg "XCBButton5", 20602e473dSmrg "XCBHostInsert", 21602e473dSmrg "XCBHostDelete", 22602e473dSmrg "XCBGlxGC_GL_CURRENT_BIT", 23602e473dSmrg "XCBGlxGC_GL_POINT_BIT", 24602e473dSmrg "XCBGlxGC_GL_LINE_BIT", 25602e473dSmrg "XCBGlxGC_GL_POLYGON_BIT", 26602e473dSmrg "XCBGlxGC_GL_POLYGON_STIPPLE_BIT", 27602e473dSmrg "XCBGlxGC_GL_PIXEL_MODE_BIT", 28602e473dSmrg "XCBGlxGC_GL_LIGHTING_BIT", 29602e473dSmrg "XCBGlxGC_GL_FOG_BIT", 30602e473dSmrg "XCBGlxGC_GL_DEPTH_BUFFER_BIT", 31602e473dSmrg "XCBGlxGC_GL_ACCUM_BUFFER_BIT", 32602e473dSmrg "XCBGlxGC_GL_STENCIL_BUFFER_BIT", 33602e473dSmrg "XCBGlxGC_GL_VIEWPORT_BIT", 34602e473dSmrg "XCBGlxGC_GL_TRANSFORM_BIT", 35602e473dSmrg "XCBGlxGC_GL_ENABLE_BIT", 36602e473dSmrg "XCBGlxGC_GL_COLOR_BUFFER_BIT", 37602e473dSmrg "XCBGlxGC_GL_HINT_BIT", 38602e473dSmrg "XCBGlxGC_GL_EVAL_BIT", 39602e473dSmrg "XCBGlxGC_GL_LIST_BIT", 40602e473dSmrg "XCBGlxGC_GL_TEXTURE_BIT", 41602e473dSmrg "XCBGlxGC_GL_SCISSOR_BIT", 42602e473dSmrg "XCBGlxGC_GL_ALL_ATTRIB_BITS", 43602e473dSmrg "XCBGlxRM_GL_RENDER", 44602e473dSmrg "XCBGlxRM_GL_FEEDBACK", 45602e473dSmrg "XCBGlxRM_GL_SELECT", 46602e473dSmrg ); 47602e473dSmrg open(CONST, shift) or die "failed to open constants list: $!"; 48602e473dSmrg while(<CONST>) 49602e473dSmrg { 50602e473dSmrg chomp; 51602e473dSmrg die "invalid constant name: \"$_\"" unless /^XCB[A-Za-z0-9_]*$/; 52602e473dSmrg $::const{$_} = 1; 53602e473dSmrg } 54602e473dSmrg close(CONST); 55602e473dSmrg} 56602e473dSmrg 57602e473dSmrgsub convert($$) 58602e473dSmrg{ 59602e473dSmrg local $_ = shift; 60602e473dSmrg my ($fun) = @_; 61602e473dSmrg 62602e473dSmrg return "xcb_generate_id" if /^xcb_[a-z0-9_]+_new$/ or /^XCB[A-Z0-9]+New$/; 63602e473dSmrg return "uint$1_t" if /^CARD(8|16|32)$/; 64602e473dSmrg return "int$1_t" if /^INT(8|16|32)$/; 65602e473dSmrg return "uint8_t" if $_ eq 'BOOL' or $_ eq 'BYTE'; 66602e473dSmrg return $_ if /^[A-Z0-9]*_[A-Z0-9_]*$/ or !/^XCB(.+)/; 67602e473dSmrg my $const = defined $::const{$_}; 68602e473dSmrg $_ = $1; 69602e473dSmrg 70602e473dSmrg s/^(GX|RandR|XFixes|XP|XvMC|ScreenSaver)(.)/uc($1) . "_" . $2/e unless /^ScreenSaver(?:Reset|Active)$/; 71602e473dSmrg 72602e473dSmrg my %abbr = ( 73602e473dSmrg "Iter" => "iterator", 74602e473dSmrg "Req" => "request", 75602e473dSmrg "Rep" => "reply", 76602e473dSmrg ); 77602e473dSmrg 78602e473dSmrg my $word; 79602e473dSmrg if(/CHAR2B|INT64|FLOAT32|FLOAT64|BOOL32|STRING8/) 80602e473dSmrg { 81602e473dSmrg $word = qr/[A-Z](?:[A-Z0-9]*|[a-z]*)/; 82602e473dSmrg } else { 83602e473dSmrg $word = qr/[0-9]+|[A-Z](?:[A-Z]*|[a-z]*)/; 84602e473dSmrg } 85602e473dSmrg s/($word)_?(?=[0-9A-Z]|$)/"_" . ($abbr{$1} or lc($1))/eg; 86602e473dSmrg 87602e473dSmrg s/^_shape_shape_/_shape_/; 88602e473dSmrg s/^_xf_?86_dri/_xf86dri/; 89602e473dSmrg $_ = "_family_decnet" if $_ eq "_family_de_cnet"; 90602e473dSmrg return "XCB" . uc($_) if $const; 91602e473dSmrg 92602e473dSmrg $_ .= "_t" unless $fun or /_id$/; 93602e473dSmrg 94602e473dSmrg return "xcb" . $_; 95602e473dSmrg} 96602e473dSmrg 97602e473dSmrgs/^(\s*#\s*include\s*<)X11\/XCB\//$1xcb\//; 98602e473dSmrgs/([_A-Za-z][_A-Za-z0-9]*)([ \t]*\()?/convert($1, defined $2) . ($2 or "")/eg; 99