protected final String jniType(Type t) { String elmT = t.typeName(); if (t.dimension().indexOf("[]") != -1) { if (elmT.equals("boolean")) return "jbooleanArray"; else if (elmT.equals("byte")) return "jbyteArray"; else if (elmT.equals("char")) return "jcharArray"; else if (elmT.equals("short")) return "jshortArray"; else if (elmT.equals("int")) return "jintArray"; else if (elmT.equals("long")) return "jlongArray"; else if (elmT.equals("float")) return "jfloatArray"; else if (elmT.equals("double")) return "jdoubleArray"; else if ((t.dimension().indexOf("[][]") != -1) || (t.asClassDoc() != null)) return "jobjectArray"; } else { if (elmT.equals("void")) return "void"; else if (elmT.equals("boolean")) return "jboolean"; else if (elmT.equals("byte")) return "jbyte"; else if (elmT.equals("char")) return "jchar"; else if (elmT.equals("short")) return "jshort"; else if (elmT.equals("int")) return "jint"; else if (elmT.equals("long")) return "jlong"; else if (elmT.equals("float")) return "jfloat"; else if (elmT.equals("double")) return "jdouble"; else if (t.asClassDoc() != null) { if (elmT.equals("String")) return "jstring"; else if (t.asClassDoc().subclassOf(root.classNamed("java.lang.Class"))) return "jclass"; else return "jobject"; } } Util.bug("jni.unknown.type"); return null; /* dead code. */ }
protected String llniType(Type t, boolean handleize, boolean longDoubleOK) { String res = null; String elmt = t.typeName(); if (t.dimension().indexOf("[]") != -1) { if ((t.dimension().indexOf("[][]") != -1) || (t.asClassDoc() != null)) res = "IArrayOfRef"; else if (elmt.equals("boolean")) res = "IArrayOfBoolean"; else if (elmt.equals("byte")) res = "IArrayOfByte"; else if (elmt.equals("char")) res = "IArrayOfChar"; else if (elmt.equals("int")) res = "IArrayOfInt"; else if (elmt.equals("long")) res = "IArrayOfLong"; else if (elmt.equals("float")) res = "IArrayOfFloat"; else if (elmt.equals("double")) res = "IArrayOfDouble"; if (!handleize) res = "DEREFERENCED_" + res; } else { if (elmt.equals("void")) res = "void"; else if ((elmt.equals("boolean")) || (elmt.equals("byte")) || (elmt.equals("char")) || (elmt.equals("short")) || (elmt.equals("int"))) res = "java_int"; else if (elmt.equals("long")) res = longDoubleOK ? "java_long" : "val32 /* java_long */"; else if (elmt.equals("float")) res = "java_float"; else if (elmt.equals("double")) res = res = longDoubleOK ? "java_double" : "val32 /* java_double */"; else if (t.asClassDoc() != null) { res = "I" + mangleClassName(t.asClassDoc().qualifiedName()); if (!handleize) res = "DEREFERENCED_" + res; } } return res; }
/** {@inheritDoc} */ public TagletOutput getTagletOutput(Doc holder, TagletWriter writer) { Type returnType = ((MethodDoc) holder).returnType(); Tag[] tags = holder.tags(name); // Make sure we are not using @return tag on method with void return type. if (returnType.isPrimitive() && returnType.typeName().equals("void")) { if (tags.length > 0) { writer.getMsgRetriever().warning(holder.position(), "doclet.Return_tag_on_void_method"); } return null; } // Inherit @return tag if necessary. if (tags.length == 0) { DocFinder.Output inheritedDoc = DocFinder.search(new DocFinder.Input((MethodDoc) holder, this)); tags = inheritedDoc.holderTag == null ? tags : new Tag[] {inheritedDoc.holderTag}; } return tags.length > 0 ? writer.returnTagOutput(tags[0]) : null; }
protected final String jniMethodName(MethodDoc method, String cname, boolean longName) { String res = "Java_" + cname + "_" + method.name(); if (longName) { Type mType = method.returnType(); Parameter[] params = method.parameters(); Type argTypes[] = new Type[params.length]; for (int p = 0; p < params.length; p++) { argTypes[p] = params[p].type(); } res = res + "__"; for (int i = 0; i < argTypes.length; i++) { Type t = argTypes[i]; String tname = t.typeName(); TypeSignature newTypeSig = new TypeSignature(root); String sig = newTypeSig.getTypeSignature(tname); res = res + nameToIdentifier(sig); } } return res; }
protected final boolean isLongOrDouble(Type t) { String tc = t.typeName(); return (tc.equals("long") || tc.equals("double")); }