1 #! /usr/bin/perl 2 # 3 # Copyright (C) 2008 Google Inc. 4 # 5 # Licensed under the Apache License, Version 2.0 (the "License"); 6 # you may not use this file except in compliance with the License. 7 # You may obtain a copy of the License at 8 # 9 # http://www.apache.org/licenses/LICENSE-2.0 10 # 11 # Unless required by applicable law or agreed to in writing, software 12 # distributed under the License is distributed on an "AS IS" BASIS, 13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 # See the License for the specific language governing permissions and 15 # limitations under the License. 16 17 use strict; 18 19 sub rtrim($) 20 { 21 my $string = shift; 22 $string =~ s/\s+$//; 23 return $string; 24 } 25 26 while (my $line = <>) { 27 next if $line =~ /^\//; 28 next if $line =~ /^#/; 29 next if $line =~ /^\s*$/; 30 if ($line !~ /^GL_API(CALL)?\s+(.+)\s+GL_APIENTRY\s+([\w]+)\s*\(([^\)]+)\);/) { 31 next; 32 } 33 my $type = rtrim($2); 34 my $name = $3; 35 my $args = $4; 36 37 #printf("%s", $line); 38 39 my $prefix = ""; 40 if ($name eq "glEGLImageTargetTexture2DOES") { 41 $prefix = "__"; 42 } 43 if ($name eq "glEGLImageTargetRenderbufferStorageOES") { 44 $prefix = "__"; 45 } 46 47 printf("%s API_ENTRY(%s%s)(%s)", $type, $prefix, $name, $args); 48 49 printf(" {\n"); 50 if ($type eq "void") { 51 printf(" CALL_GL_API(%s", $name); 52 } else { 53 printf(" CALL_GL_API_RETURN(%s", $name); 54 } 55 my @args = split ',', $args; 56 my $len = scalar(@args); 57 for (my $num = 0; $num < $len; $num++) { 58 if ($args[$num] ne "void") { 59 print ", "; 60 # 61 # extract the name from the parameter 62 # type name 63 # const type *name 64 # type *name 65 # type name[4] 66 # 67 if ($args[$num] =~ /(\S+\s)+\**\s*([\w]+)/) { 68 printf("%s", $2); 69 } 70 } 71 } 72 printf(");\n"); 73 printf("}\n"); 74 } 75 76 77 78 79 80