1bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root/* 2bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root * Copyright (C) 2006 The Android Open Source Project 3bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root * 4bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root * Licensed under the Apache License, Version 2.0 (the "License"); 5bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root * you may not use this file except in compliance with the License. 6bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root * You may obtain a copy of the License at 7bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root * 8bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root * http://www.apache.org/licenses/LICENSE-2.0 9bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root * 10bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root * Unless required by applicable law or agreed to in writing, software 11bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root * distributed under the License is distributed on an "AS IS" BASIS, 12bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root * See the License for the specific language governing permissions and 14bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root * limitations under the License. 15bd393b7f39a71a13893aea8b64474b0b07ebe0ddKenny Root */ 16412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 17412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevichimport java.util.HashMap; 18412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 19412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevichpublic class JType { 20412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 21412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich String baseType; 22412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich boolean isArray; 23412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich boolean isClass; 2450d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich boolean isString; 25412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 26412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich static HashMap<CType,JType> typeMapping = new HashMap<CType,JType>(); 27412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich static HashMap<CType,JType> arrayTypeMapping = new HashMap<CType,JType>(); 28412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 29412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich static { 30412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich // Primitive types 31412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLbitfield"), new JType("int")); 32412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLboolean"), new JType("boolean")); 33412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLclampf"), new JType("float")); 34412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLclampx"), new JType("int")); 35412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLenum"), new JType("int")); 36412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLfloat"), new JType("float")); 37412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLfixed"), new JType("int")); 38412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLint"), new JType("int")); 39412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLintptr"), new JType("int")); 40412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLshort"), new JType("short")); 41412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLsizei"), new JType("int")); 42412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLsizeiptr"), new JType("int")); 43412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLubyte"), new JType("byte")); 44412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLuint"), new JType("int")); 45412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("void"), new JType("void")); 4650d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich typeMapping.put(new CType("GLubyte", true, true), new JType("String", false, false)); 478a59ca73f2434f0e19321351e38229314c173e4fPablo Ceballos typeMapping.put(new CType("char"), new JType("byte")); 4850d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich typeMapping.put(new CType("char", true, true), new JType("String", false, false)); 490eb6ad563825b97aec760a893db0eead10fe0ae6Jesse Hall typeMapping.put(new CType("GLchar", true, true), new JType("String", false, false)); 5050d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich typeMapping.put(new CType("int"), new JType("int")); 5168fc8bbced285a8a2b716e5fe1900968ad8ba7d3Jesse Hall typeMapping.put(new CType("GLuint64"), new JType("long")); 5268fc8bbced285a8a2b716e5fe1900968ad8ba7d3Jesse Hall typeMapping.put(new CType("GLsync"), new JType("long")); 53412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 5466a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer // EGL primitive types 5566a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer typeMapping.put(new CType("EGLint"), new JType("int")); 5666a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer typeMapping.put(new CType("EGLBoolean"), new JType("boolean")); 5766a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer typeMapping.put(new CType("EGLenum"), new JType("int")); 5866a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer typeMapping.put(new CType("EGLNativePixmapType"), new JType("int")); 5966a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer typeMapping.put(new CType("EGLNativeWindowType"), new JType("int")); 60ab6fc2a86f34be455c144a2d691e94909998c959Ashok Bhat typeMapping.put(new CType("EGLNativeDisplayType"), new JType("long")); 61ab6fc2a86f34be455c144a2d691e94909998c959Ashok Bhat typeMapping.put(new CType("EGLClientBuffer"), new JType("long")); 627284145d564fa8a422a8e564a38c730fb4a2962bAndy McFadden typeMapping.put(new CType("EGLnsecsANDROID"), new JType("long")); 6366a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer 6466a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer // EGL nonprimitive types 6566a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer typeMapping.put(new CType("EGLConfig"), new JType("EGLConfig", true, false)); 6666a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer typeMapping.put(new CType("EGLContext"), new JType("EGLContext", true, false)); 6766a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer typeMapping.put(new CType("EGLDisplay"), new JType("EGLDisplay", true, false)); 6866a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer typeMapping.put(new CType("EGLSurface"), new JType("EGLSurface", true, false)); 6966a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer 7066a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer 71412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich // Untyped pointers map to untyped Buffers 72412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLvoid", true, true), 73412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.Buffer", true, false)); 74412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLvoid", false, true), 75412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.Buffer", true, false)); 76412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("void", false, true), 77412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.Buffer", true, false)); 788a59ca73f2434f0e19321351e38229314c173e4fPablo Ceballos typeMapping.put(new CType("void", true, true), 798a59ca73f2434f0e19321351e38229314c173e4fPablo Ceballos new JType("java.nio.Buffer", true, false)); 80412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLeglImageOES", false, false), 81412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.Buffer", true, false)); 82412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 83412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich // Typed pointers map to typed Buffers 84412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLboolean", false, true), 85412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.IntBuffer", true, false)); 8650d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich typeMapping.put(new CType("GLenum", false, true), 8750d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich new JType("java.nio.IntBuffer", true, false)); 880eb6ad563825b97aec760a893db0eead10fe0ae6Jesse Hall typeMapping.put(new CType("GLenum", true, true), 890eb6ad563825b97aec760a893db0eead10fe0ae6Jesse Hall new JType("java.nio.IntBuffer", true, false)); 90412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLfixed", false, true), 91412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.IntBuffer", true, false)); 92412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLfixed", true, true), 93412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.IntBuffer", true, false)); 94412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLfloat", false, true), 95412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.FloatBuffer", true, false)); 96412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLfloat", true, true), 97412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.FloatBuffer", true, false)); 98412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLint", false, true), 99412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.IntBuffer", true, false)); 100412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLint", true, true), 101412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.IntBuffer", true, false)); 10250d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich typeMapping.put(new CType("GLsizei", false, true), 10350d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich new JType("java.nio.IntBuffer", true, false)); 104412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLuint", false, true), 105412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.IntBuffer", true, false)); 106412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLuint", true, true), 107412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.IntBuffer", true, false)); 108412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLshort", true, true), 109412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.ShortBuffer", true, false)); 11068fc8bbced285a8a2b716e5fe1900968ad8ba7d3Jesse Hall typeMapping.put(new CType("GLint64", false, true), 11168fc8bbced285a8a2b716e5fe1900968ad8ba7d3Jesse Hall new JType("java.nio.LongBuffer", true, false)); 112412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 113412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich // Typed pointers map to arrays + offsets 11450d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich arrayTypeMapping.put(new CType("char", false, true), 11550d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich new JType("byte", false, true)); 1168a59ca73f2434f0e19321351e38229314c173e4fPablo Ceballos arrayTypeMapping.put(new CType("GLchar", false, true), 1178a59ca73f2434f0e19321351e38229314c173e4fPablo Ceballos new JType("byte", false, true)); 118412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLboolean", false, true), 11966a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer new JType("boolean", false, true)); 12050d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich arrayTypeMapping.put(new CType("GLenum", false, true), new JType("int", false, true)); 1210eb6ad563825b97aec760a893db0eead10fe0ae6Jesse Hall arrayTypeMapping.put(new CType("GLenum", true, true), new JType("int", false, true)); 122412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLfixed", true, true), new JType("int", false, true)); 123412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLfixed", false, true), new JType("int", false, true)); 124412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLfloat", false, true), new JType("float", false, true)); 125412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLfloat", true, true), new JType("float", false, true)); 126412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLint", false, true), new JType("int", false, true)); 127412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLint", true, true), new JType("int", false, true)); 128412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLshort", true, true), new JType("short", false, true)); 12950d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich arrayTypeMapping.put(new CType("GLsizei", false, true), new JType("int", false, true)); 13050d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich arrayTypeMapping.put(new CType("GLsizei", true, true), new JType("int", false, true)); 131412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLuint", false, true), new JType("int", false, true)); 132412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLuint", true, true), new JType("int", false, true)); 133412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLintptr"), new JType("int", false, true)); 134412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLsizeiptr"), new JType("int", false, true)); 13568fc8bbced285a8a2b716e5fe1900968ad8ba7d3Jesse Hall arrayTypeMapping.put(new CType("GLint64", false, true), new JType("long", false, true)); 13666a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer 13766a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer //EGL typed pointers map to arrays + offsets 13866a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer arrayTypeMapping.put(new CType("EGLint", false, true), new JType("int", false, true)); 13966a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer arrayTypeMapping.put(new CType("EGLint", true, true), new JType("int", false, true)); 14066a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer arrayTypeMapping.put(new CType("EGLConfig", false, true), new JType("EGLConfig", true, true)); 14166a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer arrayTypeMapping.put(new CType("EGLConfig", true, true), new JType("EGLConfig", true, true)); 14266a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer 143412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 144412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 145412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public JType() { 146412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 147412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 148412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public JType(String primitiveTypeName) { 149412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich this.baseType = primitiveTypeName; 150412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich this.isClass = false; 151412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich this.isArray = false; 152412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 153412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 154412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public JType(String primitiveTypeName, boolean isClass, boolean isArray) { 155412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich this.baseType = primitiveTypeName; 156412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich this.isClass = isClass; 157412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich this.isArray = isArray; 158412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 159412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 160412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public String getBaseType() { 161412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich return baseType; 162412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 163412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 164412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich @Override 165412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public String toString() { 166412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich return baseType + (isArray ? "[]" : ""); 167412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 168412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 169412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public boolean isArray() { 170412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich return isArray; 171412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 172412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 173412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public boolean isClass() { 174412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich return isClass; 175412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 176412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 17750d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich public boolean isString() { 17850d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich return baseType.equals("String"); 17950d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich } 18050d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich 181412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public boolean isPrimitive() { 182412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich return !isClass() && !isArray(); 183412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 184412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 185412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public boolean isVoid() { 186412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich return baseType.equals("void"); 187412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 188412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 189412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public boolean isBuffer() { 190412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich return baseType.indexOf("Buffer") != -1; 191412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 192412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 193412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public boolean isTypedBuffer() { 194412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich return !baseType.equals("java.nio.Buffer") && 195412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich (baseType.indexOf("Buffer") != -1); 196412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 197412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 1984e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi public JType getArrayTypeForTypedBuffer() { 1994e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi if (!isTypedBuffer()) { 2004e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi throw new RuntimeException("Not typed buffer type " + this); 2014e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi } 2024e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi switch (baseType) { 2034e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "java.nio.ByteBuffer": 2044e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return new JType("byte", false, true); 2054e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "java.nio.BooleanBuffer": 2064e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return new JType("boolean", false, true); 2074e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "java.nio.ShortBuffer": 2084e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return new JType("short", false, true); 2094e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "java.nio.CharBuffer": 2104e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return new JType("char", false, true); 2114e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "java.nio.IntBuffer": 2124e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return new JType("int", false, true); 2134e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "java.nio.LongBuffer": 2144e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return new JType("long", false, true); 2154e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "java.nio.FloatBuffer": 2164e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return new JType("float", false, true); 2174e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "java.nio.DoubleBuffer": 2184e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return new JType("double", false, true); 2194e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi default: 2204e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi throw new RuntimeException("Unknown typed buffer type " + this); 2214e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi } 2224e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi } 2234e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi 2244e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi public String getArrayGetterForPrimitiveArray() { 2254e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi if (!isArray() || isClass()) { 2264e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi throw new RuntimeException("Not array type " + this); 2274e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi } 2284e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi switch (baseType) { 2294e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "byte": 2304e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return "GetByteArrayElements"; 2314e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "boolean": 2324e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return "GetBooleanArrayElements"; 2334e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "short": 2344e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return "GetShortArrayElements"; 2354e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "char": 2364e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return "GetCharArrayElements"; 2374e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "int": 2384e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return "GetIntArrayElements"; 2394e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "long": 2404e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return "GetLongArrayElements"; 2414e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "float": 2424e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return "GetFloatArrayElements"; 2434e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "double": 2444e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return "GetDoubleArrayElements"; 2454e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi default: 2464e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi throw new RuntimeException("Unknown array type " + this); 2474e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi } 2484e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi } 2494e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi 2504e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi public String getArrayReleaserForPrimitiveArray() { 2514e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi if (!isArray() || isClass()) { 2524e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi throw new RuntimeException("Not array type " + this); 2534e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi } 2544e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi switch (baseType) { 2554e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "byte": 2564e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return "ReleaseByteArrayElements"; 2574e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "boolean": 2584e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return "ReleaseBooleanArrayElements"; 2594e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "short": 2604e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return "ReleaseShortArrayElements"; 2614e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "char": 2624e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return "ReleaseCharArrayElements"; 2634e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "int": 2644e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return "ReleaseIntArrayElements"; 2654e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "long": 2664e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return "ReleaseLongArrayElements"; 2674e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "float": 2684e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return "ReleaseFloatArrayElements"; 2694e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi case "double": 2704e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi return "ReleaseDoubleArrayElements"; 2714e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi default: 2724e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi throw new RuntimeException("Unknown array type " + this); 2734e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi } 2744e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi } 2754e7de461c18278a31be83e7c9074a02fbb6e9475Hiroshi Yamauchi 27666a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer public boolean isEGLHandle() { 27766a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer return !isPrimitive() && 27866a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer (baseType.startsWith("EGL")); 27966a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer } 28066a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer 281412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public static JType convert(CType ctype, boolean useArray) { 282412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich JType javaType = null; 283412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich if (useArray) { 284412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich javaType = arrayTypeMapping.get(ctype); 285412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 286412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich if (javaType == null) { 287412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich javaType = typeMapping.get(ctype); 288412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 289412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich if (javaType == null) { 290412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich throw new RuntimeException("Unsupported C type: " + ctype); 291412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 292412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich return javaType; 293412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 294412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich} 295