public static string getCPPTypeName(Class type) { if (type == ClassLiteral<Buffer>.Value || type == ClassLiteral<Pointer>.Value) return "void*"; if (type == ClassLiteral<byte[]>.Value || type == ClassLiteral<ByteBuffer>.Value || type == ClassLiteral<BytePointer>.Value) return "signed char*"; if (type == ClassLiteral<short[]>.Value || type == ClassLiteral<ShortBuffer>.Value || type == ClassLiteral<ShortPointer>.Value) return "short*"; if (type == ClassLiteral<int[]>.Value || type == ClassLiteral<IntBuffer>.Value || type == ClassLiteral<IntPointer>.Value) return "int*"; if (type == ClassLiteral<long[]>.Value || type == ClassLiteral<LongBuffer>.Value || type == ClassLiteral<LongPointer>.Value) return "jlong*"; if (type == ClassLiteral<float[]>.Value || type == ClassLiteral<FloatBuffer>.Value || type == ClassLiteral<FloatPointer>.Value) return "float*"; if (type == ClassLiteral<double[]>.Value || type == ClassLiteral<DoubleBuffer>.Value || type == ClassLiteral<DoublePointer>.Value) return "double*"; if (type == ClassLiteral<char[]>.Value || type == ClassLiteral<CharBuffer>.Value || type == ClassLiteral<CharPointer>.Value) return "unsigned short*"; if (type == ClassLiteral<PointerPointer>.Value) return "void**"; if (type == ClassLiteral<String>.Value) return "const char*"; if (type == Byte.TYPE) return "signed char"; if (type == Character.TYPE) return "unsigned short"; if (type == Long.TYPE) return "jlong"; if (type == Boolean.TYPE) return "unsigned char"; if (type.isPrimitive()) return type.getName(); else if (((Class) ClassLiteral<FunctionPointer>.Value).isAssignableFrom(type)) { return new StringBuilder().append("JavaCPP_").append(Generator.mangle(type.getName())).append("*").toString(); } else { string str1 = ""; for (; type != null; type = type.getDeclaringClass()) { Namespace @namespace = (Namespace) type.getAnnotation((Class) ClassLiteral<Namespace>.Value); string str2 = @namespace == null ? "" : @namespace.value(); if (((Class) ClassLiteral<Pointer>.Value).isAssignableFrom(type)) { Name name1 = (Name) type.getAnnotation((Class) ClassLiteral<Name>.Value); string str3; if (name1 == null) { string name2 = type.getName(); str3 = String.instancehelper_substring(name2, String.instancehelper_lastIndexOf(name2, "$") + 1); } else str3 = name1.value(); str2 = String.instancehelper_length(str2) != 0 ? new StringBuilder().append(str2).append("::").append(str3).toString() : str3; } if (String.instancehelper_length(str1) == 0) str1 = str2; else if (String.instancehelper_length(str2) > 0) str1 = new StringBuilder().append(str2).append("::").append(str1).toString(); } return new StringBuilder().append(str1).append("*").toString(); } }