153238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian#! /usr/bin/perl 253238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian# 353238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian# Copyright (C) 2008 Google Inc. 453238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian# 553238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian# Licensed under the Apache License, Version 2.0 (the "License"); 653238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian# you may not use this file except in compliance with the License. 753238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian# You may obtain a copy of the License at 853238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian# 953238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian# http://www.apache.org/licenses/LICENSE-2.0 1053238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian# 1153238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian# Unless required by applicable law or agreed to in writing, software 1253238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian# distributed under the License is distributed on an "AS IS" BASIS, 1353238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1453238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian# See the License for the specific language governing permissions and 1553238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian# limitations under the License. 1653238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian 1753238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopianuse strict; 1853238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian 19b1a39d67be99fe6c4545b25e10ac82a5dd1df634Mathias Agopiansub rtrim($) 20b1a39d67be99fe6c4545b25e10ac82a5dd1df634Mathias Agopian{ 21b1a39d67be99fe6c4545b25e10ac82a5dd1df634Mathias Agopian my $string = shift; 22b1a39d67be99fe6c4545b25e10ac82a5dd1df634Mathias Agopian $string =~ s/\s+$//; 23b1a39d67be99fe6c4545b25e10ac82a5dd1df634Mathias Agopian return $string; 24b1a39d67be99fe6c4545b25e10ac82a5dd1df634Mathias Agopian} 25b1a39d67be99fe6c4545b25e10ac82a5dd1df634Mathias Agopian 2653238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopianwhile (my $line = <>) { 2753238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian next if $line =~ /^\//; 2853238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian next if $line =~ /^#/; 2953238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian next if $line =~ /^\s*$/; 30b1a39d67be99fe6c4545b25e10ac82a5dd1df634Mathias Agopian if ($line !~ /^GL_API(CALL)?\s+(.+)\s+GL_APIENTRY\s+([\w]+)\s*\(([^\)]+)\);/) { 3153238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian next; 3253238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian } 33b1a39d67be99fe6c4545b25e10ac82a5dd1df634Mathias Agopian my $type = rtrim($2); 34b1a39d67be99fe6c4545b25e10ac82a5dd1df634Mathias Agopian my $name = $3; 35b1a39d67be99fe6c4545b25e10ac82a5dd1df634Mathias Agopian my $args = $4; 3653238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian 37b519abb606c819c446a408f422530268b21a100bMathias Agopian #printf("%s", $line); 38b519abb606c819c446a408f422530268b21a100bMathias Agopian 39b519abb606c819c446a408f422530268b21a100bMathias Agopian my $prefix = ""; 4048d438d05f14c2f4bd83ae89f520368cd49122dfMathias Agopian if ($name eq "glGetString") { 4148d438d05f14c2f4bd83ae89f520368cd49122dfMathias Agopian $prefix = "__"; 4248d438d05f14c2f4bd83ae89f520368cd49122dfMathias Agopian } 43b519abb606c819c446a408f422530268b21a100bMathias Agopian 44b519abb606c819c446a408f422530268b21a100bMathias Agopian printf("%s API_ENTRY(%s%s)(%s)", $type, $prefix, $name, $args); 45b519abb606c819c446a408f422530268b21a100bMathias Agopian 46b519abb606c819c446a408f422530268b21a100bMathias Agopian printf(" {\n"); 4753238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian if ($type eq "void") { 4853238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian printf(" CALL_GL_API(%s", $name); 4953238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian } else { 5053238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian printf(" CALL_GL_API_RETURN(%s", $name); 5153238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian } 52b519abb606c819c446a408f422530268b21a100bMathias Agopian my @args = split ',', $args; 53b519abb606c819c446a408f422530268b21a100bMathias Agopian my $len = scalar(@args); 5453238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian for (my $num = 0; $num < $len; $num++) { 5553238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian if ($args[$num] ne "void") { 5653238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian print ", "; 57b519abb606c819c446a408f422530268b21a100bMathias Agopian # 58b519abb606c819c446a408f422530268b21a100bMathias Agopian # extract the name from the parameter 59b519abb606c819c446a408f422530268b21a100bMathias Agopian # type name 60b519abb606c819c446a408f422530268b21a100bMathias Agopian # const type *name 61b519abb606c819c446a408f422530268b21a100bMathias Agopian # type *name 62b519abb606c819c446a408f422530268b21a100bMathias Agopian # type name[4] 63b519abb606c819c446a408f422530268b21a100bMathias Agopian # 64b519abb606c819c446a408f422530268b21a100bMathias Agopian if ($args[$num] =~ /(\S+\s)+\**\s*([\w]+)/) { 65b519abb606c819c446a408f422530268b21a100bMathias Agopian printf("%s", $2); 66b519abb606c819c446a408f422530268b21a100bMathias Agopian } 6753238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian } 6853238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian } 69b519abb606c819c446a408f422530268b21a100bMathias Agopian printf(");\n"); 70b519abb606c819c446a408f422530268b21a100bMathias Agopian printf("}\n"); 7153238bddeab7b4633bfdb59fac67b0af1211955aMathias Agopian} 72b519abb606c819c446a408f422530268b21a100bMathias Agopian 73b519abb606c819c446a408f422530268b21a100bMathias Agopian 74b519abb606c819c446a408f422530268b21a100bMathias Agopian 75b519abb606c819c446a408f422530268b21a100bMathias Agopian 76b519abb606c819c446a408f422530268b21a100bMathias Agopian 77