-sub trans_lines($);
-
-my @xids=("WINDOW","VISUALTYPE","DRAWABLE","FONT","ATOM","COLORMAP","FONTABLE","GCONTEXT","PIXMAP","SCREEN");
-
-my $input = $ARGV[0];
-
-open(INFILE,"<",$input) or die("Couldn't open file $input.\n");
-
-my @in_data = <INFILE>;
-my @out_data;
-
-foreach my $line (@in_data) {
-
- if($line =~ /#[a-z]/ or $line =~ /print/ or $line =~ /\/\// or $line =~ /\/\*/) {
- $out_data[@out_data] = $line;
- next;
+BEGIN {
+ %::const = map { $_ => 1 } (
+ "XCBNone",
+ "XCBCopyFromParent",
+ "XCBCurrentTime",
+ "XCBNoSymbol",
+ "XCBError",
+ "XCBReply",
+ );
+ open(CONST, shift) or die "failed to open constants list: $!";
+ while(<CONST>)
+ {
+ chomp;
+ die "invalid constant name: \"$_\"" unless /^XCB[A-Za-z0-9_]*$/;
+ $::const{$_} = 1;