diff options
author | Mathias Agopian <mathias@google.com> | 2009-04-23 18:05:44 -0700 |
---|---|---|
committer | Mathias Agopian <mathias@google.com> | 2009-04-23 18:05:44 -0700 |
commit | 1feecd831003e693df95521a2baae4b9aec28843 (patch) | |
tree | 3b0af8634efd41185ced91a7a77996e9075816b9 /opengl/libs/tools/glapigen | |
parent | 24b62d0c41cf37ade751fe96a4888fbe7f61eb5a (diff) | |
download | frameworks_base-1feecd831003e693df95521a2baae4b9aec28843.zip frameworks_base-1feecd831003e693df95521a2baae4b9aec28843.tar.gz frameworks_base-1feecd831003e693df95521a2baae4b9aec28843.tar.bz2 |
use gl.h to generate the *.in files. we are now supporting the full gl.h and glext.h apis.
Diffstat (limited to 'opengl/libs/tools/glapigen')
-rwxr-xr-x | opengl/libs/tools/glapigen | 57 |
1 files changed, 32 insertions, 25 deletions
diff --git a/opengl/libs/tools/glapigen b/opengl/libs/tools/glapigen index 86506a8..a2c3a7b 100755 --- a/opengl/libs/tools/glapigen +++ b/opengl/libs/tools/glapigen @@ -16,50 +16,57 @@ use strict; -my $lineNum = 0; while (my $line = <>) { - $lineNum += 1; next if $line =~ /^\//; next if $line =~ /^#/; next if $line =~ /^\s*$/; - if ($line !~ /^GL_ENTRY\(([^,]+),\s*([^,]+),\s*([^)]+)\)/) { - printf STDERR "Cannot parse line number $lineNum:\n$line"; + if ($line !~ /^GL_API\s+(.+)\s+GL_APIENTRY\s+([\w]+)\s*\(([^\)]+)\);/) { next; } my $type = $1; my $name = $2; my $args = $3; - printf("%s API_ENTRY(%s)(", $type, $name); - my @args = split ',', $args; - - my $len = scalar(@args); - for (my $num = 0; $num < $len; $num++) { - print ", " if $num > 0; - my $arg = $args[$num]; - if ($arg =~ /([^]]+)(\[[^]]\])/) { - my $argtype = $1; - my $array = $2; - printf("%s arg%d%s", $argtype, $num, $array); - } else { - if ($arg eq "void") { - printf("void"); - } else { - printf("%s arg%d", $arg, $num); - } - } + #printf("%s", $line); + + my $prefix = ""; + if ($name eq "glEGLImageTargetTexture2DOES") { + $prefix = "__"; } - printf(") {\n"); + if ($name eq "glEGLImageTargetRenderbufferStorageOES") { + $prefix = "__"; + } + + printf("%s API_ENTRY(%s%s)(%s)", $type, $prefix, $name, $args); + + printf(" {\n"); if ($type eq "void") { printf(" CALL_GL_API(%s", $name); } else { printf(" CALL_GL_API_RETURN(%s", $name); } + my @args = split ',', $args; + my $len = scalar(@args); for (my $num = 0; $num < $len; $num++) { if ($args[$num] ne "void") { print ", "; - printf("arg%d", $num); + # + # extract the name from the parameter + # type name + # const type *name + # type *name + # type name[4] + # + if ($args[$num] =~ /(\S+\s)+\**\s*([\w]+)/) { + printf("%s", $2); + } } } - printf(");\n}\n\n"); + printf(");\n"); + printf("}\n"); } + + + + + |