JType.java revision 7284145d564fa8a422a8e564a38c730fb4a2962b
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)); 4750d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich typeMapping.put(new CType("char", false, true), new JType("byte")); 4850d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich typeMapping.put(new CType("char", true, true), new JType("String", false, false)); 4950d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich typeMapping.put(new CType("int"), new JType("int")); 50412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 5166a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer // EGL primitive types 5266a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer typeMapping.put(new CType("EGLint"), new JType("int")); 5366a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer typeMapping.put(new CType("EGLBoolean"), new JType("boolean")); 5466a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer typeMapping.put(new CType("EGLenum"), new JType("int")); 5566a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer typeMapping.put(new CType("EGLNativePixmapType"), new JType("int")); 5666a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer typeMapping.put(new CType("EGLNativeWindowType"), new JType("int")); 5766a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer typeMapping.put(new CType("EGLNativeDisplayType"), new JType("int")); 5866a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer typeMapping.put(new CType("EGLClientBuffer"), new JType("int")); 597284145d564fa8a422a8e564a38c730fb4a2962bAndy McFadden typeMapping.put(new CType("EGLnsecsANDROID"), new JType("long")); 6066a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer 6166a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer // EGL nonprimitive types 6266a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer typeMapping.put(new CType("EGLConfig"), new JType("EGLConfig", true, false)); 6366a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer typeMapping.put(new CType("EGLContext"), new JType("EGLContext", true, false)); 6466a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer typeMapping.put(new CType("EGLDisplay"), new JType("EGLDisplay", true, false)); 6566a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer typeMapping.put(new CType("EGLSurface"), new JType("EGLSurface", true, false)); 6666a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer 6766a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer 68412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich // Untyped pointers map to untyped Buffers 69412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLvoid", true, true), 70412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.Buffer", true, false)); 71412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLvoid", false, true), 72412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.Buffer", true, false)); 73412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("void", false, true), 74412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.Buffer", true, false)); 75412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLeglImageOES", false, false), 76412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.Buffer", true, false)); 77412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 78412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich // Typed pointers map to typed Buffers 79412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLboolean", false, true), 80412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.IntBuffer", true, false)); 8150d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich typeMapping.put(new CType("GLenum", false, true), 8250d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich new JType("java.nio.IntBuffer", true, false)); 83412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLfixed", false, true), 84412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.IntBuffer", true, false)); 85412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLfixed", true, true), 86412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.IntBuffer", true, false)); 87412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLfloat", false, true), 88412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.FloatBuffer", true, false)); 89412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLfloat", true, true), 90412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.FloatBuffer", true, false)); 91412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLint", false, true), 92412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.IntBuffer", true, false)); 93412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLint", true, true), 94412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.IntBuffer", true, false)); 9550d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich typeMapping.put(new CType("GLsizei", false, true), 9650d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich new JType("java.nio.IntBuffer", true, false)); 97412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLuint", false, true), 98412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.IntBuffer", true, false)); 99412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLuint", true, true), 100412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.IntBuffer", true, false)); 101412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich typeMapping.put(new CType("GLshort", true, true), 102412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich new JType("java.nio.ShortBuffer", true, false)); 103412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 104412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich // Typed pointers map to arrays + offsets 10550d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich arrayTypeMapping.put(new CType("char", false, true), 10650d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich new JType("byte", false, true)); 107412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLboolean", false, true), 10866a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer new JType("boolean", false, true)); 10950d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich arrayTypeMapping.put(new CType("GLenum", false, true), new JType("int", false, true)); 110412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLfixed", true, true), new JType("int", false, true)); 111412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLfixed", false, true), new JType("int", false, true)); 112412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLfloat", false, true), new JType("float", false, true)); 113412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLfloat", true, true), new JType("float", false, true)); 114412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLint", false, true), new JType("int", false, true)); 115412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLint", true, true), new JType("int", false, true)); 116412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLshort", true, true), new JType("short", false, true)); 11750d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich arrayTypeMapping.put(new CType("GLsizei", false, true), new JType("int", false, true)); 11850d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich arrayTypeMapping.put(new CType("GLsizei", true, true), new JType("int", false, true)); 119412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLuint", false, true), new JType("int", false, true)); 120412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLuint", true, true), new JType("int", false, true)); 121412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLintptr"), new JType("int", false, true)); 122412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich arrayTypeMapping.put(new CType("GLsizeiptr"), new JType("int", false, true)); 12366a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer 12466a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer //EGL typed pointers map to arrays + offsets 12566a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer arrayTypeMapping.put(new CType("EGLint", false, true), new JType("int", false, true)); 12666a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer arrayTypeMapping.put(new CType("EGLint", true, true), new JType("int", false, true)); 12766a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer arrayTypeMapping.put(new CType("EGLConfig", false, true), new JType("EGLConfig", true, true)); 12866a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer arrayTypeMapping.put(new CType("EGLConfig", true, true), new JType("EGLConfig", true, true)); 12966a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer 130412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 131412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 132412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public JType() { 133412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 134412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 135412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public JType(String primitiveTypeName) { 136412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich this.baseType = primitiveTypeName; 137412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich this.isClass = false; 138412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich this.isArray = false; 139412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 140412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 141412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public JType(String primitiveTypeName, boolean isClass, boolean isArray) { 142412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich this.baseType = primitiveTypeName; 143412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich this.isClass = isClass; 144412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich this.isArray = isArray; 145412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 146412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 147412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public String getBaseType() { 148412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich return baseType; 149412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 150412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 151412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich @Override 152412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public String toString() { 153412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich return baseType + (isArray ? "[]" : ""); 154412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 155412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 156412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public boolean isArray() { 157412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich return isArray; 158412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 159412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 160412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public boolean isClass() { 161412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich return isClass; 162412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 163412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 16450d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich public boolean isString() { 16550d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich return baseType.equals("String"); 16650d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich } 16750d0b14689b0ae95ea7b66a8c2f7b955115812ddJack Palevich 168412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public boolean isPrimitive() { 169412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich return !isClass() && !isArray(); 170412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 171412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 172412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public boolean isVoid() { 173412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich return baseType.equals("void"); 174412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 175412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 176412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public boolean isBuffer() { 177412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich return baseType.indexOf("Buffer") != -1; 178412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 179412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 180412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public boolean isTypedBuffer() { 181412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich return !baseType.equals("java.nio.Buffer") && 182412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich (baseType.indexOf("Buffer") != -1); 183412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 184412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich 18566a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer public boolean isEGLHandle() { 18666a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer return !isPrimitive() && 18766a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer (baseType.startsWith("EGL")); 18866a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer } 18966a42db8cbfba902f72f0ace5ac448ef4bfd3951Thomas Tafertshofer 190412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich public static JType convert(CType ctype, boolean useArray) { 191412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich JType javaType = null; 192412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich if (useArray) { 193412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich javaType = arrayTypeMapping.get(ctype); 194412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 195412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich if (javaType == null) { 196412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich javaType = typeMapping.get(ctype); 197412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 198412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich if (javaType == null) { 199412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich throw new RuntimeException("Unsupported C type: " + ctype); 200412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 201412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich return javaType; 202412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich } 203412f38f270b71bbc3214362eb58687cbf26d6df2Jack Palevich} 204