Home | History | Annotate | Download | only in tools
      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